ฉันกำลังพยายามส่งข้อมูลไปที่ MPI_Gather
ฉันจัดสรรหน่วยความจำดังนี้:
float *phie, *phitemp;
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
phitemp=(float *) malloc(20*sizeof(float));
if (rank==1) phie=(float *) malloc(itermax*20*size*sizeof(float));
แล้วให้กระบวนการทั้งหมดส่งข้อมูลไปอันดับ 1 โดยใช้ MPI_Gather()
ดังนี้
for (iter=0;iter<itermax;iter++) {
MPI_Gather((float *) phitemp, 20, MPI_FLOAT, (float *) (phie+iter*20*size*sizeof(float)), 20, MPI_FLOAT, 1, MPI_COMM_WORLD);
iter=0;
}
ฉันได้รับข้อความแสดงข้อผิดพลาดแจ้งว่าฉันไม่ได้จัดสรรหน่วยความจำอย่างเหมาะสม