0
我正在使用MPI執行代碼並行化以評估成本函數。在C中使用MPI進行代碼並行化
我在8個處理器中分配人口50,000點。
我試圖並行下面的代碼,但它掙扎:
//mpiWorldSize is number of processors
//=====================================
for (int k=1; k< mpiWorldSize; k++)
{
MPI_Send(params[1][mpiWorldRank*over+k],7,MPI_INT, 0,0,MPI_COMM_WORLD);
}
// evaluate all the new costs
//=========================
for (int j=1; j<mpiWorldSize;j++)
{
MPI_Recv(params[1][mpiWorldRank*over+k],7,MPI_INT,j,0,MPI_COMM_WORLD,MPI_STATUS_IGNORE);
}
// memory allocation
//=========================
SecNewCostValues = (float*) malloc(noOfDataPerProcessor/bufferLength);
//loop throw nuber of data per proc
for (i = 0; i < over; i++)
{
if(mpiWorldRank != 0)
{
SecNewCostValues[i] = cost(params[1][mpiWorldRank*noOfDataPerPreocessor+i]);
newCostValues[over] = cost(params[1][i]); //change the i part to rank*nodpp+i
printf("hello from rank %d: %s\n", mpiWorldRank ,procName);
}
}
我無法發送和接收來自不同處理器的數據,除了0
我會明白任何幫助。
感謝
我建議你也加上'mpi'標籤 – jev 2014-12-04 22:42:50