PDA

View Full Version : [C] MPI problema con Send-Recv


Xela85
25-10-2008, 17:17
Ciao a tutti io sto facendo un prog che ordina un array con mergesort ma ho un problema con MPI_Send e MPI_Recv in quanto quando li inserisco nel ciclo for del codice questi non fanno nulla, mentre senza ciclo for funzionano. Si può inserire queste due istruzioni in un ciclo for? (mi sono chiesto). Io devo passare i dati di certi task in altri task più volte ( con il ciclo for). Il codice è questo:


salto=2;
for (i=1; i<=alt ; i++){
taglia=q*(salto/2);
if(((rank%(salto/2))==0)&&((rank%salto)!=0)) {
dest=rank- (salto/2);
MPI_Send( ricez, taglia, MPI_INT, dest, DATA,MPI_COMM_WORLD);
}
if ((rank%salto)==0) {
dest=rank+(salto/2);
for(j=0;j<taglia;j++) {
v[j]=ricez[j];
}
MPI_Recv( ricez, taglia, MPI_INT, dest, DATA,MPI_COMM_WORLD, &status);
for(j=taglia;j<(2*taglia);j++) {
v[j]=ricez[j-taglia];
}

merge(v,0,taglia,(q*salto));

}
salto=salto*2;
}


Tutto funziona se non metto il for, ma a me serve quel ciclo. Se potete aiutarmi.. Anche con alternative diverse da questa.:(