Вычислительный центр им. А.А. Дородницына РАНРаздел виртуального курса
|
|
|---|
Одна группа может иметь много коммуникаторов?
Один коммуникатор может иметь много групп?
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
ФИО: