visual-c++ - GCC 和 MSVC 中是否存在 "simd reduction(:)"?

标签 visual-c++ gcc vectorization simd icc

simd pragma 可与 icc 编译器一起使用以执行归约运算符:

#pragma simd
#pragma simd reduction(+:acc)
#pragma ivdep
for(int i( 0 ); i < N; ++i )
{
  acc += x[i];
}

在 msvc 或/和 gcc 中是否有任何等效的解决方案?

引用(第 28 页):http://d3f8ykwhia686p.cloudfront.net/1live/intel/CompilerAutovectorizationGuide.pdf

最佳答案

对于 Visual Studio 2012: 使用选项 /O1/O2/GL,报告矢量化使用 /Qvec-report:(1/2)

int s = 0; 
for ( int i = 0; i < 1000; ++i ) 
{ 
s += A[i]; // vectorizable 
}

在缩减“float”或“double”类型的情况下,向量化要求抛出 /fp:fast 开关.这是因为向量化缩减操作取决于“浮点重新关联”。只有在抛出 /fp:fast

时才允许重新关联

Ref(associated doc;p12) http://blogs.msdn.com/b/nativeconcurrency/archive/2012/07/10/auto-vectorizer-in-visual-studio-11-cookbook.aspx

关于visual-c++ - GCC 和 MSVC 中是否存在 "simd reduction(:)"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17602290/

相关文章:

c++ - Visual C++ constexpr提示

c++ - Microsoft VS C++ 编译器是否存在 Bug Initialize a reference from a temporary object

c++ - cc1.exe 系统错误 - 缺少 libwinpthread-1.dll - 但它不是

c++ - 从 VS 到 GCC 的 C/C++ 宏扩展产生错误

python - 是否可以在此代码逻辑上使用应用函数或向量化?

r - 向矩阵的所有行添加一个向量

python - 尝试从 C 调用 Python

c++ - 函数声明 __declspec(naked) 如何存储局部变量?

gcc - CLion + MinGW 测试 CMake 运行完成但出现错误

performance - R 中的向量化矩阵运算