[英]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 個進程?
當mpicc
和mpirun
不是來自同一個 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.