我有一個嵌套循環,並從循環內我稱爲MPI發送,我想它 發送到接收器一個特定的值,然後在接收器接收數據,並再次發送MPI消息 到另一組CPU ......我使用了類似這樣的東西,但它看起來像接收中存在問題......並且我不能看到我出錯的地方......「機器進入無限循環某處.. 。MPI調用和嵌套循環接收
我試圖使它像這樣的工作: 主CPU >>發送到其它CPU >>發送到從CPU
.
.
.
int currentCombinationsCount;
int mp;
if (rank == 0)
{
for (int pr = 0; pr < combinationsSegmentSize; pr++)
{
int CblockBegin = CombinationsSegementsBegin[pr];
int CblockEnd = CombinationsSegementsEnd [pr];
currentCombinationsCount = numOfCombinationsEachLoop[pr];
prossessNum = 1; //specify which processor we are sending to
// now substitute and send to the main Processors
for (mp = CblockBegin; mp <= CblockEnd; mp++)
{
MPI_Send(&mp , 1, MPI_INT , prossessNum, TAG, MPI_COMM_WORLD);
prossessNum ++;
}
}//this loop goes through all the specified blocks for the combinations
} // end of rank 0
else if (rank > currentCombinationsCount)
{
// here I want to put other receives that will take values from the else below
}
else
{
MPI_Recv(&mp , 1, MPI_INT , 0, TAG, MPI_COMM_WORLD, &stat);
// the code stuck here in infinite loop
}
謝謝Shawn回答,但我沒有在任何情況下使用currentCombinationsCount ...我想確保mp在每次迭代中達到所需的值,因此我在循環內評論了currentCombinationsCount,並且程序仍在某處......你認爲這可能是一個合乎邏輯的問題嗎? – SOSO
您在分支條件下使用它,所以是的,它似乎是您的程序邏輯的問題。 –