0
我正在解決一個進程在列上進行一些計算的問題,並且將該列保存在一個臨時數組中,並使用MPI_Bcast將其廣播到所有其他進程,但始終以全部結束接收端數組中的零。通過MPI_Bcast發送列
下面是我的代碼,我使用:
//nProc = no of processors;
//helperA = 2D Array i.e. helperA[size][size]
// colK = 1D Array i.e. colK[size]
for (int k = 0; k < size; ++k) {
if (k % nProc == rank) {
// One of the process will do this calculation
int temp = 0;
for (int j = k + 1; j < size; ++j) {
helperA[j][k] = helperA[j][k]/helperA[k][k];
colK[temp++] = helperA[j][k];
}
}
MPI_Bcast(colK, size - k - 1, MPI_DOUBLE, rank, MPI_COMM_WORLD);
// After this other process should get the colK updated with the calculation
for (int i = k + 1; i < size; ++i) {
if (i % nProc == rank) {
int temp = 0;
for (int j = k + 1; j < size; ++j) {
// Here colK is always zero
printf("%d %f \n", rank, colK[temp]);
helperA[j][i] = helperA[j][i] - (colK[temp++] * helperA[k][i]);
}
}
}
}
我不知道我在做什麼錯在這裏。任何幫助/建議請。
謝謝。是的,我已經完成了錯誤檢查,數據是他們的,但你的觀點是有效的,我只是檢查這一點,並在這種情況下更新你。 – JackSparrow
這是這種情況:)非常感謝你的幫助! – JackSparrow