Вычислительный центр им. А.А. Дородницына РАНРаздел виртуального курса
|
|
---|
Одна группа может иметь много коммуникаторов?
Один коммуникатор может иметь много групп?
include "mpi.h" main(int argc, char **argv) { int irank,ntask,i; int igrp,newgrp,newcomm; int list[32]; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD,&ntask); MPI_Comm_rank(MPI_COMM_WORLD,&irank); if(irank==0) { //do work associated with master task } else { //create group for workers for(i=1;i< ntask;i++) { list[i-1]=i; } MPI_Comm_group(MPI_COMM_WORLD,&igrp); MPI_Group_incl(igrp,ntask-1,list,&newgrp); MPI_Comm_create(MPI_COMM_WORLD,newgrp,&newcomm); //do work associated with workers } MPI_Finalize(); }
При вызове MPI_Comm_group; все задачи должны вызвать эту функцию
При вызове MPI_Group_incl; все задачи должны вызвать эту функцию
При вызове MPI_Comm_create; все задачи должны вызвать эту функцию
MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank < 3) color = 0; else color = rank; key = -1 * rank; MPI_Comm_split (MPI_COMM_WORLD, color, key, &new_comm);
1
2
3
4
0
2
3
4
ФИО: