C 仅在一个进程中执行的MPI程序,针对多个进程的请求

C 仅在一个进程中执行的MPI程序,针对多个进程的请求,c,parallel-processing,mpi,C,Parallel Processing,Mpi,我是一个试图学习MPI的初学者。我已尝试运行从internet下载的以下程序: #include <stdio.h> #include <mpi.h> int main (argc, argv) int argc; char *argv[]; { int rank, size; MPI_Init (&argc, &argv); /* starts MPI */

我是一个试图学习MPI的初学者。我已尝试运行从internet下载的以下程序:

    #include <stdio.h>
    #include <mpi.h>

    int main (argc, argv)
         int argc;
         char *argv[];
    {
      int rank, size;

      MPI_Init (&argc, &argv);  /* starts MPI */
      MPI_Comm_rank (MPI_COMM_WORLD, &rank);    /* get current process id */
      MPI_Comm_size (MPI_COMM_WORLD, &size);    /* get number of processes */
      printf( "Hello world from process %d of %d\n", rank, size );
      MPI_Finalize();
      return 0;
    }
结果如下:

Hello world from process 0 of 1
Hello world from process 0 of 1
Hello world from process 0 of 1
Hello world from process 0 of 1
我的问题是,为什么输出只生成了一个进程而没有按请求生成4个进程?

当mpicc和mpirun不是来自同一个MPI实现时,会出现此问题。 您可以卸载openmpi和mpich,并且只安装mpich库。 在终端中运行这些命令。 sudo apt get remove-自动删除openmpi文件箱 sudo apt get remove-自动删除mpich
sudo apt get install mpich

以下解决了我的问题:

sudo apt-get remove --auto-remove openmpi-bin
sudo apt-get remove --auto-remove mpich
sudo apt-get install mpich
sudo apt install lam-runtime     
sudo apt install mpich           
sudo apt install openmpi-bin     
sudo apt install slurm-wlm-torque

你们有多少核?我成功地在我的i7,8核机器上运行了它,并得到了预期的输出。甚至我在其他电脑上也尝试了这一点,并获得了预期的结果。但在我的电脑中,问题依然存在。pc的nproc值为12。我猜生成过程与核心硬件无关。可能重复感谢您的回复。我试图跟踪讨论的链接,但哪个mpicc和哪个mpirun返回了计算机上的位置。因此,我真的无法断定他们是否来自同一版本。我还有别的办法吗?
sudo apt-get remove --auto-remove openmpi-bin
sudo apt-get remove --auto-remove mpich
sudo apt-get install mpich
sudo apt install lam-runtime     
sudo apt install mpich           
sudo apt install openmpi-bin     
sudo apt install slurm-wlm-torque