除了 gcc 还都有哪些编译器可以向量化代码?

Posted

技术标签:

【中文标题】除了 gcc 还都有哪些编译器可以向量化代码?【英文标题】:What compilers besides gcc can vectorize code?除了 gcc 还有哪些编译器可以向量化代码? 【发布时间】:2009-01-03 16:27:35 【问题描述】:

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

【问题讨论】:

【参考方案1】:

ICC

【讨论】:

ICC 对 Intel CPU 的优化非常出色。【参考方案2】:

llvm 也可以,vector pascal 也可以,还有一个不是免费的VectorC。这些只是我记得的一些。

【讨论】:

VectorC 一针见血。 Vector Pascal 很有趣,它读起来像 Pascal,但受 APL 的影响;也就是说,它本身就是一种向量处理语言。但是,LLVM 项目似乎没有在任何地方提及 SIMD 输出? OK,终于找到了LLVM的SSE2代码生成的参考!好东西!不知道为什么网站上没有更清楚地提及它。 LLVM 仍然是一个“新类型”项目,但看起来很有前途。 LLVM 没有自动矢量化,只有手动 SIMD 支持。【参考方案3】:

还有PGI's compilers。

【讨论】:

【参考方案4】:

Mono 项目是微软 Silverlight 项目的开源替代方案,它添加了使用 SIMD 指令的对象。虽然不是编译器,但 Mono CLR 是第一个原生支持 generate vector operations 的托管代码系统。

【讨论】:

【参考方案5】:

IBM 的 xlc 也可以在一定程度上自动矢量化 C 和 C++。

【讨论】:

【参考方案6】:

实际上,在很多情况下,GCC 过去在自动代码向量化方面比 ICC 差很多,我不知道它最近是否改进得足够,但我对此表示怀疑。

【讨论】:

【参考方案7】:

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

【讨论】:

【参考方案8】:

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

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

【讨论】:

启用 SSE 与矢量化不同。【参考方案9】:

尽管这是一个旧线程,但我会添加到此列表中 - Visual Studio 11 也将具有自动矢量化功能。

【讨论】:

以上是关于除了 gcc 还都有哪些编译器可以向量化代码?的主要内容,如果未能解决你的问题,请参考以下文章

web请求除了get和post还都有哪些方式?

除了 React,还都有哪些 JS 框架允许实时编辑?

在 C 和 C++ 中对齐堆数组以简化编译器 (GCC) 向量化

Python中除了matplotlib外还都有哪些数据可视化的库

除了 pandas 和 dask 之外,还都有哪些更快的读取大数据集和应用行明智操作的方法?

Java 中除了 MDB 之外还都有哪些其他可能性来对消息消费者进行编程?