C04-MPI的扩展MPI-完整版本.ppt

上传人:资****亨 文档编号:127757067 上传时间:2020-04-05 格式:PPT 页数:90 大小:1,004KB
返回 下载 相关 举报
C04-MPI的扩展MPI-完整版本.ppt_第1页
第1页 / 共90页
C04-MPI的扩展MPI-完整版本.ppt_第2页
第2页 / 共90页
C04-MPI的扩展MPI-完整版本.ppt_第3页
第3页 / 共90页
C04-MPI的扩展MPI-完整版本.ppt_第4页
第4页 / 共90页
C04-MPI的扩展MPI-完整版本.ppt_第5页
第5页 / 共90页
点击查看更多>>
资源描述

《C04-MPI的扩展MPI-完整版本.ppt》由会员分享,可在线阅读,更多相关《C04-MPI的扩展MPI-完整版本.ppt(90页珍藏版)》请在金锄头文库上搜索。

1、MPI的扩展MPI 2 谭光明副研究员tgm 中国科学院计算技术研究所国家智能计算机研究开发中心计算机体系结构国家重点实验室 筹 MPI 1的不足 不支持进程个数的动态改变不支持单边通信模式不支持并行文件操作 应用需求 动态任务树精确成型应用实例 MPI 2的解决方案 对通信域进行扩展组内通信域组间通信域具体实现方式动态派生进程 有父子关系 独立进程间通信 C S关系 Socket通信 转换socket通信 组间通信域的点到点通信 例子 MPI SEND buf count datatype dest tag intercomm 与组内通信的不同 1dest的含义 2intercommMPI

2、RECV buf count datatype source tag intercomm status 与组内通信的不同 1source的含义 2intercomm 组间通信域的组通信 例子 MPI ALLTOALL sendbuf sendcount sendtype recvbuf recvcount recvtype intercomm 图示 组间通信域的一对多和多对一 本地一个发 对方所有的收本地一个收 对方所有的发 例子 MPI BCAST buf count datatype root intercomm 主进程组中动态进程的创建 MPI COMM SPAWN cmd argv m

3、axprocs info root comm intercomm aryerrcodes 最多派生maxprocs个进程 root是参数检查的进程 派生进程组得到组间通信域 MPI COMM GET PARENT parent 在派生进程组中调用在初始化之后三次同步父进程同步子进程之间同步父子进程之间同步 源程序 主进程组程序 独立的MPI程序 派生进程组程序 独立的MPI程序 启动 创建多组子进程 MPI COMM SPAWN MULTIPLE count cmdary argvary maxprocsary infoary root comm intercomm errcodeary 各组

4、子进程是不同的 独立进程间通信 服务端MPI OPEN PORT info port name MPI COMM ACCEPT port name info root comm intercomm 在打开的特定端口上等待连接 独立进程间通信 续 客户端MPI COMM CONNECT port name info root comm intercomm 请求与指定端口连接MPI COMM DISCONNECT comm 问题 客户端每次连接的端口可能是不同的 方案 服务端建立特定名字和端口字符串的联系MPI PUBLISH NAME servicename info portname 客户端根

5、据名字得到特定的端口字符串MPI LOOKUP NAME servicename info portname 基于socket的通信 MPI COMM JOIN fd intercomm 将socket通信转化为MPI通信 什么是远程存储访问 单边通信 RemoteMemoryAccess One SidedCommunication 打电话留字条阅读EMAIL 通信窗口 开辟自己内存的一段空间作为对外联系的窗口 任何进程都可以通过对窗口的访问来达到数据通信的目的 窗口操作的分类 窗口读MPI GET窗口写MPI PUT窗口运算MPI ACCUMULATE 窗口的创建 MPI WIN CREA

6、TE base size disp unit info comm win 注意 窗口创建操作是组调用 所有的进程必须都执行得到的窗口是组窗口 与给定的通信域密切相关用同一窗口对象可以访问所有其它进程的窗口 窗口的释放 MPI WIN FREE win 当所有窗口都不再使用时释放是组调用 远程更新 向窗口写 MPI PUT origin addr origin count origin datatype target rank target disp target count target datatype win 注意 不同进程的窗口是通过进程标识来区别的对不同进程窗口的操作使用的是同一窗口句

7、柄偏移是以创建窗口时指定的偏移单位大小计算的 从远程得到数据 从窗口读 MPI GET origin addr origin count origin datatype target rank target disp target count target datatype win 注意 写窗口的逆操作不同进程的窗口是通过进程标识来区别的对不同进程窗口的操作使用的是同一窗口句柄偏移是以创建窗口时指定的偏移单位大小来计算的 对远程数据的计算 窗口数据运算 MPI ACCUMULATE origin addr origin count origin datatype target rank tar

8、get disp target count target datatype op win 图示 同时执行了窗口的读和写操作 问题 访问冲突问题 R W 读读 RR 读写 RW 写读 WR 写写 WW 解决办法窗口同步管理 窗口同步管理 栅栏方式握手方式锁方式 栅栏方式 MPI WIN FENCE assert win assert 0 窗口操作前 窗口操作完成 窗口操作 示例 前后两次窗口操作互不干扰 握手方式 第一次握手 为窗口访问作准备第二次握手 窗口访问完成 发起访问方的操作顺序 MPI WIN START group assert win 启动第一次握手 开始窗口访问 窗口操作MPI

9、WIN COMPLETE win 启动第二次握手 结束窗口访问 接收访问方的操作过程 MPI WIN POST group assert win 启动第一次握手 准备窗口操作 等待被访问MPI WIN WAIT win 启动第二次握手 窗口操作结束 图示 锁方式 借鉴临界区的概念加锁后只允许自己访问开锁后将访问权让给别人 加锁语句 MPI WIN LOCK lock type rank assert win 共享锁 允许其它的进程同时加共享锁互斥锁 不允许其它的进程再加锁 开锁语句 MPI WIN UNLOCK rank win 允许其它的进程加锁 图示 练习 请用单边通信重新实现Jacobi

10、迭代的例子 请写一个简单的动态进行创建的例子 并行文件I O的分类 显式偏移的文件I O视口文件I O共享文件I O 一些基本操作 并行文件打开 MPI comm amode info fh 文件打开组调用 amode必须都相同fh是一个组句柄 与WIN类似 与用C Fortran打开文件不同 文件打开方式 文件关闭 MPI fh 注意 组调用 删除指定的文件 MPI info 文件大小 MPI fh size 组调用 所有的size都相同MPI fh size 文件进程组与文件打开模式 MPI fh group 返回句柄fh对应的进程组groupMPI fh amode 返回打开文件时指定的

11、模式 具有显式偏移的文件操作 阻塞显式偏移并行文件读写 MPI fh offset buf count datatype status 写文件 MPI fh offset buf count datatype status 组调用阻塞显式偏移并行文件读写 MPI fh offset buf count datatype status 组调用 所有进程都执行了一次MPI MPI fh offset buf count datatype status 组调用 所有进程都执行了一次MPI 非阻塞显式偏移并行文件读写 MPI fh offset buf count datatype request M

12、PI fh offset buf count datatype request 同非阻塞通信的基本含义 调用返回并不意味着操作的完成 完成形式 MPI WAITMPI TEST与非阻塞通信的完成调用形式完全相同 非阻塞组调用显式偏移并行文件读写 具有显式的开始与结束形式MPI fh offset buf count datatype 组调用读开始MPI fh buf status 组调用读结束 写操作 MPI fh offset buf count datatype 组调用写开始MPI fh buf status 组调用写结束 视口文件读写 特点 隐式文件指针取文件的一部分形成视口 然后对该视

13、口进行操作 每个进程把视口看作是整个文件 文件视口 文件类型是在基本类型的基础上形成的自定义数据类型 文件视口的定义 MPI fh disp etype datarep info 数据表示 native 效率最高 移植性最差 internal 效率一般 移植性一般 external32 效率最低 移植性最好 文件视口的定义 续 组调用偏移的单位是字节视口数据是连续的文件句柄的含义转换 视口信息的获取 MPI fh disp etype datarep 得到偏移 基本类型 文件类型以及数据表示等信息 当前视口指针偏移 MPI fh offset 文件视口句柄 视口偏移 绝对偏移 MPI fh o

14、ffset disp 给定相对偏移offset 给出绝对偏移disp 阻塞方式的视口读写 MPI fh buf count datatype status 从视口当前位置读数据MPI fh buf count datatype status 向视口当前位置写数据 阻塞方式的视口文件组调用 MPI fh buf count datatype status 组内所有进程都读MPI fh buf count datatype status 组内所有进程都写 非阻塞视口文件读写 MPI fh buf count datatype request 非阻塞视口文件读MPI fh buf count dat

15、atype request 非阻塞视口文件写 完成操作 MPI WAITMPI TEST同非阻塞的通信调用形式 非阻塞视口组调用 MPI fh buf count datatype 组内进程都执行非阻塞的读操作MPI fh buf status 组调用读操作完成 组调用写操作 MPI fh buf count datatype 组调用写操作开始MPI fh buf status 组调用写操作完成 共享文件操作 基于视口文件操作 但视口文件指针只有一个 即共享指针任何文件对指针的操作都同时影响其它的文件各个进程对视口定义有什么要求 移动共享视口指针 MPI fh offset whence 阻塞

16、共享文件读写 MPI fh buf count datatype status 共享读MPI fh buf count datatype status 共享写 阻塞共享文件组读写 MPI fh buf count datatype status 组内进程依次读MPI fh buf count datatype status 组内进程依次写 非阻塞共享指针文件操作 MPI fh buf count datatype request 非阻塞读MPI fh buf count datatype request 非阻塞写 完成调用 MPI WAITMPI TEST同非阻塞通信形式 非阻塞共享文件组读写 MPI fh buf count datatype 启动非阻塞组读操作MPI fh buf status 完成非阻塞组读操作 写操作 MPI fh buf count datatype 启动非阻塞组调用写操作MPI fh buf status 完成非阻塞组调用写操作 分布式数组文件的存取 MPI TYPE CREATE DARRAY size rank ndims array of gsizes

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号