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

BD *_*ill 17 simd intrinsics

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

编辑:特别感兴趣的是一个关于如何入门的非常基础的教程.

Pau*_*l R 14

http://software.intel.com/en-us/articles/intel-intrinsics-guide上有一个方便的Mac/Linux/Windows 英特尔内部指南 - 它涵盖了从MMX到各种SSE版本的所有英特尔SIMD内容到AVX2 .

您还可以从英特尔获得以下PDF :

  • 英特尔®64和IA-32架构软件开发人员手册,第2A卷:指令集参考,AM(253666-021)

  • 英特尔®64和IA-32架构软件开发人员手册,卷2B:指令集参考,新西兰(253667-021)

  • 英特尔®SSE4编程参考(D91561-001)

UPDATE

现在有一个在线版本的内在指南,所以你不再需要安装任何东西,它总是最新的.

  • 英特尔内部函数指南对于初学者来说很神秘且毫无用处。难道没有更多的教学和初学者友好的东西(可能有一些你好世界的例子)? (2认同)
  • @OmnipotEntity:上一个链接是您可以在 Mac/Linux/Windows 本地安装的东西。如果这完全消失了,那么答案应该简化为只讨论通过 javascript 进行搜索的在线指南。 (2认同)

rwo*_*ong 7

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

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

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

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

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