C04-MPI的扩展MPI-2.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C04-MPI的扩展MPI-2.ppt》由会员分享,可在线阅读,更多相关《C04-MPI的扩展MPI-2.ppt(89页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、MPI的扩展MPI-2,谭光明 副研究员 中国科学院计算技术研究所 国家智能计算机研究开发中心 计算机体系结构国家重点实验室(筹),MPI-1的不足,不支持进程个数的动态改变 不支持单边通信模式 不支持并行文件操作,应用需求,动态任务树 精确成型应用实例,MPI-2的解决方案,对通信域进行扩展 组内通信域 组间通信域 具体实现方式 动态派生进程(有父子关系) 独立进程间通信(C/S关系) Socket通信(转换socket通信),组间通信域的点到点通信,例子,MPI_SEND(buf,count,datatype,dest,tag,intercomm) 与组内通信的不同:1 dest的含义;2
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, intercomm),主进程组中动态进程的创建,MP
3、I_COMM_SPAWN(cmd,argv,maxprocs, info,root,comm,intercomm,aryerrcodes) 最多派生maxprocs个进程,root是参数检查的进程,派生进程组得到组间通信域,MPI_COMM_GET_PARENT(parent) 在派生进程组中调用 在初始化之后 三次同步 父进程同步 子进程之间同步 父子进程之间同步,源程序,主进程组程序(独立的MPI程序),派生进程组程序(独立的MPI程序),启动,创建多组子进程,MPI_COMM_SPAWN_MULTIPLE(count,cmdary,argvary,maxprocsary,infoary,
4、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),问题,客户端每次连接的端口可能是不同的,方案,服务端 建立特定名字和端口字符串的联系 M
5、PI_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_addr, origin_count, origin_datatype, target_rank, target_
7、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) 解决办法 窗口同步管理,窗口同步管理,栅栏方式 握手方式 锁方式,栅栏方式,MPI_WIN_FENCE(assert, win) assert = 0,窗口操作前,窗口操作完成,窗
9、口操作,示例,前后两次窗口操作互不干扰,握手方式,第一次握手,为窗口访问作准备 第二次握手,窗口访问完成,发起访问方的操作顺序,MPI_WIN_START(group, assert, win) 启动第一次握手(开始窗口访问) 窗口操作 MPI_WIN_COMPLETE(win) 启动第二次握手(结束窗口访问),接收访问方的操作过程,MPI_WIN_POST(group, assert, win) 启动第一次握手(准备窗口操作) 等待被访问 MPI_WIN_WAIT(win) 启动第二次握手(窗口操作结束),图示,锁方式,借鉴临界区的概念 加锁后只允许自己访问 开锁后将访问权让给别人,加锁语句
10、,MPI_WIN_LOCK(lock_type, rank, assert, win) 共享锁:允许其它的进程同时加共享锁 互斥锁:不允许其它的进程再加锁,开锁语句,MPI_WIN_UNLOCK(rank, win) 允许其它的进程加锁,图示,练习,请用单边通信重新实现Jacobi迭代的例子。 请写一个简单的动态进行创建的例子,并行文件I/O的分类,显式偏移的文件I/O 视口文件I/O 共享文件I/O,一些基本操作,并行文件打开,MPI_FILE_OPEN(comm, filename, amode, info, fh) 文件打开 组调用,amode必须都相同 fh是一个组句柄(与WIN类似)
11、 与用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_FILE_GET_GROUP(fh,group) 返回句柄fh对应的进程组group MPI_FILE_GET_AMODE(fh, amode) 返回打开文件时指定的模式,具有显式偏移的文件操作,阻塞显式偏移并行文件读写,M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c04 mpi 扩展 扩大
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内