簡體   English   中英

MPI 程序僅在一個進程中執行,而不是在多個進程中請求

[英]MPI program executed in only one process against requested with many processes

我是一個試圖學習 MPI 的初學者。 我試圖運行從互聯網下載的以下程序:

    #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;
    }

代碼已經用mpicc編譯並用mpirun執行。

mpicc HelloWorld.c
mpirun -np 4 a.out

輸出如下:

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 個進程?

mpiccmpirun不是來自同一個 MPI 實現時會出現此問題。
您可以卸載 openmpi 和 mpich 並僅安裝 mpich lib。

在終端中運行這些命令。
sudo apt-get remove --auto-remove openmpi-bin
sudo apt-get remove --auto-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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM