⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 my_mpi2.cpp

📁 10 Mpi source examples for begginers
💻 CPP
字号:
# include <mpi.h>
# include <stdio.h>

# define NPROCS 8

int main(int argc, char** argv)
{
int rank, new_rank, sendbuf, recvbuf, numtasks,
ranks1[4]={0,1,2,3}, ranks2[4]={4,5,6,7};
MPI_Group orig_group, new_group;
MPI_Comm new_comm;

MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &numtasks);

if (numtasks != NPROCS) {
printf("Must specify MP_PROCS= %d. Terminating.\n", NPROCS);
MPI_Finalize();

}

sendbuf = rank;

/* Step 1 */

MPI_Comm_group(MPI_COMM_WORLD, &orig_group);

/* Step 2 */

if (rank < NPROCS/2) {
MPI_Group_incl(orig_group, NPROCS/2, ranks1, &new_group);
}
else {
MPI_Group_incl(orig_group, NPROCS/2, ranks2, &new_group);
}

/* Step 3 */

MPI_Comm_create(MPI_COMM_WORLD, new_group, &new_comm);

/* Step 5 */

MPI_Allreduce(&sendbuf, &recvbuf, 1, MPI_INT, MPI_SUM, new_comm);

/* Step 4 */

MPI_Group_rank (new_group, &new_rank);

printf("rank= %d newrank= %d recvbuf= %d\n",rank,new_rank,recvbuf);

MPI_Finalize();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -