我注意到完全相同的代码在OpenMPI上运行的时间比英特尔多50%。我使用以下语法编译并运行:
英特尔MPI编译器:Redhat Fedora Core版本3(海德堡版),内核版本:Linux 2.6.9-1.667smp x86_64
mpiicpc -o xxxx.cpp <filename> -lmpi
OpenMPI 1.4.3 :( Centos 5.5 w / python 2.4.3,内核版本:Linux 2.6.18-194.el5 x86_64)
mpiCC xxxx.cpp -o <filename
MPI运行命令:
mpirun -np 4 <filename>
其他硬件规格
processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 3
model name : Intel(R) Xeon(TM) CPU 3.60GHz
stepping : 4
cpu MHz : 3591.062
cache size : 1024 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall lmconstant_tsc pni monitor ds_cpl est tm2
cid xtpr
bogomips : 7182.12
clflush size : 64
cache_alignment : 128
address sizes : 36 bits physical, 48 bits virtual
power management:
可以从上述信息中解读效率问题吗?编译器标志是否会影响模拟的效率。如果是这样,那么检查要包含在Open MPI中的标志可能是有用的。包含MPICH2会增加使用OpenMPI运行模拟的效率吗?
答案 0 :(得分:1)
OpenMPI是否配置为使用与Intel MPI编译器相同的编译器?您的OpenMPI可能使用gcc,这解释了差异。如果OpenMPI使用与Intel MPI编译器相同的编译器,请确保两者使用的编译器优化标志相同。