无法运行简单的mpi程序

时间:2014-07-15 12:52:54

标签: c++ mpi intel-mpi

我最近安装了英特尔的Cluster Studio,并正在测试IMPI。当我尝试使用mpirun运行一个简单的hello world程序时,这个过程需要永远,我必须自己结束它。我使用了以下代码:

#include <mpi.h>
#include <iostream>

#include <stdlib.h>

int main(int argc, char *argv[]) {
  MPI::Init(argc, argv);

  int rank = MPI::COMM_WORLD.Get_rank();
  int size = MPI::COMM_WORLD.Get_size();

  std::cout << "Returned: " << system("sleep 2") << " ";
  std::cout << "Hello World! I am " << rank << " of " << size <<
          std::endl;

  MPI::Finalize();
  return (0);
}

我用mpiicpc main.cpp -o main编译了它。 这是我添加-show选项时的输出:

icpc main.cpp -o main -I/opt/intel/impi/4.1.1.036/intel64/include -L/opt/intel/impi/4.1.1.036/intel64/lib -Xlinker --enable-new-dtags -Xlinker -rpath -Xlinker /opt/intel/impi/4.1.1.036/intel64/lib -Xlinker -rpath -Xlinker /opt/intel/mpi-rt/4.1 -lmpigc4 -lmpigf -lmpi -lmpigi -ldl -lrt -lpthread

我用mpirun -np 4 main运行了可执行文件。

其他信息:

$which mpirun 
/opt/intel/impi/4.1.1.036/intel64/bin/mpirun

$mpiicpc --version
icpc (ICC) 14.0.0 20130728

更新: 我还尝试使用g++而不是icpc进行编译。没运气。我的猜测是MPI运行时存在问题,但我找不到它。调试不起作用。我认为该计划首先没有初始化。

1 个答案:

答案 0 :(得分:0)

如果有人仍然感兴趣,我发现了什么是错的。根据这个link,与其他一些MPI实现不同,Intel MPI Library uses a Multi-Purpose Daemon (MPD) job startup mechanism. To run programs compiled with mpicc (or related) commands, you must first set up MPD daemons.所以,我按照链接中解释的步骤,执行mpdboot命令,然后瞧,它最终起作用。