SIMD内在函数的参考手册/教程?

时间:2011-07-28 11:03:09

标签: simd intrinsics

我正在研究使用它们来提高某些代码的性能,但是对于* mmintrin.h头文件中定义的函数来说,很难找到好的文档,有人可以向我提供有关这些函数的详细信息吗?

编辑:对如何入门的非常基础的教程特别感兴趣。

2 个答案:

答案 0 :(得分:13)

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,因此您不再需要安装任何内容,而且它始终是最新的。

答案 1 :(得分:6)

这是我发现的MMX / SSE编程的最佳介绍。 (我已经将SSE2编程了5年,我仍然觉得这个教程在概念上最清晰。)

http://www.tommesani.com/Docs.html

这不是完整的说明清单;所以,一旦你准备好了解更多信息,请开始阅读@PaulR建议的英特尔内在指南。

要记住的一件重要事情是,MMX / SSE在数据移动(洗牌或任意排列或单个元素的变化)方面往往会受到严重限制。这是CPU芯片设计的限制。 Scatter-gather说明仅在几年前添加,甚至可能无法在客户的计算机上使用。

对于MMX / SSE,存在大量的矢量化技巧,类似于http://www.hackersdelight.org/规定利用位并行操作的技巧。