回 帖 发 新 帖 刷新版面

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

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

回复列表 (共17个回复)

沙发

我以前的文章
http://www.cnblogs.com/xunxun1982/archive/2010/05/12/1734000.html
你可以参考下

板凳

dongyuanxun大侠,我早已经看过这篇帖子了,是百度出来的,我就是加入那个要程序向量化的语句!DEC$ IVDEP,但编译的时候一点反应也没有,还是没有被向量化,真是愁死我了。我想向量化的那段在程序运行的时候占的比重特别大,我能想到的对它优化的方法都优化完了。因为这段程序是对数组操作的,数组很大,计算就是简单的相加,我觉得应该是很适合向量化的。您能给我个详细点的文档吗?我好好研究研究。
着急啊,必须得让程序快起来。

3 楼

自动向量化如果符合规则是不需要写!DEC$ IVDEP的
只有那些很模糊的数据依赖才可以写!DEC$ IVDEP

使用/Qvec-report3 来显示那段代码是否向量化和是否存在数据依赖

如果是确实的数据依赖是不可能被向量化的

4 楼

使用/Qvec-report3 来显示那段代码是否向量化和是否存在数据依赖,具体怎么操作呢?能麻烦您说得详细点吗?
还有,我确定我加!DEC$ IVDEP后的循环里面没有依赖关系啊,那为什么就向量化不了呢?
您有详细点的向量化的资料吗?能给我看看嘛?哈

5 楼

windows下直接加
ifort /O3 /Qvec-report3  main.f90 
向量化报告会显示在屏幕上
可以定向到文件 ifort /O3 /Qvec-report3  main.f90 > out.txt 2>&1

另外,向量器只能向量化最内层的循环,其他无法向量化,而且对于编译期间无法确定循环次数的循环也无法向量化

6 楼

windows下直接加
ifort /O3 /Qvec-report3  main.f90 
向量化报告会显示在屏幕上
可以定向到文件 ifort /O3 /Qvec-report3  main.f90 > out.txt 2>&1
大侠,加在哪……怎么加……,这段话我听不懂啊,不好意思,调程序我还行,设环境变量什么的我比较白,不好意思啦

7 楼

CMD命令行啊
VS IDE是显示不出来的

那个帖子我不是告诉过你么,VS IDE里会先编译(/c)再链接的,而/c使用时,/Qvec-report3无效
不只vec报告,所有的监测报告都无效

8 楼

您知道哪里能下载Intel编译器手册的吗?我自己研究研究吧,谢谢了

9 楼

ivf安装后就有编译器参考文档啊 
在安装目录里搜索main_for.chm

10 楼

谢谢,找到了,哈

我来回复

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