- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六讲消息传递编程接口 MPI MPI 数据类型 MPI 数据类型 MPI 数据类型定义 举例 数据类型的大小 数据类型的上下界 数据类型的对界量 举例 两个特殊的数据类型 数据类型查询函数 新数据类型的创建 MPI_TYPE_CONTIGUOUS 举例 MPI_TYPE_VECTOR 举例 MPI_TYPE_HVECTOR MPI_TYPE_INDEXED MPI_TYPE_HINDEXED MPI_TYPE_INDEXED 数据类型的提交与释放 地址函数 数据的打包 数据的解包 * * 三、 MPI 数据类型 MPI 数据类型定义 MPI 数据类型的大小、上下界、域及相关函数 MPI 新数据类型的创建、提交与释放 MPI 数据的打包与解包 MPI 原始数据类型 MPI 消息传递通常只能处理连续存放的同一类型的数据 MPI 自定义数据类型 如果需要发送或接收具有复杂结构的数据时,可以使用自定义数据类型 使用自定义数据类型的好处: 有效减少消息传递次数,增大通信粒度,同时可以避免或减少消息传递时数据在内存中的拷贝 MPI 的数据类型只用于消息传递! MPI 数据类型由两个相同长度的序列组成:类型序列和位移序列 {t1, t2, t3, ..., tn} {d1, d2, d3, ..., dn} ti 的取值为基本数据类型 di 表示位移,取值为整数,以字节为单位 新建的数据类型称为复合数据类型 MPI 数据类型图 {(t1,d1),(t2,d2),(t3,d3), ..., (tn,dn)} 这个新的数据类型包含 n 个数据,其中第 i 个数据的数据类型为 ti,该数据离首地址的距离为 di 例:设数据类型 mytype 的数据类型图为 {(MPI_REAL,4),(MPI_REAL,12),(MPI_REAL,0)} 则下面的语句: real A(100) ... ... call MPI_SEND(A, 1, mytype, ... ) 发送的数据为 A(2), A(4), A(1) 数据类型的大小 该数据类型中包含的数据长度,即字节数 {(t1,d1),(t2,d2),(t3,d3), ..., (tn,dn)} sizeof(t1) + sizeof(t2) + ... + sizeof(tn) 设一个数据了下的类型图为 则它的大小为 例:设数据类型 mytype 的数据类型图为 {(real,4),(real,12),(real,0)} 则 mytype 的大小为 12 {(t1,d1),(t2,d2),(t3,d3), ..., (tn,dn)} 数据类型的下界:类型图中的最小位移,即 数据类型的上界: 数据类型的域 (extent) :上界 - 下届 原始数据类型的对界量:由编译系统决定 地址对界要求:一个数据类型在内存中所占的字节数必须是其对界量的整数倍 地址对界修正量:使得新建数据类型的域能被其对界量整除的最小非负整数 复合数据类型的对界量:其所包含的基本数据类型的对界量的最大值 例:假设 MPI_DOUBLE_PRECISION 和 MPI_INTEGER 的对界量均为 4,MPI_BYTE 的对界量为 1,考虑下面的数据类型 {(MPI_DOUBLE_PRECISION,0), (MPI_BYTE,12), (MPI_INTEGER,8)} 对界量为 ,上界为 ,下界为 ,域为 ,地址对界修正量为 。 4 16 0 16 3 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)} MPI_TYPE_EXTENT(datatype, extent) MPI_TYPE_SIZE(datatype, size) MPI_TYPE_UB(datatype, displacement) MPI_TYPE_LB(datatype, displacement) 详细用法见相关参考资料 新数据类型创建函数 MPI_TYPE_CONTIGUOUS MPI_TYPE_VECTOR、MPI_TYPE_HVECTOR MPI_TYPE_INDEXED、MPI_TYPE_HINDEXED MPI_TYPE_STRUCT
文档评论(0)