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??
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;
}
Se non riempi il vettore j e non faccio la send e la riceive di questo vettore funziona ma cosi' no!!!!