




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,第六讲消息传递编程接口 MPI,三、 MPI 数据类型,2,MPI 数据类型,MPI 数据类型定义 MPI 数据类型的大小、上下界、域及相关函数 MPI 新数据类型的创建、提交与释放 MPI 数据的打包与解包,3,MPI 数据类型,MPI 原始数据类型,MPI 消息传递通常只能处理连续存放的同一类型的数据,MPI 的数据类型只用于消息传递!,4,MPI 数据类型定义,MPI 数据类型由两个相同长度的序列组成:类型序列和位移序列,t1, t2, t3, ., tn,d1, d2, d3, ., dn,ti 的取值为基本数据类型 di 表示位移,取值为整数,以字节为单位 新建的数据类型称为复合
2、数据类型,5,举例,例:设数据类型 mytype 的数据类型图为,(MPI_REAL,4),(MPI_REAL,12),(MPI_REAL,0),6,数据类型的大小,数据类型的大小,该数据类型中包含的数据长度,即字节数,(t1,d1),(t2,d2),(t3,d3), ., (tn,dn),sizeof(t1) + sizeof(t2) + . + sizeof(tn),设一个数据了下的类型图为,则它的大小为,例:设数据类型 mytype 的数据类型图为,(real,4),(real,12),(real,0),则 mytype 的大小为 12,7,数据类型的上下界,(t1,d1),(t2,d2
3、),(t3,d3), ., (tn,dn),数据类型的下界:类型图中的最小位移,即,数据类型的上界:,数据类型的域 (extent) :上界 下届,8,数据类型的对界量,原始数据类型的对界量:由编译系统决定,地址对界要求:一个数据类型在内存中所占的字节数必须是其对界量的整数倍,地址对界修正量:使得新建数据类型的域能被其对界量整除的最小非负整数,复合数据类型的对界量:其所包含的基本数据类型的对界量的最大值,9,举例,例:假设 MPI_DOUBLE_PRECISION 和 MPI_INTEGER 的对界量均为 4,MPI_BYTE 的对界量为 1,考虑下面的数据类型,(MPI_DOUBLE_PRE
4、CISION,0), (MPI_BYTE,12), (MPI_INTEGER,8),对界量为 ,上界为 ,下界为 ,域为 ,地址对界修正量为 。,4,16,0,16,3,10,两个特殊的数据类型,MPI_LB、MPI_UB,伪数据类型,大小为 0,它们的作用:人工指定新建数据类型的上下界,若数据类型中含 MPI_LB,则下界定义为 MPI_LB 的位移的最小值; 若数据类型中含 MPI_UB,则上界定义为 MPI_UB 的位移的最大值;,例:下面的数据类型的下界为 -4,(MPI_REAL,4), (MPI_LB,12), (MPI_REAL,0), (MPI_LB,-4),11,数据类型查询
5、函数,MPI_TYPE_EXTENT(datatype, extent),MPI_TYPE_SIZE(datatype, size),MPI_TYPE_UB(datatype, displacement),MPI_TYPE_LB(datatype, displacement),详细用法见相关参考资料,12,新数据类型的创建,新数据类型创建函数,MPI_TYPE_CONTIGUOUS MPI_TYPE_VECTOR、MPI_TYPE_HVECTOR MPI_TYPE_INDEXED、MPI_TYPE_HINDEXED MPI_TYPE_STRUCT,新数据类型的提交:MPI_TYPE_COMMI
6、T,若使用新数据类型进行通信,则必须先提交 过渡数据类型不用提交,用完后就可直接释放,新数据类型的释放:MPI_TYPE_FREE,数据的打包和解包:MPI_PACK、MPI_UNPACK,13,MPI_TYPE_CONTIGUOUS,MPI_TYPE_CONTIGUOUS(count, oldtype, newtype),连续复制:将原数据类型 oldtype 按顺序依次连续复制后,得到一个新的数据类型,注:oldtype 可以是原始数据类型,也可以是已创建的复合数据类型。,14,举例,integer n, type1 parameter (n=100) real a(n) . . . .
7、call MPI_TYPE_CONTIGUOUS(n,MPI_REAL,type1,ierr) call MPI_TYPE_COMMIT(type1,ierr) call MPI_SENDRECV_REPLACE(a,1,type1,dst,111,src, 111,MPI_COMM_WORLD,status,ierr) . .,上面的消息传递等价于,call MPI_SENDRECV_REPLACE(a,100,MPI_REAL,dst,111, src,111,MPI_COMM_WORLD,status,ierr),15,MPI_TYPE_VECTOR,MPI_TYPE_VECTOR(co
8、unt,blocklen,stride, oldtype, newtype),创建向量数据类型:先连续复制 blocklen 个 oldtype 类型的数据,形成一个数据块;再通过等间隔地复制 count 个该数据块而形成新的数据类型;相邻两个数据块的起始位置的位移相差为 stride*extent(oldtype) 个字节。,16,举例,integer n, type1 parameter (n=100) real A(n,n) . . . . call MPI_TYPE_VECTOR(n,1,n,MPI_REAL,type1,ierr) call MPI_TYPE_COMMIT(type1
9、,ierr) call MPI_SEND(A,1,type1,dst,.) . .,上面发送的是 A 的第一行。大家看看下面发送的是什么?,call MPI_TYPE_VECTOR(n-2,n-2,n,MPI_REAL,type1,ierr) call MPI_TYPE_COMMIT(type1,ierr) call MPI_SEND(A(2,2),1,type1,dst,.),思考:怎样发送 A 的对角线?,17,MPI_TYPE_HVECTOR,MPI_TYPE_HVECTOR(count,blocklen,stride, oldtype, newtype),功能同 MPI_TYPE_VE
10、CTOR 唯一区别为这里的 stride 以字节为单位,18,MPI_TYPE_INDEXED,MPI_TYPE_INDEXED(count,array_of_blocklens, array_of_disps,oldtype,newtype),创建索引数据类型:该函数生成的新数据类型由 count 个数据块构成,第 i 个数据块包含 array_of_bloklens(i) 个连续存放的 oldtype,第 i 个数据块与首地址的偏移量(字节数)为 array_of_disps(i)*extent(oldtype)。,可以看作是 MPI_TYPE_VECTOR 的扩展,区别是每个数据块的长度
11、可以不同,数据块之间的间隔也可以不同。,19,MPI_TYPE_HINDEXED,MPI_TYPE_HINDEXED(count,array_of_blocklens, array_of_disps,oldtype,newtype),功能同 MPI_TYPE_INDEXED 唯一区别为这里的 array_of_disps 以字节为单位,20,MPI_TYPE_INDEXED,MPI_TYPE_STRUCT(count,array_of_blocklens, array_of_disps,array_of_types,newtype),创建结构数据类型:与 MPI_TYPE_HINDEXED 的
12、区别在于每个数据块的数据类型可以不同。这里的 array_of_disps 以字节为单位,该函数是最一般的新数据类型的构造函数,也是使用最广泛的一个,正确使用此函数在实际应用中非常重要,21,数据类型的提交与释放,新数据类型的提交,新数据类型的释放,MPI_TYPE_COMMIT(newdatatype),MPI_TYPE_FREE(newdatatype),22,地址函数,MPI_ADDRESS(location, address),返回指定变量在内存中的 “绝对” 地址,23,数据的打包,MPI_PACK(inbuf,incount,datatype,outbuf, outsize, po
13、sition, comm),将缓冲区 inbuf 中的 incount 个类型为 datatype 的数据进行打包,打包后的数据放在缓冲区 outbuf 中。outsize 给出的是 outbuf 的总长度(字节数),comm 是发送打包数据时将使用的通信器。 position 是打包缓冲区中的位移,每次打包第一次调用 MPI_PACK 时用户应该将其置为 0,随后 MPI_PACK 将自动修改它,使得它总是指向打包缓冲区中尚未使用部分的起始位置。每次调用 MPI_PACK 后的 position 实际上就是已打包数据的总长度。通过连续几次对不同位置的数据进行打包,就可以将不连续的数据放到一个连续的空间中,24,数据的解包,MPI_UNPACK(inbuf,insize,position,outbuf, outcount,dat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 会议纪要整 理与发布流程
- 主要发展成就与经验分享
- 七夕用户参与式营销
- 临泉县城区初中校园体育文化建设的研究
- 结构框架:行业概述市场分析技术特点发展前景
- 北师大说课课件下载
- 2024年合成氟金云母单晶片项目项目投资需求报告代可行性研究报告
- 智能旅游背景下旅游行业安全问题研究
- 老年人在线教育新模式探讨
- 小学生作文课件
- 产品可追溯流程图图
- Unit4Where'smyschoolbagSectionB(3a~SelfCheck)教学设计人教版英语七年级上册
- 脑卒中高危人群筛查和综合干预表
- 《旅游学概论》第四章
- 中国古典小说巅峰:四大名著鉴赏学习通课后章节答案期末考试题库2023年
- 教师职业素养精选ppt
- 轨枕工序安全操作规程
- 2021年消防继续教育试题汇总及答案
- GA 255-2022警服长袖制式衬衣
- JJF 1915-2021倾角仪校准规范
- GB/T 15382-2021气瓶阀通用技术要求
评论
0/150
提交评论