【发布时间】:2011-10-15 00:48:48
【问题描述】:
我正在研究使用这些来提高某些代码的性能,但是对于 *mmintrin.h 标头中定义的函数似乎很难找到好的文档,有人可以为我提供指向这些好的信息的指针吗?
编辑:对如何开始的非常基本的教程特别感兴趣。
【问题讨论】:
-
?关门了??为什么???这个问题不相关吗……答案(给出的2个)没有帮助吗……
标签: simd intrinsics
我正在研究使用这些来提高某些代码的性能,但是对于 *mmintrin.h 标头中定义的函数似乎很难找到好的文档,有人可以为我提供指向这些好的信息的指针吗?
编辑:对如何开始的非常基本的教程特别感兴趣。
【问题讨论】:
标签: simd intrinsics
http://software.intel.com/en-us/articles/intel-intrinsics-guide 有一个方便的英特尔内部指南,适用于 Mac/Linux/Windows - 它涵盖了从 MMX 到各种风格的 SSE 到 AVX2 的所有英特尔 SIMD 内容等。
您还可以从Intel获取以下PDF:
英特尔® 64 和 IA-32 架构软件开发人员手册,第 2A 卷:指令集参考,A-M (253666-021)
英特尔® 64 和 IA-32 架构软件开发人员手册,第 2B 卷:指令集参考,N-Z (253667-021)
英特尔® SSE4 编程参考 (D91561-001)
现在有一个online version of the intrinsics guide,因此您不再需要安装任何东西,而且它始终是最新的。
【讨论】:
这是我找到的关于 MMX/SSE 编程的最佳介绍。 (我已经为 SSE2 编程了 5 年,我仍然觉得这个教程在概念上是最清晰的。)
http://www.tommesani.com/Docs.html
这不是完整的说明列表;因此,一旦您准备好了解更多信息,请按照 @PaulR 的建议开始阅读英特尔内在函数指南。
要记住的重要一点是,MMX/SSE 在数据移动(随机排列或任意排列,或单个元素的更改)方面往往受到严格限制。这是 CPU 芯片设计的限制。分散收集说明仅在几年前添加,甚至可能在您客户的计算机上不可用。
MMX/SSE 有大量矢量化技巧,类似于 http://www.hackersdelight.org/ 规定的利用位并行操作的技巧。
【讨论】: