【发布时间】:2011-10-04 02:12:27
【问题描述】:
我注意到在 OpenMPI 上运行完全相同的代码所花费的时间比 Intel 多 50%。我使用如下语法编译运行:
Intel MPI 编译器:Redhat Fedora Core release 3 (Heidelberg),内核版本: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 运行模拟的效率吗?
【问题讨论】:
-
什么是串口速度差?
-
使用 intel 编译器的串行比 intel mpi 版本多花费 30% 的时间。
-
@Anycorn: gcc 在串口上花费的时间是 intel icpc 编译器的 3 倍。
-
您提到 OpenMPI 库的运行时间比英特尔 MPI 长 50%。每次运行的绝对时间是多少?在运行进入 ~1000 秒范围之前,时间百分比差异不一定有意义。例如,10 秒和 15 秒是 50% 的变化……但最好将其视为“5 秒”。
-
测试用例看起来是在单台机器上运行的。 非常很难用其他任何东西击败在英特尔芯片上运行的英特尔编译器/mpi。特别是,英特尔做了很多其他 MPI 实现可以访问的 memcpy 优化。此外,应用程序进行了哪些 MPI 调用?英特尔 MPI 可能在 MPI 调用、消息大小和共享内存接口方面比 OpenMPI 优化得更好。
标签: compiler-construction performance mpi parallel-processing