Salve a tutti sto creando ilo mio primo porgramma con le matrici ma se spedisco un solo vettore funziona se cerco di spedirne 2 non va piu' qual'e' il problema??
Se non riempi il vettore j e non faccio la send e la riceive di questo vettore funziona ma cosi' no!!!!codice:#include<stdio.h> #include<mpi.h> int main(int argc,char **argv){ char *x; //vettore riga di 512 elementi int *y; //vettore colonna di 512 elementi int i,j; //contatori int proc; //contatore di processi int rank,size; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); for(i=0;i<512;i++){ x[i]=i+1; } for(j=0;j<512;j++){ y[j]=j+1; } int righe; righe=510/(size-1); int colonne; colonne=510/(size-1); if(rank==0){ for(proc=1;proc<size;proc++){ MPI_Send(&x[(proc-1)*righe],righe,MPI_CHAR,proc,0,MPI_COMM_WORLD); printf("inviati:%d\n",righe); MPI_Send(&y[(proc-1)*colonne],colonne,MPI_CHAR,proc,0,MPI_COMM_WORLD); printf("inviati:%d\n",colonne); } printf("\n"); } else{ int *messx; messx=(int *)calloc(righe,sizeof(int)); MPI_Recv(messx,righe,MPI_CHAR,0,0,MPI_COMM_WORLD,&status); printf("ricevuti:%d\n",righe); int *messy; messy=(int *)calloc(righe,sizeof(int)); MPI_Recv(messy,righe,MPI_CHAR,0,0,MPI_COMM_WORLD,&status); printf("ricevuti:%d\n",righe); }//printf("In totale ho ricevuto %d elementi",righe+colonne); MPI_Finalize(); return 0; }![]()

Rispondi quotando
non avrebbe dovuto funzionare neanche così.
