Scusa...ma non li inizializzi x e y ? Non ho mai usato le MPI ma se definisci x e y come
due puntatori e poi fai
codice:
for(i=0;i<512;i++){
		x[i]=i+1;
	}
	
	for(j=0;j<512;j++){
		y[j]=j+1;
}
credo che si debba sciantare. Prima di queste due righe prova a fare
codice:
  x = malloc(512);
  y = malloc(512);
se le chiamate a MPI_Init etc non allocano memoria per x e y dubito che possa mai
funzionare (in qualsiasi caso se non per c..o).
Quello che intendo è che:
codice:
char *x;	//vettore riga di 512 elementi
non è un vettore di 512 elementi...ma un puntatore a char...da qualche parte devi allocare i 512 dodici elementi. Spero che sia questo il problema