有没有一个简单的教程可以帮助我快速掌握 GNU C++ 中的 SSE、SSE2 和 SSE3?如何在SSE中进行代码优化?
抱歉不知道有教程。
您最好的选择(恕我直言)是通过英特尔提供的“内在”函数来使用 SSE 来包装(通常)单个 SSE 指令。
这些可以通过一组名为 *mmintrin.h 的包含文件来获得,例如 xmmintrin.h 是原始的 SSE 指令集。
开始熟悉Intel优化的内容参考手册 https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf是一个好主意(有关内在函数的示例,请参阅第 4.3.1.2 节),SIMD 部分是必读内容。指令集参考手册也非常有用,因为每个指令的文档都包含它对应的“内在”函数。
Do花一些时间从内在函数检查编译器生成的汇编程序(您将学到很多东西)和分析/性能测量(您将避免浪费时间 SSE 代码而几乎没有回报)。
2011年5月31日更新:Agner Fog 的书中对内在函数和矢量化有一些非常好的介绍优化 PDF http://agner.org/optimize/ (thanks https://stackoverflow.com/questions/695222/code-optimization-bibles/695293#695293)虽然它有点分散(例如第 12 节第一 http://agner.org/optimize/optimizing_cpp.pdf和第 5 条第二个 http://agner.org/optimize/optimizing_assembly.pdf)。这些并不完全是教程材料(事实上,有一个“这些手册不适合初学者”的警告),但它们确实正确地将 SIMD(无论是通过 asm、内在函数还是编译器矢量化使用)视为更大的优化工具箱的一部分。
2012年10月4日更新: A 不错的 Linux 期刊小文章 http://www.linuxjournal.com/content/introduction-gcc-compiler-intrinsics-vector-processing这里值得一提的是 gcc 向量内在函数。比 SSE 更通用(也涵盖 PPC 和 ARM 扩展)。网上有很多很好的参考资料最后一页 http://www.linuxjournal.com/content/introduction-gcc-compiler-intrinsics-vector-processing?page=0,4,这引起了我对英特尔的关注《内在指南》 https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)