在EC2上使用混合MPI / OpenMP的奇怪性能

时间:2017-05-01 01:55:59

标签: c++ multithreading amazon-ec2 mpi

我在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个线程。

以下是其他一些细节:

  • 我正在使用C ++和boost :: mpi。
  • 我没有使用线程代码进行任何MPI调用。
  • 每次我做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.
    
  • 我在自己的电脑上看到了预期的性能模式,虽然我自己的电脑速度要慢得多。

  • 我正在使用c4.2xlarge实例。

0 个答案:

没有答案