【发布时间】:2009-01-03 16:27:35
【问题描述】:
当指定某些选项并给出正确的条件时,GCC 可以自动vectorize loops。是否有其他广泛可用的编译器可以做到这一点?
【问题讨论】:
标签: gcc compiler-construction loops simd vector-processing
当指定某些选项并给出正确的条件时,GCC 可以自动vectorize loops。是否有其他广泛可用的编译器可以做到这一点?
【问题讨论】:
标签: gcc compiler-construction loops simd vector-processing
【讨论】:
llvm 也可以,vector pascal 也可以,还有一个不是免费的VectorC。这些只是我记得的一些。
【讨论】:
【讨论】:
Mono 项目是微软 Silverlight 项目的开源替代方案,它添加了使用 SIMD 指令的对象。虽然不是编译器,但 Mono CLR 是第一个原生支持 generate vector operations 的托管代码系统。
【讨论】:
IBM 的 xlc 也可以在一定程度上自动矢量化 C 和 C++。
【讨论】:
实际上,在很多情况下,GCC 过去在自动代码向量化方面比 ICC 差很多,我不知道它最近是否改进得足够,但我对此表示怀疑。
【讨论】:
VectorC 也可以这样做。您还可以指定所有目标 CPU,以便它利用不同的指令集(例如 MMX、SIMD、SIMD2...)
【讨论】:
Visual C++(我使用的是 VS2005)可以强制使用 SSE 指令。它似乎不如 Intel 的编译器,但如果有人已经在使用 VC++,那么没有理由不打开这个选项。
转到项目的属性、配置属性、C/C++、代码生成:启用增强指令集。设置“流式 SIMD 指令”或“流式 SIMD 指令 2”。您必须将浮点模型设置为快速。其他一些选项也必须更改,但编译器会告诉你。
【讨论】:
尽管这是一个旧线程,但我会添加到此列表中 - Visual Studio 11 也将具有自动矢量化功能。
【讨论】: