Когда выполняю эту задачу последовательно проблем не возникает, начинаю распараллеливать задачу результаты nan и такие сообщения
Код: Выделить всё
rank 3 in job 8 Kylix_36169 caused collective abort of all ranks
exit status of rank 3: return code 1
[cli_1]: aborting job:
Fatal error in MPI_Send: Other MPI error, error stack:
MPI_Send(173).............................: MPI_Send(buf=0xbfde4660, count=24, MPI_LONG_DOUBLE, dest=0, tag=50, MPI_COMM_WORLD) failedВот собственно сам код
Код: Выделить всё
/* Установка среды MPI*/
double t1,t2;
int numprocs,myid,tag=50;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);//Получения числа запущенныъ процессов;
MPI_Comm_rank(MPI_COMM_WORLD,&myid);//Получение идентификатора процесса
//-----------------------------------------------------
MPI_Status status;
if (myid!=0) {
for(i=myid;i<m;i+=numprocs)
{
zT[i]=kfl(Z,i,T);// разложения функции Z(t) в ряд zT из m многочленов Лежандра
}
MPI_Send(zT,m,MPI_LONG_DOUBLE,0,tag,MPI_COMM_WORLD);
}
else{
MPI_Recv(zT,m,MPI_LONG_DOUBLE,MPI_ANY_SOURCE,tag,MPI_COMM_WORLD,&status);
}
MPI_Finalize();Вопрос как правильно распараллелить вычисление функции между n процессами и сохранить результат в общей области памяти?