c/c++语言开发共享MPI基本示例不起作用

我试图理解以下示例的含义:

#include "mpi.h" #include  int main(int argc, char *argv[]) { int numtasks, rank, dest, source, rc, count, tag = 1; char inmsg, outmsg = 'x'; MPI_Status Stat; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &numtasks); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { dest = 1; source = 1; rc = MPI_Send(&outmsg, 1, MPI_CHAR, dest, tag, MPI_COMM_WORLD); rc = MPI_Recv(&inmsg, 1, MPI_CHAR, source, tag, MPI_COMM_WORLD, &Stat); } else if (rank == 1) { dest = 0; source = 0; rc = MPI_Recv(&inmsg, 1, MPI_CHAR, source, tag, MPI_COMM_WORLD, &Stat); rc = MPI_Send(&outmsg, 1, MPI_CHAR, dest, tag, MPI_COMM_WORLD); } rc = MPI_Get_count(&Stat, MPI_CHAR, &count); printf("Task %d: Received %d char(s) from task %d with tag %d n", rank, count, Stat.MPI_SOURCE, Stat.MPI_TAG); MPI_Finalize(); } 

基本上从这里复制: https : //computing.llnl.gov/tutorials/mpi/

编译如下:

 $ mpicc -o ./mpi_test ./mpi_test.c 

像这样运行:

 $ ./mpi_test 

给出了这个错误:

 Fatal error in MPI_Send: Invalid rank, error stack: MPI_Send(171): MPI_Send(buf=0x7fff787b4d93, count=1, MPI_CHAR, dest=1, tag=1, MPI_COMM_WORLD) failed MPI_Send(97).: Invalid rank has value 1 but must be nonnegative and less than 1 

说实话,我不明白为什么这个例子应该首先起作用。 你能请教我吗? 示例是错误的,还是预期的错误? 也许我的设置错了?

PS。 在Fedora 18 amd64上使用gcc 4.7编译

    您必须使用mpirun运行程序,如下所示:

     mpirun -np 2 mpi_test 

      以上就是c/c++开发分享MPI基本示例不起作用相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/522536.html

      (0)
      上一篇 2020年12月10日
      下一篇 2020年12月10日

      精彩推荐