我在EC2实例上运行混合MPI / OpenMP时遇到问题。也就是说,我无法理解我所看到的表现。
我的应用程序基本上可以将计算作业分成n个部分。出于问题的目的,让我们说4个部分。目前,如果我将4个部分全部使用MPI或全部使用线程(openMP),我希望看到几乎相同的性能。
以下是我获得的各种MPI / OpenMP配置和命令行的性能:
使用OpenMP完成所有4个部分。这令人困惑。如果我跑
mpiexec -np 1 myapp
大约需要20秒。如果我做
./myapp
大约需要10秒钟(???)。如果我在一个单独的过程中运行每个部分,比如
mpiexec -np 4 myapp
大约需要5秒钟。
我相当肯定我正在设置正确的线程数,这样当我用MPI运行四个进程时,每个进程只有一个线程,但是在一个进程中运行,有4个线程。
以下是其他一些细节:
每次我做mpiexec,我都会看到这样的事情:
A high-performance Open MPI point-to-point messaging module
was unable to find any relevant network interfaces:
Another transport will be used instead, although this may result in
lower performance.
我在自己的电脑上看到了预期的性能模式,虽然我自己的电脑速度要慢得多。