回 帖 发 新 帖 刷新版面

主题:还是关于Intel Fortran编译器的矢量化

在Lunix环境下使用Intel Fortran编译器,根据我对矢量化的了解,!DEC$ IVDEP和!DEC$ NOVECTOR两个语句是矢量化开关的语句。我在程序中加入了语句!DEC$ IVDEP想让我的某个do循环矢量化,但编译的时候就是矢量化不了。开始的时候以为是编译器不认这句话,后来试了一下在某个被自动矢量化的地方加入语句!DEC$ NOVECTOR,结果发现语句!DEC$ NOVECTOR是好使的。
想请问,要矢量化得满足什么条件?上网查了下,说的都不详细,有懂的麻烦说详细点?谢谢啦,还有,如果编译器没有自动矢量化的地方是不是自己不要随便矢量化?

回复列表 (共17个回复)

11 楼

最近发布的 Intel Fortran 12.0 对这个有改进,并且有 Getting Started Tutorial --> Using Auto Vectorization 说明最基本的矢量化问题,您可以参考一下。

12 楼

看来对矢量化有兴趣的朋友还是不少的。
尤其是今年intel sandyBridge上市,矢量宽度将达到256位,也就是8个单精度的simd了。

这个帖子里的朋友们说的对,碰运气是不行的,应查看编译器在矢量化过程中的report, 

编译器并不是总能凑足4个数据一起操作,simd跟其他并行模式一样,会受到数据之间的依赖性的限制。

为什么能矢量化,为什么不能矢量化,编译器会给出原因,程序员可针对性进行改善。

编写出可以矢量化的代码,编写出指令级并行度高的代码,编写出可以自动并行化成功的代码,等于是像一个intel MKL库性能优化人员那样编写出“为编译器优化”的代码,坚持不懈地积累经验才行。

13 楼

我还是停留在尽量筹出一些矩阵操作来让他自动实现SIMD. 要仔细去做还是要花一些时间.
asymptotic兄, 想问问, intel编译器那个Using Auto Vectorization 我怎么没找到? 我装了"Intel Parallel Studio XE 2011"但没找到这个文件. 请问文件所在文件夹是什么?

14 楼

[quote]我还是停留在尽量筹出一些矩阵操作来让他自动实现SIMD. 要仔细去做还是要花一些时间.
asymptotic兄, 想问问, intel编译器那个Using Auto Vectorization 我怎么没找到? 我装了"Intel Parallel Studio XE 2011"但没找到这个文件. 请问文件所在文件夹是什么?[/quote]

...Guides - Creating Parallel Application - Automatic Vectorization

15 楼

略微看了下 12.0的文档比11写的好 11写的杂而不系统

16 楼

在parallel xe的samples里面 有aotu-vector的例子

写的很明确了

17 楼

楼主您好,我现在遇到了和您一样的问题,请问您现在已经解决了这个问题吗?应该怎么解决呢?希望您不吝赐教,非常感谢!

我来回复

您尚未登录,请登录后再回复。点此登录或注册