3 ms·
Any suggestions/resources on learning how to implement these kinds of optimizations?
by jnbiche 12y ago
Any suggestions/resources on learning how to implement these kinds of optimizations?
- nkurz 12y agoAgner Fog's guides and the Intel reference documents are the best resources that I've found: http://www.agner.org/optimize/ http://www.agner.org/optimize/ http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html http://www.intel.com/content/www/us/en/processors/architectu... IACA, perf, pmu-tools, and likwid are very useful tools. https://software.intel.com/en-us/articles/intel-architecture-code-analyzer https://software.intel.com/en-us/articles/intel-architecture... https://perf.wiki.kernel.org/index.php/Main_Page https://perf.wiki.kernel.org/index.php/Main_Page https://github.com/andikleen/pmu-tools https://github.com/andikleen/pmu-tools https://code.google.com/p/likwid/ https://code.google.com/p/likwid/
- dgacmu 12y agoIn addition to that great list, see also "Hacker's Delight", and several of Jon Bentley's books (Programming Pearls, Writing Efficient Programs, etc.). They're dated, but the basic ideas are eternal. The application to x86 requires combining those ideas with the specifics you get from Agner Fog's references.
- nkurz 12y agoOn sitkack's recommendation (see my comment history) I'm currently reading through Rick Booth's "Inner Loops". It's another dated classic that may be useful when used in combination with other more modern resources. Some of Booth's explanations micro-ops and superscalar dispatch are great, although it would be difficult for a beginner to differentiate what still applies today from what doesn't.