回 帖 发 新 帖 刷新版面

主题:关于Intel矢量化的问题

急问高手:
我的程序是在大型机上计算的,已经在程序中使用了OpenMP做并行处理,用的是Intel fortran的编译器,在编译的时候有以下提示:remark:block was vectoried。这个提示的意思应该是对程序进行了矢量化。请问,如果大型机上一共只有有128个CPU,我已经开了128个线程并行计算,就是说CPU的使用率已经100%,如果此时程序还vectoried的话,会不会反而比不vectoried慢呢?

回复列表 (共9个回复)

沙发

那个remark是自动SIMD向量化,和并行可以同时使用
openmp是基于线程的,向量化是基于cpu指令的

板凳

谢谢楼上,我的个人电脑是4个CPU,装的是Intel Fortran10.0.025的编译器,编译的时候没有remark:block was vectoried的提示,大型机上装的是Intel Fortran 10.1.018,编译的时候出现了这个提示,如果大型机上也开4个CPU,运算的速度反而比个人电脑要慢,而且还慢了不少,请问是因为什么慢的呢?实在是想不明白?

3 楼

openmp一般不会做那么底层的并行的. SIMD向量化不应该影响到你的并行程序. 况且SIMD相当于是硬件并行, 好处不言而喻.
至于比你的PC慢, 请问你的PC配置是什么, 你的"大型机"配置是什么? 编译的时候用了什么优化?

4 楼

谢谢楼上,我的PC机是Intel(R) Core(TM) 2 Quad CPU Q9550 @2.83GHz,1.95G内存;编译器是Intel 10.0.025,编译模式是release。 大型机是天津最近新组装好的“天河一号”TH-1小系统,它的用户手册写的是:每个计算结点都是一个多核SMP服务器,每个计算结点配置是是两个Intel Xeon5450四核CPU, 运行频率3.0GHz,32G主存 。编译时用的是Linux下的-O2级别优化,这个应该是和PC机里面visual studio环境里面release的默认优化级别是一样的。
在studio里面有Debug和release两个模式,在Linux下ifort后面加什么编译指令可以和release等价呢?以前我用Fortran做过的并行只是在个人电脑上做的,用的都是Windows下的visual studio环境,对Linux不熟,也没有大型机的并行计算经验,如果楼上解释环境变量设置,编译指令什么的,麻烦说详细点,呵呵,万分感谢。
抓狂中……急找高手求助

5 楼

[quote]谢谢楼上,我的PC机是Intel(R) Core(TM) 2 Quad CPU Q9550 @2.83GHz,1.95G内存;编译器是Intel 10.0.025,编译模式是release。 大型机是天津最近新组装好的“天河一号”TH-1小系统,它的用户手册写的是:每个计算结点都是一个多核SMP服务器,每个计算结点配置是是两个Intel Xeon5450四核CPU, 运行频率3.0GHz,32G主存 。编译时用的是Linux下的-O2级别优化,这个应该是和PC机里面visual studio环境里面release的默认优化级别是一样的。
在studio里面有Debug和release两个模式,在Linux下ifort后面加什么编译指令可以和release等价呢?以前我用Fortran做过的并行只是在个人电脑上做的,用的都是Windows下的visual studio环境,对Linux不熟,也没有大型机的并行计算经验,如果楼上解释环境变量设置,编译指令什么的,麻烦说详细点,呵呵,万分感谢。
抓狂中……急找高手求助[/quote]


ifort -O3 -fast 
试试

6 楼

勋哥, ifort编译似乎 -fast已经包含-O3了. 楼主可以试试这两个中的一个.
ivf10 我很久没用了, 编译选项跟现在的ivf11有所区别, 详细你可以看看 
ifort --help
的说明, 或者上intel主页找找文档.
还有, 编译的时候加了 -openmp没有? 控制4个线程需要在代码里控制或者改环境变量的.

BTW: Xeon5450好像也有超线程的...

7 楼

-openmp肯定是加了,要不没法并行啊,-O3激进模式的优化也试过了,没用,并行速度在大型机上就是上不去,抓狂啊

8 楼

环境都不一样 速度不一样很正常啊 ivf在VS里还默认一群选项呢 开关都不一样 速度当然就不一样了

/fp:fast /arch:SSE3 /QaxSSE3(Windows开关)什么之类的自己加加

用性能剖析器衡量下时间,看看哪里执行慢,也有可能是openmp的启动分配线程开销占了大部分时间呢,如果是开销大的话,那么请降低线程数量

9 楼

我记得ivf11是需要自己加SSE编译选项的, ivf10不熟悉.
不如你
ifort --help >> iforthelp.txt
看看里面的内容再决定用什么开关吧.

我来回复

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