编译器无法向量化内循环

时间:2014-11-17 14:00:08

标签: vector fortran vectorization intel-fortran

我有一个非常简单的fortran循环,它将数组的一些元素设置为0.0,如下所示:

!dir$ loop count min(128)
arr(1:max(start,someVar)) = 0.0

当我使用 ifort 编译文件时,矢量化报告显示:

file.f90(60): (col. 5) remark: LOOP WAS VECTORIZED
file.f90(60): (col. 5) remark: loop was not vectorized: not inner loop

我在循环之前尝试使用!dir$ simd,并进行了矢量化。但我的问题是:为什么它没有矢量化,或转换为memcpymemset?这显然是一个内循环。

1 个答案:

答案 0 :(得分:0)

升级到ifort 15后,优化报告表明该行实际上已转换为memset。我认为新的memset代码循环遍历数组,一次是memset' -ing chunks。