我有一个非常简单的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
,并进行了矢量化。但我的问题是:为什么它没有矢量化,或转换为memcpy
或memset
?这显然是一个内循环。
答案 0 :(得分:0)
升级到ifort 15后,优化报告表明该行实际上已转换为memset。我认为新的memset代码循环遍历数组,一次是memset' -ing chunks。