除了gcc以外,还有哪些编译器可以对代码进行矢量化?

4

当指定特定选项并给出正确条件时,GCC可以自动向量化循环。是否有其他广泛可用的编译器也可以做到这一点?

9个回答

8

ICC

的翻译是:

{{链接1:ICC}}


1
ICC对Intel CPU的优化非常出色。 - orip

6

LLVM也可以做到这一点,向量Pascal也可以,还有一个不免费的VectorC。这些只是我记得的一些。


VectorC一针见血。Vector Pascal很有趣,因为它读起来像Pascal,但受到APL的影响;也就是说,它本身就是一种矢量处理语言。然而,LLVM项目似乎没有在任何地方提到SIMD输出? - casualcoder
好的,终于找到了有关LLVM SSE2代码生成的参考资料!非常不错!不确定为什么网站上没有更清楚地提到它。 - casualcoder
LLVM仍然是一个“新生力量”项目,但似乎非常有前途。 - Paulo Lopes
1
LLVM没有自动向量化,只有手动的SIMD支持。 - alex strange

2

2

Mono项目是微软Silverlight项目的开源替代品,它已经添加了使用SIMD指令的对象。虽然不是编译器,但Mono CLR是第一个本地生成向量操作的托管代码系统。


2

IBM的xlc编译器也可以在一定程度上自动将C和C++代码向量化。


1

VectorC也可以做到这一点。您还可以指定所有目标CPU,以便利用不同的指令集(例如MMX,SIMD,SIMD2等)


1

虽然这是一个旧的帖子,但我想要添加到这个列表中 - Visual Studio 11也将具有自动向量化功能。


1

实际上,在许多情况下,GCC在自动代码向量化方面要比ICC差得多,我不知道它最近是否有足够的改进,但我怀疑。


1

Visual C++(我使用的是VS2005)可以强制使用SSE指令。它似乎不如英特尔的编译器好,但如果有人已经在使用VC++,那么没有理由不打开此选项。

转到项目属性,配置属性,C/C++,代码生成:启用增强指令集。设置“流式SIMD指令”或“流式SIMD指令2”。您将需要将浮点模型设置为快速。还必须更改一些其他选项,但编译器会告诉您相关信息。


1
启用SSE并不等同于矢量化。 - LiraNuna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接