Пример коммуникации, в которой участвуют все процессы в коммуникаторе, называется коллективной. Как следствие коллективная связь обычно предполагает участие более двух процессов. Широковещательное сообщение - коллективная коммуникация, когда отдельный процесс посылает одинаковые данные каждому процессу. В MPI существует функция для широковещательной передачи MPI_Bcast():
MPI_Datatype datatype, int root, MPI_Comm comm);
Функцию получения данных Get_data(), используя MPI_Bcast(), можно переписать следующим образом:
int* n_ptr) {
int root = 0; /* Аргументы MPI_Bcast */
int count = 1;
if (my_rank == 0) {
printf(''Введите a, b, и n\n'');
scanf(''%f %f %d'', a_ptr, b_ptr, n_ptr);
}
MPI_Bcast(a_ptr, 1, MPI_FLOAT, root, MPI_COMM_WORLD);
MPI_Bcast(b_ptr, 1, MPI_FLOAT, root, MPI_COMM_WORLD);
MPI_Bcast(n_ptr, 1, MPI_INT, root, MPI_COMM_WORLD);
} /* Get-data2 */