MPI_Cart_shift函数详解

MPI_Cart_shift函数用于在具有笛卡尔拓扑的MPI通信器中,根据指定维度和步长确定数据迁移的源和目标进程。参数包括通信器、维度方向、平移步长及源、目标进程号。例如,一个3x2的笛卡尔拓扑结构中,行是周期性的,列则不是,0号进程的上方邻居是4号进程,左侧无邻居。该函数的应用有助于理解并行计算中的进程间通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

int MPI_Cart_shift(MPI_Comm comm, int direction, int disp, int *rank_source,int *rank_dest)

在具有笛卡尔拓扑结构的通信器中,给定一个数据平移的维度和步长,返回数据平移的源进程号和目的进程号。

参数:

comm:具有笛卡尔拓扑结构的通信器

direction:数据平移的维度号

disp:数据平移的方向和步长,大于0表示正方向,小于0表示负方向

rank_source:源进程号

rank_dest:目的进程号


例子

给定6个进程,创建一个二维的3*2的笛卡尔拓扑结构通信器,行维是周期环面结构,列维是非周期环面结构。进程排列示意图如下:


括号中的数字表示进程号,-1表示没有相应的进程,0,0这样的坐标表示进程在二维笛卡尔拓扑中的坐标号。

由于行维是周期环面的,列维是非周期环面的,所以0号进程的上方和4号进程相邻,而左方没有进程相邻。


给定如下程序:

#include <iostream>
#include "mpi.h"

using namespace std;

int main(int argc, char *argv[]){

    MPI_Init(&argc, &argv);

    int numProcessors, rank, my2drank, mycoords[2];
    MPI_Comm_size(MPI_COMM_WORLD, &numProcessors);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);

    if(rank==0){
    
此文档描述了Fortran上mpi的使用。 Fortran語言 1 MPI 平行計算程式設計 1 第一章 前言 5 1.1 MPI 平行計算軟體 6 1.2 國家高速網路與計算中心的平行計算環境 7 1.3 在IBM 電腦系統上如何使用MPI 8 1.3.1 IBM 電腦系統的MPI Fortran程式編譯指令 8 1.3.2 IBM 電腦系統的 Job command file 8 1.3.3 IBM 電腦系統的平行程式的執行指令 11 1.4 在PC Cluster上如何使用MPI 13 1.4.1 PC Cluster上的MPI Fortran程式編譯指令 13 1.4.2 PC Cluster 上的 Job command file 14 1.4.3 PC Cluster 上的平行程式執行指令 15 第二章 無邊界資料交換的平行程式 16 2.1 MPI 基本指令 17 2.1.1 mpif.h include file 17 2.1.2 MPI_INIT, MPI_FINALIZE 17 2.1.3 MPI_COMM_SIZE, MPI_COMM_RANK 18 2.1.4 MPI_SEND, MPI_RECV 19 2.2 無邊界資料交換的循序程式 T2SEQ 21 2.3 資料不切割的平行程式 T2CP 23 2.4 MPI_SCATTER,MPI_GATHER,MPI_REDUCE 28 2.4.1 MPI_SCATTER,MPI_GATHER 28 2.4.2 MPI_REDUCE, MPI_ALLREDUCE 30 2.5 資料切割的平行程式 T2DCP 32 第三章 需要邊界資料交換的平行程式 36 3.1 MPI_SENDRECV, MPI_BCAST 37 3.1.1 MPI_SENDRECV 37 3.1.2 MPI_BCAST 37 3.2 邊界資料交換的循序程式 T3SEQ 39 3.3 資料不切割的邊界資料交換平行程式 T3CP 40 3.4 資料切割的邊界資料交換平行程式(一) T3DCP_1 47 3.5 資料切割的邊界資料交換平行程式 (二) T3DCP_2 52 第四章 格點數不能整除的平行程式 57 4.1 格點數不能整除的循序程式 T4SEQ 58 4.2. MPI_SCATTERV、MPI_GATHERV 60 4.3 MPI_PACK、UNPACK、BARRIER、WTIME 62 4.3.1 MPI_PACK、MPI_UNPACK 62 4.3.2 MPI_BARRIER、MPI_WTIME 65 4.4 資料切割的平行程式 T4DCP 67 第五章 多維陣列的平行程式 72 5.1 多維陣列的循序程式 T5SEQ 73 5.2 多維陣列資料不切割的平行程式 T5CP 76 5.3 多維陣列末維資料切割的平行程式 T5DCP 85 5.4 與二維切割有關的 MPI 副程式 92 5.4.1 垂直座標圖示法則 (Cartesian Topology) 92 5.4.2 界定二維切割的 MPI 副程式MPI_CART_CREATE、 93 MPI_CART_COORDS、MPI_CART_SHIFT 93 5.4.3 定義固定間隔資料的 MPI 副程式 96 MPI_TYPE_VECTOR、MPI_TYPE_COMMIT 96 5.5 多維陣列末二維切割的平行程式 T5_2D 98 第六章 MPI程式的效率提昇 112 6.1 Nonblocking資料傳送 113 6.2 資料傳送的合併 122 6.3 以邊界資料計算取代邊界資料交換 126 6.4 輸出入資料的安排 128 6.4.1 事先切割輸入資料 128 6.4.2 事後收集切割過的輸出資料 131 第七章 導出的資料類別 133 7.1 導出的資料類別 134 7.2 陣列的轉換 139 7.3 兩方迴歸與管線法 149 第八章 多方依賴及SOR解法 155 8.1 四方依賴及SOR解法 156 8.2 黑白點間隔 SOR 解法 159 8.3 斑馬線 SOR 解法 168 8.4 八方依賴與四色點間隔SOR解法 175 第九章 有限元素法程式 183 9.1 有限元素法的循序程式 184 9.2 有限元素法的平行程式 187 附錄一 撰寫C語言的MPI程式 197 參考書目 200 Parallel Processing without Partition of 1-D Arrays 201 Parallel Processing with Partition of 1-D Arrays 202 Parallel on the 2nd Dimension of 2-D Arrays without Partition 203 Parallel on the 2nd Dimension of 2-D Arrays with Partition 204 Partition on the 3rd dimension of 3-D Arrays 205
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值