GCC矢量化语用

Jac*_*kWM 1 gcc pragma vectorization icc auto-vectorization

使用intel编译器,如果用户确认没有使用依赖关系,则仍然可以对循环进行矢量化#pragma ivdep.

我在GCC找到了一个#pragma GCC ivdep,但收到如下错误:

warning: ignoring #pragma GCC ivdep [-Wunknown-pragmas] #pragma GCC ivdep

zam*_*zam 5

GCC4.9开始,完全支持"#pragma ivdep" .

您使用哪个GCC版本?至少在2013年之前,#pragma ivdep在海湾合作委员会中没有得到官方支持.

我不确定2013年和2014年之间其他GCC4.x子版本的官方支持,虽然我已经看到在版本4.9之前有一些部分补丁用于ivdep支持.

在ICC中(你也在问题标签中提到过)#pragma ivdep很久以前就已得到支持(至少过去5年).

对于其他编译器:Microsoft从MSVS 2013开始支持"#pragma loop ivdep".从20世纪90年代开始,Cray和其他一些"老派"编译器可能会支持它,但我不确定.

最后,如果您寻找跨平台和标准化的解决方案,请查看OpenMP4.x #pragma omp simd.虽然它是不同的语义,也只有GCC4.9 + ICC/IFORT支持,但它可能在未来更有利,因为(而不是ivdep) - pragma omp simd是真正的标准,因此所有编译器供应商或多或少都必须将来支持它,并且必须支持相同的语法.