MPI_COMM_SPLIT函数浅尝

来源:互联网 发布:qq旋风破解版 mac 编辑:程序博客网 时间:2024/06/08 10:24
MPI_COMM_SPLIT


之前通常使用MPI_COMM_WORLD,但是这个范围太大了,而我要完成的cannon算法需要对于节点进行区分,使得在shift步骤的时候需要在某一个域中进行操作。


所以我需要对于节点们进行split操作,使得节点能够划分子区域。


MPI_Comm_split(
    MPI_Comm comm,
    int color,
    int key,
    MPI_Comm* newcomm)


MPI_Comm_split主要有以下四个参数:
第一个参数comm为原来的域的整体范围,也就是被划分的范围。
第二个参数为color,相同的color的节点会被划分成同一个子域。
第三个参数为key,在每个子域中会有诸多节点,节点在子域中的rank是多少,是通过key从小到大进行排列从而产生的。
第四个参数为newcomm,也就是一个新的通信域。


于是每个计算节点除了原来的MPI_COMM_WORLD的world_rank之外,还在很多小的sub_comm中有sub_rank,也就是有诸多小身份。
就好像一个人可以可以说是地球上的人,但是也有很多不同的身份,比如说中国人,比如说男人,这都是通过不同的子域划分而产生的不同的区域。


参考资料:
1.http://mpitutorial.com/tutorials/introduction-to-groups-and-communicators/
一个比较简单易上手的mpi tutorial , 中文的便捷的资料是在是太少了
0 0
原创粉丝点击