あるプロセッサから別のプロセッサに整数を送信することになっており、大学のシェルサーバーで実行する必要があります...
最初に、次のようなソリューション コードを作成しました (少なくとも私はそう思います...)。
#include <stdio.h>
#include <mpi.h>
int main(int argc, char **argv)
{
int currentRank = -1;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, ¤tRank);
if(currentRank == 0) {
int numberToSend = 1;
MPI_Send(&numberToSend , 1, MPI_INT, 1, 0, MPI_COMM_WORLD);
}
else if(currentRank == 1) {
int recivedNumber;
MPI_Recv(&recivedNumber, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
printf("Recived number = %d\n", recivedNumber);
}
MPI_Finalize();
return 0;
}
name.pbs ファイルを作成して実行する必要があります。そして、このプロセッサ数を指定する方法がわかりません...次のように試しました:
#PBS -l nodes=2:ppn=2
#PBS -N cnt
#PBS -j oe
mpiexec ~/mpi1
しかし、後でパテでこれをどうするかまだわかりません。qstat
comamnd は何もしないようです...「統計」が表示された場合のみ、qstat -Q
またはq
どこにでも 0 の値があります...これは mpi での私の最初のプログラムであり、まったく理解していません...
そして、プログラムを実行しようとすると、次のようになります。
164900@halite:~$ ./transfer1
Fatal error in MPI_Send: Invalid rank, error stack:
MPI_Send(174): MPI_Send(buf=0x7fffd28ec640, count=1, MPI_INT, dest=1, tag=0, MPI_COMM_WORLD) failed
MPI_Send(99).: Invalid rank has value 1 but must be nonnegative and less than 1
サーバーでこれを実行する方法を誰かに説明してもらえますか?