mpi/c++;将代码转换为并行
我是mpi新手。我正在尝试用mpi并行我的代码(需要更快地运行一些实验)。它应该是这样工作的:master向从机发送一个字符串数组,它们执行一些工作并将status_ready发送回master。当所有从机准备就绪时,主机进入循环并迭代地向从机发送一个双倍向量,从机处理该向量并将其结果(2个向量)发送回主机。当接收到所有tje消息时,master将对其进行处理,循环将进行迭代(master将结果发送给从机等),其工作方式如下mpi/c++;将代码转换为并行,mpi,Mpi,我是mpi新手。我正在尝试用mpi并行我的代码(需要更快地运行一些实验)。它应该是这样工作的:master向从机发送一个字符串数组,它们执行一些工作并将status_ready发送回master。当所有从机准备就绪时,主机进入循环并迭代地向从机发送一个双倍向量,从机处理该向量并将其结果(2个向量)发送回主机。当接收到所有tje消息时,master将对其进行处理,循环将进行迭代(master将结果发送给从机等),其工作方式如下 // master - init sendVectorWithStri
// master - init
sendVectorWithStrings2Slaves();
// slaves
doSomeStuff();
sendReady();
// master
receiveStatuses();
// master - when all slaves are ready
while(some condition)
{
// master
sendVector2Slaves()
//slaves
receiveVector();
process();
sendTwoVectorsBack2Master();
// master
receiveAllVectors();
checkThatAllMessagesReceived();
processResults();
}
stopSlaves();
有人能帮我学习mpi吗?下面是一些伪代码指南:
int myrank,ntasks;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
MPI_Comm_size(MPI_COMM_WORLD, &ntasks);
if (myrank == 0) {
// master - init
for (int rank = 1; rank < ntasks; ++rank)
sendVectorWithStrings2Slave(rank);
for (int rank = 1; rank < ntasks; ++rank)
recieveReady();
} else {
// slaves
recieveVectorWithStringsFromMaster();
doSomeStuff();
sendReady();
}
// master - when all slaves are ready
while(some condition)
{
if (myrank == 0) {
// master
for (int rank = 1; rank < ntasks; ++rank)
sendVector2Slave(rank)
// master
for (int rank = 1; rank < ntasks; ++rank)
receiveVector();
processResults();
} else {
//slaves
receiveVector();
process();
sendTwoVectorsBack2Master();
}
}
int-myrank,ntasks;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_Comm_WORLD和myrank);
MPI_通信大小(MPI_通信世界和ntasks);
如果(myrank==0){
//主初始化
for(整数秩=1;秩