MPI_Scatter è un operazione collettiva che permette di inviare a ciascun processo un segmento distinto di un array più grande che esiste solo nel processo radice.
L’effetto è come se il processo radice eseguisse tante operazioni di invio (MPI_Send), una per ogni processo nel gruppo, e ciascun processo eseguisse una ricezione MPI_Recv) corrispondente.
I parametri della funzione sono i seguenti:
void *send_buf_p il buffer contenente il vettore da inviare
int send_count il numero di elementi da inviare ad ogni processo (non il numero di elementi totali del vettore)
MPI_Datatype send_type il tipo degli elementi del vettore
void *recv_buf_p il buffer che conterrà la frazione di vettore ricevuta (per il mittente, può coincidere con il buffer di invio)
int recv_count analogo a send_count
MPI_Datatype recv_type analogo a send_type
int src_proc il rank del processo che condividerà il vettore