Какой эффективный, четкий и правильный способ передать структуру массивов от корневого ранга всем остальным? Достигнет ли этого кода ниже? Я хочу, чтобы трансляции одновременно использовали как можно больше каналов связи.
Боюсь, что у меня нет возможности реструктурировать данные, например, в массив структур.
float arr1[16];
int arr2[16];
char arr3[16];
//...fill arr1-3 with great data. Establish rank ID's, etc
MPI_Request req[3];
MPI_Status status[3];
MPI_IBcast(arr1, 16, MPI_FLOAT, root_rank_ID, MPI_COMM_WORLD, &req[0]);
MPI_IBcast(arr2, 16, MPI_INT, root_rank_ID, MPI_COMM_WORLD, &req[1]);
MPI_IBcast(arr3, 16, MPI_CHAR, root_rank_ID, MPI_COMM_WORLD, &req[2]);
MPI_Waitall(3,req,status);
//check status to ensure the outcome is OK
int importantData = importantFunction(arr1,arr2,arr3);