【问题标题】:Compiler unable to vectorize inner loop编译器无法矢量化内循环
【发布时间】:2014-11-17 14:00:08
【问题描述】:

我有一个非常简单的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?这显然是一个内部循环。

【问题讨论】:

    标签: vector fortran vectorization intel-fortran


    【解决方案1】:

    升级到ifort 15后,优化报告说该行其实是转换成memset的。我认为新的 memset 代码在数组上循环,一次“memset”-ing 块。

    【讨论】:

      猜你喜欢
      • 2013-11-15
      • 2018-08-17
      • 2012-09-24
      • 2020-10-26
      • 2014-01-31
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      • 2021-03-04
      相关资源
      最近更新 更多