分散環境のさまざまなコアで行列乗算を実行できる MPI プログラムを開発しました。ノードのホスト名を取得することで、さまざまなノードでの実行を実証できます。しかし、単一ノードでプログラムを実行している場合、複数ノードでの実行を示すコア ID を取得できますか? サンプル コードを以下に示します。
#include"stdio.h"
#include"stdlib.h"
#include"mpi.h"
int main(int argc , char **argv)
{
int size,rank;
int a,b,c;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
if(rank==0)
{
for(i=0;i<size;i++)
{
printf("insert a and b");
scanf("%d",&b);
scanf("%d",&c);
MPI_Send(&b,1,MPI_INT,i+1,6,MPI_COMM_WORLD);
MPI_Send(&c,1,MPI_INT,i+1,6,MPI_COMM_WORLD);
}
}
if(rank!=0)
{
MPI_Recv(&b,1,MPI_INT,0,6,MPI_COMM_WORLD,&s);
MPI_Recv(&c,1,MPI_INT,0,6,MPI_COMM_WORLD,&s);
a=b*c;
printf("Mul = %d\n",a);
//Print name of core on which my process is running
}
MPI_Finalize();
return 0;
}