0
我目前使用icc(版本13.1.0.146)来编译在英特尔至强融核协处理器上以纯模式运行的C程序。如何使英特尔C编译器(icc)矢量化基本块?
考虑以下两个代码片段:
// fragment 1
array[pos] += 1;
array[pos + 1] += 1;
array[pos + 2] += 1;
array[pos + 3] += 1;
// fragment 2
for (int i = 0; i < 4; ++i)
array[i] += 1;
不幸的是,只在循环自动量化。但是,如果我为x86平台编译,icc也会将“展开”版本向量化。
当编译Xeon Phi时,是否有办法告诉icc向量化基本块?
任何帮助表示赞赏。提前致谢!
我完全理解,如果编译器通常决定不将矢量化上面描述的代码由于工作量低。但是,我不明白为什么循环(与“展开”版本完全相同!)是矢量化的,而展开版本不是。但是,没关系,该项目现在已经完成;) – pkreutzer