GNU C 的 SSE SSE2 和 SSE3

新手上路,请多包涵

是否有一个简单的教程让我在 GNU C++ 中快速掌握 SSE、SSE2 和 SSE3?如何在 SSE 中进行代码优化?

原文由 yoitsfrancis 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 625
2 个回答

抱歉不知道教程。

您最好的选择(恕我直言)是通过英特尔提供的“内在”功能使用 SSE 来包装(通常)单个 SSE 指令。这些是通过一组名为 *mmintrin.h 的包含文件提供的,例如 xmmintrin.h 是原始 SSE 指令集。

开始熟悉 Intel 优化 参考手册 的内容是一个好主意(参见第 4.3.1.2 节的内在函数示例),SIMD 部分是必不可少的阅读材料。指令集参考手册也很有帮助,因为每条指令的文档都包含它对应的“内在”功能。

一定要花一些时间检查编译器从内在函数生成的汇编程序( 会学到很多东西)和分析/性能测量(你会避免浪费时间 SSE-ing 代码而几乎没有回报)。

2011 年 5 月 31 日 更新: Agner Fog 的 优化 PDF 中有一些非常好的内在函数和矢量化覆盖( 谢谢),尽管它有点分散(例如第 一个 的第 12 节和 第二个 的第 5 节)。这些并不完全是教程材料(实际上有“这些手册不适合初学者”警告),但它们确实正确地将 SIMD(无论是通过 asm、内在函数还是编译器矢量化使用)视为更大优化工具箱的一部分。

2012-10-04 更新: 一篇关于 gcc 向量内在函数的 Linux Journal 小文章 值得一提。比 SSE 更通用(也包括 PPC 和 ARM 扩展)。 最后一页 有很多参考资料,这让我注意到英特尔的 “内在指南”

原文由 timday 发布,翻译遵循 CC BY-SA 4.0 许可协议

一个简单的教程?从来没听说过。

但是任何关于使用 MMX 或任何版本的 SSE 的信息都将有助于学习,无论是 GCC 还是 ICC 或 VC。

要了解 GCC 的向量扩展,请输入“info gcc”并转到节点:向量扩展。

原文由 Zan Lynx 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题