除gcc之外的哪些编译器可以矢量化代码?

时间:2009-01-03 16:27:36

标签: gcc compiler-construction loops simd vector-processing

当指定某些选项并给出正确的条件时,GCC可以自动vectorize loops。是否有广泛可用的其他编译器可以做同样的事情?

9 个答案:

答案 0 :(得分:8)

ICC

答案 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也会有自动矢量化。