MPIプログラムには、MPIプログラム全体で転送されるバイト数の合計がどのように計算されますか?プログラムによって転送された合計MPIバイト数を取得する
uint64_t bytes_recv = 0;
void CommRecv(MyObject* a){
MPI_Status status;
MPI_Probe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
int msg_size;
MPI_Get_count(&status, MPI_BYTE, &msg_size);
bytes_recv += msg_size;
// Allocate a buffer to hold the incoming data
char* buf = (char*)malloc(msg_size);
assert(buf!=NULL);
MPI_Recv(buf, msg_size, MPI_BYTE, from, MPI_ANY_TAG, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
//Do stuff
free(buf);
}
ここでのポイントは、データ転送の統計情報を追跡する機能を標準MPI通信機能をラップすることです:私は直接の知っているが、あなたはあなたの目的に次のコードを適応させることができることを
外部ツールやプロファイリングライブラリを使用したことがありますか? ITACやMPIPのようなもの – Gilles