Answers:
您也可以使用SSE(Streaming SIMD扩展名)指令和编译器/ proc 的内在函数(* mmintrin.h文件)“自行”完成此操作。
讲解
这是如何在汇编中使用SSE指令的示例:http :
//neilkemp.us/src/sse_tutorial/sse_tutorial.html
以下是有关如何将SSE指令与内部函数一起使用的教程:http :
//www.codeproject.com/KB/recipes/sseintro.aspx
将SSE SIMD与C ++结合使用的实用指南:http :
//sci.tuomastonteri.fi/programming/sse/printable
有用的信息
英特尔C ++内部参考(有用以获取指令列表):http :
//cache-www.intel.com/cd/00/00/34/76/347603_347603.pdf
SSE和SSE2对Intel和AMD处理器支持的增强指令集的内在支持(可用于与SSE和SIMD相关的各种信息):http :
//msdn.microsoft.com/zh-cn/library/y0dh78ez%28v= vs.71%29.aspx
有关SSE,SSE2,SSE3,SSSE3,SSE4、3DNow等的总体说明列表和信息(针对不同proc架构的SSE的不同版本):http :
//softpixel.com/~cwright/programming/simd/sse.php
如果您更喜欢线性代数框架,那么我对Eigen会有所耳闻:
http : //eigen.tuxfamily.org/
http://eigen.tuxfamily.org/index.php?title=FAQ#Vectorization(关于SIMD支持)
最后,如果您需要有关C ++ SIMD框架的更多答案,请访问StackOverflow链接。(C ++ SSE SIMD框架):https :
//stackoverflow.com/questions/4953121/c-sse-simd-framework
这些向量库/矩阵库均已优化了SSE2代码,Sony还为PowerPC编译开关提供了Altivec:
索尼的vectormath SSE2和Altivec
项目符号的Linearmath SSE2
通过一点点探索,我认为您可以使用Bullet的数学库,bullet本身是一个开源物理引擎,并且它似乎还有一个强大的数学库。这是下载链接的快捷方式http://sourceforge.net/projects/bullet/files/SIMD%20and%20amp_%20Vector%20Math%20library/simd%20math%201.02%20and%20vector%20math%201.01/simdvectormath.tgz /下载
simdvectormath
在项目符号文件中找到特定文件
还没到这里 但将会有一个boost.simd库(希望如此)。看一下这个演示文稿(上周在boostcon上提供)
https://github.com/boostcon/2011_presentations/blob/master/thu/simd.pdf
AMD拥有开源SSEPlus项目,尽管我从未使用过它,所以我无法评论其质量或适用性。