Im в настоящее время пытается реализовать умножение матрицы на матрицу с помощью C. У меня есть следующий кодMPI умножение матрицы на матрицу
for(index=0; index<p; index++)
{
/* calculate the partial sum for matC given the row band of A and
B */
for (i=0; i<n/p; i++)
for (j=0; j<n; j++)
for (k=0; k<n; k++)
storage_matC[i*n+j] += storage_matA[i*n+k]*storage_matB[k*n+j];
if(index < p-1)
{
/* mpi send storage_matB to the next process (id+1)%p */
MPI_Send(storage_matB, n, MPI_FLOAT, (id+1)%p, 0, MPI_COMM_WORLD);
/* mpi receive storage_matB from the previous process */
MPI_Recv(&storage_matB, n, MPI_FLOAT, id, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
}
}
Мне нужно, чтобы иметь возможность отправить matrix_b, используемый в текущем процессе, а затем получить его в текущем процессе из предыдущего процесса. Моя программа просто висит там, и я должен ее прекратить. Может ли кто-то пролить свет на то, как подойти к этой проблеме ...
Большое вам спасибо за ваше время, ваша помощь очень ценится!
это общий смысл! но как я могу реализовать это в своем коде? Как я могу это сделать? – Hous3aholik
@ user2913269: Я расширил ответ с помощью псевдо-C. – Amadan