并行编程:MPI与OpenMP入门
1. MPI基础函数
1.1 MPI_Scatter
MPI_Scatter
函数用于将单个源任务( sendbuf
)中的不同消息分发给通信器中的每个任务( recvbuf
)。与 MPI_Bcast
不同,它可以将向量的不同分量分发给不同的 MPI 任务,常用于矩阵乘法等场景。其函数原型如下:
MPI_Scatter(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
void *recvbuf, int recvcount, MPI_Datatype recvtype,
int root, MPI_Comm comm)
1.2 MPI_Gather
MPI_Gather
是 MPI_Scatter
的逆操作,它将通信器( comm
)中每个任务( sendbuf
)的不同消息收集到单个目标任务( recvbuf
)中。需要注意的是, recvcount
参数是每个进程接收的元素数量,而不是所有进程计数的总和。其函数原型如下:
MPI_Gath