Compiler construction OpenMPI 1.4.3与英特尔MPI效率问题

Compiler construction OpenMPI 1.4.3与英特尔MPI效率问题,compiler-construction,performance,mpi,parallel-processing,Compiler Construction,Performance,Mpi,Parallel Processing,我注意到,在OpenMPI上运行完全相同的代码比在Intel上运行要多花50%的时间。我使用以下语法编译和运行: 英特尔MPI编译器:Redhat Fedora Core第3版(海德堡),内核版本:Linux 2.6.9-1.667smp x86_64 mpiicpc -o xxxx.cpp <filename> -lmpi mpiCC xxxx.cpp -o <filename 能否从上述信息中解读效率问题?编译器标志对模拟的效率有影响吗。如果是的话,哪些标志可能对检

我注意到,在OpenMPI上运行完全相同的代码比在Intel上运行要多花50%的时间。我使用以下语法编译和运行:

英特尔MPI编译器:Redhat Fedora Core第3版(海德堡),内核版本:Linux 2.6.9-1.667smp x86_64

 mpiicpc -o xxxx.cpp <filename> -lmpi
 mpiCC xxxx.cpp -o <filename

能否从上述信息中解读效率问题?编译器标志对模拟的效率有影响吗。如果是的话,哪些标志可能对检查开放MPI是否包含有用。包含MPICH2会提高使用OpenMPI运行模拟的效率吗?

OpenMPI是否配置为使用与“英特尔MPI编译器”相同的编译器?您的OpenMPI可能使用gcc,这解释了差异。如果OpenMPI使用与英特尔MPI编译器相同的编译器,确保两者使用的编译器优化标志相同。

什么是串行速度差?使用“英特尔编译器”的“串行”比“英特尔mpi”版本花费的时间多30%。@Anycorn:gcc比使用“串行”的“英特尔icpc”编译器花费的时间长3倍。您提到,OpenMPI库比“英特尔mpi”运行的时间长50%。每次跑步的绝对时间是多少?在跑动达到~1000秒范围之前,时间上的百分比差异不一定有意义。例如,10秒和15秒是50%的变化…但是最好被认为是“5秒”。测试用例看起来是在一台机器上运行的。在英特尔芯片上运行的英特尔编译器/mpi很难与其他任何东西相比。特别是,Intel做了很多memcpy优化,其他MPI实现都可以访问这些优化。另外,应用程序进行了哪些MPI调用?在MPI调用、消息大小和共享内存接口方面,“英特尔MPI”可能比“OpenMPI”优化得更好。@Powerrox:正如我向Anycorn指出的,gcc编译器运行串行代码的时间是“英特尔icpc编译器”的3倍。说到MPI,Intel MPI构建在Redhat Fedora Core release 3操作系统上,而OpenMPI则使用Centos 5.5操作系统。另外,在“英特尔MPI编译器”中,我使用了MPICPC-o xxx.cpp-lmpi,而在使用OpenMPI时,我使用了mpiCC-o file.cc。我猜这两者之间唯一共同的优化标志是“-o”。我没有在OpenMPI中包含-lmpi。我的回答有意义吗。我仍在努力解决这个问题,因为我们希望转移到OMPI..@Ashmohan,gcc和icpc或其他任何运行时的差异是正常的。您必须深入挖掘,以确保两个编译器使用相同级别的优化等。您还必须确保两个编译器完全支持您用于执行代码的体系结构。我不认为这是个问题,但这是每个人都必须经历的练习。@Ashmohan,你用来编译MPI代码的编译器只是包装器,安装并调用实际的编译器。包装器本身会将某些优化标志传递给编译器。我很难在评论中描述细节。我认为你对这个(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: