将C转换为MPI API C程序

时间:2011-03-22 21:43:44

标签: mpi

我们如何使用MPI API将带有用户定义函数的c程序转换为并行程序。演示将更有用

谢谢。 哈

1 个答案:

答案 0 :(得分:1)

这取决于您尝试并行执行的内容以及您的要求。

有很多很好的教程可供选择。

这是一个简单的hello world程序:

#include "stdio.h"
#include "mpi.h"
int main(int argc, char *argv[])
{
  int id, nprocs;
  MPI_Init(&argc, &argv);
  MPI_Comm_rank(MPI_COMM_WORLD, &id);
  MPI_Comm_size(MPI_COMM_WORLD, &nprocs);

  printf("Hello World from proc %d out of %d!\n", id, nprocs);

  MPI_Finalize();

  return 0;
}

编译如下

usr@xbc:~> mpicc -Wall -Werror -o mpihello mpihello.c

在两台独立的计算机上运行

usr@xbc:~> mpirun_rsh  -ssh -np 2 node0 node1 /home/xbc/mpihello

usr@xbc:~> mpirun_rsh  -hostfile hostlist -n 2 /home/xbc/mpihello

您的hostlist文件将包含node0node

两个条目

在与2个进程相同的计算机上运行

usr@xbc:~> mpirun_rsh  -ssh -np 2 node0:1 /home/xbc/mpihello

usr@xbc:~> mpirun_rsh  -hostfile hostlist -n 2 /home/xbc/mpihello

您的hostlist文件中有1个条目为node0:1

输出put将是一个Hello world,其中Rank为01来自2台机器或2个进程,具体取决于您运行它的方式。

现在,您可以根据您的要求,通过IB / InfiniBand上的IP / IP或基于IP的MPI(InfiniBand)或基于IB的MPI运行MPI或以许多其他方式运行MPI。

您必须相应地配置mpi编译和安装。