当指定某些选项并给出正确的条件时,GCC可以自动vectorize loops。是否有广泛可用的其他编译器可以做同样的事情?
答案 0 :(得分:8)
答案 1 :(得分:6)
llvm也可以执行此操作vector pascal也可以执行VectorC {{3}}。这些只是我记得的一些。
答案 2 :(得分:2)
答案 3 :(得分:2)
Mono项目是微软Silverlight项目的开源替代方案,它添加了使用SIMD指令的对象。虽然不是编译器,但Mono CLR是本地第一个generate vector operations的托管代码系统。
答案 4 :(得分:2)
IBM的xlc也可以在某种程度上自动矢量化C和C ++。
答案 5 :(得分:1)
实际上,在很多情况下,GCC曾经比ICC更糟糕的自动代码矢量化,我不知道它最近是否有足够的改进,但我对此表示怀疑。
答案 6 :(得分:1)
VectorC也可以这样做。您还可以指定所有目标CPU,以便它利用不同的指令集(例如MMX,SIMD,SIMD2,......)
答案 7 :(得分:1)
Visual C ++(我正在使用VS2005)可以强制使用SSE指令。它似乎不如英特尔的编译器好,但如果某人已经使用VC ++,则没有理由不启用此选项。
转到项目属性,配置属性,C / C ++,代码生成:启用增强指令集。设置“Streaming SIMD Instructios”或“Streaming SIMD Instructios 2”。您必须将浮点模型设置为快速。其他一些选项也必须改变,但编译器会告诉你这个。
答案 8 :(得分:1)
尽管这是一个旧线程,但我会添加到此列表中 - Visual Studio 11也会有自动矢量化。