版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.,MPI的扩展MPI-2,谭光明 副研究员 tgm 中国科学院计算技术研究所 国家智能计算机研究开发中心 计算机体系结构国家重点实验室(筹),.,MPI-1的不足,不支持进程个数的动态改变 不支持单边通信模式 不支持并行文件操作,.,应用需求,动态任务树 精确成型应用实例,.,MPI-2的解决方案,对通信域进行扩展 组内通信域 组间通信域 具体实现方式 动态派生进程(有父子关系) 独立进程间通信(C/S关系) Socket通信(转换socket通信),.,组间通信域的点到点通信,.,例子,MPI_SEND(buf,count,datatype,dest,tag,intercomm) 与组内通
2、信的不同:1 dest的含义;2 intercomm MPI_RECV(buf,count,datatype,source,tag, intercomm,status) 与组内通信的不同:1 source的含义;2 intercomm,.,组间通信域的组通信,.,例子,MPI_ALLTOALL(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype,intercomm),.,图示,.,组间通信域的一对多和多对一,本地一个发,对方所有的收 本地一个收,对方所有的发,.,例子,MPI_BCAST(buf,count,datatype,root,
3、intercomm),.,主进程组中动态进程的创建,MPI_COMM_SPAWN(cmd,argv,maxprocs, info,root,comm,intercomm,aryerrcodes) 最多派生maxprocs个进程,root是参数检查的进程,.,派生进程组得到组间通信域,MPI_COMM_GET_PARENT(parent) 在派生进程组中调用 在初始化之后 三次同步 父进程同步 子进程之间同步 父子进程之间同步,.,源程序,主进程组程序(独立的MPI程序),派生进程组程序(独立的MPI程序),启动,.,创建多组子进程,MPI_COMM_SPAWN_MULTIPLE(count,c
4、mdary,argvary,maxprocsary,infoary,root, comm,intercomm,errcodeary) 各组子进程是不同的,.,独立进程间通信,服务端 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),.,问题,客
5、户端每次连接的端口可能是不同的,.,方案,服务端 建立特定名字和端口字符串的联系 MPI_PUBLISH_NAME(servicename,info,portname) 客户端 根据名字得到特定的端口字符串 MPI_LOOKUP_NAME(servicename,info,portname),.,基于socket的通信,MPI_COMM_JOIN(fd,intercomm) 将socket通信转化为MPI通信,.,什么是远程存储访问(单边通信)? Remote Memory Access/One-Sided Communication,打电话 留字条 阅读EMAIL,.,通信窗口,开辟自己内存
6、的一段空间作为对外联系的窗口,任何进程都可以通过对窗口的访问来达到数据通信的目的,.,窗口操作的分类,窗口读 MPI_GET 窗口写 MPI_PUT 窗口运算 MPI_ACCUMULATE,.,窗口的创建,MPI_WIN_CREATE(base, size, disp_unit, info, comm ,win),.,注意,窗口创建操作是组调用,所有的进程必须都执行 得到的窗口是组窗口,与给定的通信域密切相关 用同一窗口对象可以访问所有其它进程的窗口,.,窗口的释放,MPI_WIN_FREE(win) 当所有窗口都不再使用时释放 是组调用,.,远程更新(向窗口写),MPI_PUT(origin
7、_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, target_datatype, win),.,注意,不同进程的窗口是通过进程标识来区别的 对不同进程窗口的操作使用的是同一窗口句柄 偏移是以创建窗口时指定的偏移单位大小计算的,.,从远程得到数据(从窗口读),MPI_GET(origin_addr, origin_count, origin_datatype, target_rank, target_disp, target_count, target_datatype, win),.,注
8、意,写窗口的逆操作 不同进程的窗口是通过进程标识来区别的 对不同进程窗口的操作使用的是同一窗口句柄 偏移是以创建窗口时指定的偏移单位大小来计算的,.,对远程数据的计算(窗口数据运算),MPI_ACCUMULATE(origin_addr, origin_count, origin_datatype, target_rank, target_disp,target_count, target_datatype, op, win),.,图示,同时执行了窗口的读和写操作,.,问题,访问冲突问题(R,W) 读读(RR) 读写(RW) 写读(WR) 写写(WW) 解决办法 窗口同步管理,.,窗口同步管理
9、,栅栏方式 握手方式 锁方式,.,栅栏方式,MPI_WIN_FENCE(assert, win) assert = 0,窗口操作前,窗口操作完成,窗口操作,.,示例,前后两次窗口操作互不干扰,.,握手方式,第一次握手,为窗口访问作准备 第二次握手,窗口访问完成,.,发起访问方的操作顺序,MPI_WIN_START(group, assert, win) 启动第一次握手(开始窗口访问) 窗口操作 MPI_WIN_COMPLETE(win) 启动第二次握手(结束窗口访问),.,接收访问方的操作过程,MPI_WIN_POST(group, assert, win) 启动第一次握手(准备窗口操作) 等
10、待被访问 MPI_WIN_WAIT(win) 启动第二次握手(窗口操作结束),.,图示,.,锁方式,借鉴临界区的概念 加锁后只允许自己访问 开锁后将访问权让给别人,.,加锁语句,MPI_WIN_LOCK(lock_type, rank, assert, win) 共享锁:允许其它的进程同时加共享锁 互斥锁:不允许其它的进程再加锁,.,开锁语句,MPI_WIN_UNLOCK(rank, win) 允许其它的进程加锁,.,图示,.,练习,请用单边通信重新实现Jacobi迭代的例子。 请写一个简单的动态进行创建的例子,.,并行文件I/O的分类,显式偏移的文件I/O 视口文件I/O 共享文件I/O,.
11、,一些基本操作,.,并行文件打开,MPI_FILE_OPEN(comm, filename, amode, info, fh) 文件打开 组调用,amode必须都相同 fh是一个组句柄(与WIN类似) 与用C/Fortran打开文件不同,.,文件打开方式,.,文件关闭,MPI_FILE_CLOSE(fh) 注意:组调用,.,删除指定的文件,MPI_FILE_DELETE(filename, info),.,文件大小,MPI_FILE_SET_SIZE(fh,size) 组调用,所有的size都相同 MPI_FILE_GET_SIZE(fh,size),.,文件进程组与文件打开模式,MPI_FI
12、LE_GET_GROUP(fh,group) 返回句柄fh对应的进程组group MPI_FILE_GET_AMODE(fh, amode) 返回打开文件时指定的模式,.,具有显式偏移的文件操作,.,阻塞显式偏移并行文件读写,MPI_FILE_READ_AT(fh, offset, buf, count, datatype,status),.,写文件,MPI_FILE_WRITE_AT(fh, offset, buf, count, datatype,status),.,组调用阻塞显式偏移并行文件读写,MPI_FILE_READ_AT_ALL(fh, offset,buf, count,dat
13、atype,status) 组调用,所有进程都执行了一次MPI_FILE_READ_AT MPI_FILE_WRITE_AT_ALL(fh, offset,buf, count,datatype,status) 组调用,所有进程都执行了一次MPI_FILE_WRITE_AT,.,非阻塞显式偏移并行文件读写,MPI_FILE_IREAD_AT(fh, offset,buf, count, datatype, request) MPI_FILE_IWRITE_AT(fh, offset,buf, count, datatype, request) 同非阻塞通信的基本含义,调用返回并不意味着操作的完
14、成,.,完成形式,MPI_WAIT MPI_TEST 与非阻塞通信的完成调用形式完全相同,.,非阻塞组调用显式偏移并行文件读写,具有显式的开始与结束形式 MPI_FILE_READ_AT_ALL_BEGIN(fh, offset, buf, count, datatype) 组调用读开始 MPI_FILE_READ_AT_ALL_END(fh, buf, status) 组调用读结束,.,写操作,MPI_FILE_WRITE_AT_ALL_BEGIN(fh, offset, buf, count, datatype) 组调用写开始 MPI_FILE_WRITE_AT_ALL_END(fh, b
15、uf, status) 组调用写结束,.,视口文件读写,特点:隐式文件指针 取文件的一部分形成视口,然后对该视口进行操作,每个进程把视口看作是整个文件,.,文件视口, 文件类型是在基本类型的基础上形成的自定义数据类型,.,文件视口的定义,MPI_FILE_SET_VIEW(fh, disp,etype, filetype, datarep,info),.,数据表示,native(效率最高,移植性最差) internal (效率一般,移植性一般) external32(效率最低,移植性最好),.,文件视口的定义(续),组调用 偏移的单位是字节 视口数据是连续的 文件句柄的含义转换,.,视口信息的
16、获取,MPI_FILE_GET_VIEW(fh, disp,etype, filetype, datarep) 得到偏移,基本类型,文件类型以及数据表示等信息,.,当前视口指针偏移,MPI_FILE_GET_POSITION(fh, offset) 文件视口句柄,视口偏移,.,绝对偏移,MPI_FILE_GET_BYTE_OFFSET(fh, offset, disp) 给定相对偏移offset,给出绝对偏移disp,.,阻塞方式的视口读写,MPI_FILE_READ(fh, buf,count,datatype, status) 从视口当前位置读数据 MPI_FILE_WRITE(fh, b
17、uf,count,datatype, status) 向视口当前位置写数据,.,阻塞方式的视口文件组调用,MPI_FILE_READ_ALL(fh, buf,count, datatype,status) 组内所有进程都读 MPI_FILE_WRITE_ALL(fh, buf,count, datatype,status) 组内所有进程都写,.,非阻塞视口文件读写,MPI_FILE_IREAD(fh, buf, count, datatype, request) 非阻塞视口文件读 MPI_FILE_IWRITE(fh, buf, count,datatype, request) 非阻塞视口文件
18、写,.,完成操作,MPI_WAIT MPI_TEST 同非阻塞的通信调用形式,.,非阻塞视口组调用,MPI_FILE_READ_ALL_BEGIN(fh, buf, count,datatype) 组内进程都执行非阻塞的读操作 MPI_FILE_READ_ALL_END(fh, buf, status) 组调用读操作完成,.,组调用写操作,MPI_FILE_WRITE_ALL_BEGIN(fh, buf, count,datatype) 组调用写操作开始 MPI_FILE_WRITE_ALL_END(fh, buf, status) 组调用写操作完成,.,共享文件操作,基于视口文件操作,但视口
19、文件指针只有一个,即共享指针 任何文件对指针的操作都同时影响其它的文件 各个进程对视口定义有什么要求?,.,移动共享视口指针,MPI_FILE_SEEK_SHARED(fh, offset, whence),.,阻塞共享文件读写,MPI_FILE_READ_SHARED(fh, buf,count, datatype,status) 共享读 MPI_FILE_WRITE_SHARED(fh, buf, count, datatype,status) 共享写,.,阻塞共享文件组读写,MPI_FILE_READ_ORDERED(fh, buf, count, datatype, status) 组
20、内进程依次读 MPI_FILE_WRITE_ORDERED(fh, buf, count, datatype, status) 组内进程依次写,.,非阻塞共享指针文件操作,MPI_FILE_IREAD_SHARED(fh, buf, count, datatype,request) 非阻塞读 MPI_FILE_IWRITE_SHARED(fh, buf, count,datatype,request) 非阻塞写,.,完成调用,MPI_WAIT MPI_TEST 同非阻塞通信形式,.,非阻塞共享文件组读写,MPI_FILE_READ_ORDERED_BEGIN(fh, buf, count, d
21、atatype) 启动非阻塞组读操作 MPI_FILE_READ_ORDERED_END(fh, buf, status) 完成非阻塞组读操作,.,写操作,MPI_FILE_WRITE_ORDERED_BEGIN(fh, buf, count, datatype) 启动非阻塞组调用写操作 MPI_FILE_WRITE_ORDERED_END(fh, buf, status) 完成非阻塞组调用写操作,.,分布式数组文件的存取,MPI_TYPE_CREATE_DARRAY(size,rank,ndims,array_of_gsizes,array_of_distribs, array_of_dargs,array_of_psizes,order,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年国家开发银行(青岛市分行)人员招聘笔试备考题库及答案详解
- 2026重庆百业兴物业管理有限责任公司招聘2人笔试参考题库及答案详解
- 2026年淮北市相山区中小学新任教师公开招聘10名笔试备考试题及答案详解
- 2026年衢州龙游县公开招聘卫生专业技术人员26人笔试模拟试题及答案详解
- 2026浙江台州市玉环市城更建设开发有限公司招聘编外人员3人笔试参考题库及答案详解
- 线上线下土特产销售合作协议范本
- 2026云南黄金矿业集团股份有限公司第一次招聘工作人员13人笔试备考题库及答案详解
- 2026河北石家庄市委党校(石家庄行政学院、石家庄市社会主义学院、河北正定干部学院)公开选聘专职教师14名笔试参考题库及答案详解
- 畜牧养殖场动物疫病防控合作协议
- 2026陕西旅游烹饪职业学院招聘6人笔试备考试题及答案详解
- 2026中国主题公园行业市场调研及消费趋势与投资机会研究报告
- 2026届陕西西安高考物理模拟卷(原卷版)
- 长期照护师职业技能鉴定考试复习题库(附答案)
- 2026年大学财务处招聘考试专业知识模拟题
- 2025年荣耀AI隐私安全白皮书
- 2026届山东省聊城市临清市重点达标名校中考押题生物预测卷含解析
- 太阳能光热发电课件
- 2026中复神鹰碳纤维西宁有限公司招聘40人考试参考试题及答案解析
- 关于取消原定采购订单的通知函8篇
- 围手术期营养支持指南
- 格力中央空调培训课件
评论
0/150
提交评论