0

私はMPIの初心者です。私が最初のプログラムをコーディングしたとき、私は私にとって難しい問題に直面しました。

MPI_Init(&argc, &argv) ; 
MPI_Comm_rank( MPI_COMM_WORLD, &rank) ; 
MPI_Comm_size( MPI_COMM_WORLD, &size)  ;
printf("Process: %d\n", rank);
printf("Procs_num: %d\n", size);

と:

mpicc main.c -o main 
mpirun -np 8 main

しかし、私が得るのは、次の8つの複製だけです。

Process: 0
Procs_num: 1

私が期待するものは次のとおりです。

Process: 0~7 
Procs_num: 8

MPI_COMM_WORLDに8つのプロセスがないためだと思いますが、理由がわからず、解決方法もわかりません。

そして、私が表現したいことをあなたが理解してくれることを願っています。多くのthx!!

4

1 に答える 1

0

どうやら電話するのを忘れていたようですMPI_Finalize

正しいコードは次のとおりです。

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

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

    MPI_Init(&argc, &argv) ; 
    MPI_Comm_rank( MPI_COMM_WORLD, &rank) ; 
    MPI_Comm_size( MPI_COMM_WORLD, &size)  ;
    printf("Process: %d\n", rank);
    printf("Procs_num: %d\n", size);

    MPI_Finalize();                         

   return(0);
}

次に、8 つの異なるランクを取得します。

~/mpi_tests/examples > mpirun -np 8 ~/mpi_tests/examples/t
Process: 4
Procs_num: 8
Process: 5
Procs_num: 8
Process: 0
Procs_num: 8
Process: 1
Procs_num: 8
Process: 7
Procs_num: 8
Process: 2
Procs_num: 8
Process: 3
Procs_num: 8
Process: 6
Procs_num: 8
于 2012-08-11T10:46:48.057 に答える