華柬师免天学|数学科学学院 School of Mathematical Sciences,East China Normal University 消息传递编程接口MPI (三)数据类型 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 消息传递编程接口 MPI (三)数据类型
华东师范大学数学科学学院 目录页 School of Mathematical Sciences,ECNU Contents MPI数据类型 2 数据类型的大小、上下界和长度 3 数据类型的创建提交与释放 数据的打包与解包 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 目录页 Contents 华东师范大学 数学科学学院 School of Mathematical Sciences, ECNU http://math.ecnu.edu.cn/~jypan 1 2 MPI 数据类型 数据类型的大小、上下界和长度 3 数据类型的创建提交与释放 4 数据的打包与解包
华东师范大学数学科学学院 目录页 School of Mathematical Sciences,ECNU Contents MPI数据类型 为什么要自定义数据类型 1 MPI数据类型 数据类型图 2 大小、上下界和长度 3 创建、提交与释放 4 数据的打包与解包 http://math.ecnu.edu.cn/-jypan
http://math.ecnu.edu.cn/~jypan 目录页 Contents 华东师范大学 数学科学学院 School of Mathematical Sciences, ECNU http://math.ecnu.edu.cn/~jypan 1 2 MPI 数据类型 1 MPI 数据类型 3 大小、上下界和长度 创建、提交与释放 为什么要自定义数据类型 数据类型图 4 数据的打包与解包
为什么要自定义数据类型 MPI消息传递通常只能处理连续存放的同一类型的数据 MPI自定义数据类型 ●如果需要传递具有复杂结构的数据,可以使用自定义数据类型 ●1 使用自定义数据类型的好处:有效减少消息传递次数,增大通信粒度, 同时可以避免或减少消息传递时数据在内存中的拷贝。 注意:MPI的数据类型主要用于消息传递! http://math.ecnu.edu.cn/~jypan 4
http://math.ecnu.edu.cn/~jypan 4 为什么要自定义数据类型 MPI 消息传递通常只能处理连续存放的同一类型的数据 如果需要传递具有复杂结构的数据,可以使用自定义数据类型 使用自定义数据类型的好处:有效减少消息传递次数,增大通信粒度, 同时可以避免或减少消息传递时数据在内存中的拷贝。 MPI 自定义数据类型 † 注意:MPI 的数据类型主要用于消息传递!
MPI数据类型图 MPI数据类型的组成 ●由两个相同长度的序列组成:类型序列和位移序列 {ti,t2,t3,...,tn} {d,d2,d3,...,dn} 其中t:的取值为基本数据类型,d;代表位移,取值为整数,以字节为单 位,新建的数据类型称为复合数据类型。 {(t1,d1),(t2,d2),...,(tn,dn)} MPI数据类型图 该类型图所代表的数据类型包含n个数据,其中第ⅰ个数据的数据类型为 ti,该数据离首地址的距离为d; http://math.ecnu.edu.cn/~jypan 5
http://math.ecnu.edu.cn/~jypan 5 MPI 数据类型图 由两个相同长度的序列组成:类型序列和位移序列 其中 ti 的取值为基本数据类型,di 代表位移,取值为整数,以字节为单 位,新建的数据类型称为复合数据类型。 MPI 数据类型的组成 {t1, t2, t3, ..., tn} {d1, d2, d3, ..., dn} {(t1,d1),(t2,d2), ..., (tn,dn)} MPI 数据类型图 该类型图所代表的数据类型包含 n 个数据,其中第 i 个数据的数据类型为 ti,该数据离首地址的距离为 di
数据类型举例 例:设数据类型mytype的数据类型图为 {(MPI_FLOAT,4),(MPI_FLOAT,12),(MPI_FLOAT,0)} 则下面的语句: float A(100) MPI Send(A,1,mytype,···) 发送的数据为 A(2),A(4),A(1) http://math.ecnu.edu.cn/~jypan 6
http://math.ecnu.edu.cn/~jypan 6 数据类型举例 例:设数据类型 mytype 的数据类型图为 {(MPI_FLOAT,4),(MPI_FLOAT,12),(MPI_FLOAT,0)} 则下面的语句: 发送的数据为 float A(100) ... ... MPI_Send(A, 1, mytype, ... ) A(2), A(4), A(1)
华东师范大学数学科学学院 目录页 School of Mathematical Sciences,ECNU Contents 2 数据类型的大小和域 数据类型的大小 1 数学类型的定义 数据类型的上下界和域 2 大小、上下界和域 数据类型查询函数 3 创建、提交与释放 4 数据的打包与解包 http://math.ecnu.edu.cn/-jypan
http://math.ecnu.edu.cn/~jypan 目录页 Contents 华东师范大学 数学科学学院 School of Mathematical Sciences, ECNU http://math.ecnu.edu.cn/~jypan 1 2 数学类型的定义 2 数据类型的大小和域 3 大小、上下界和域 创建、提交与释放 数据类型的大小 数据类型的上下界和域 数据类型查询函数 4 数据的打包与解包
数据类型的大小 数据类型的大小:包含的数据长度,即字节数。 设一个数据的类型图为 {(t1d),(t2d2),(t3d3),,(tndn) 则它的大小为 sizeof(t])+sizeof(t2)+...+sizeof(t) Example 例:如果mytype的数据类型图为: {(MPI_FLOAT,4),(MPI_FLOAT,12),(MPI_FLOAT,0)} 则mytype的大小为12 http://math.ecnu.edu.cn/~jypan 8
http://math.ecnu.edu.cn/~jypan 8 数据类型的大小 数据类型的大小:包含的数据长度,即字节数。 {(t1,d1),(t2,d2),(t3,d3), ..., (tn,dn)} sizeof(t1) + sizeof(t2) + ... + sizeof(tn) 设一个数据的类型图为 则它的大小为 例:如果 mytype 的数据类型图为: {(MPI_FLOAT,4),(MPI_FLOAT,12),(MPI_FLOAT,0)} 则 mytype 的大小为 12 Example
数据类型的域 {(t1d1),(t2,d2),(t3,d3),.·,(tndn) 数据类型的下界:类型图中的最小位移,即 min {di} 1<i<n ▣ 数据类型的上界:max{d+sizeof(ti)}+e 1<i<n 其中e为地址对界修正量 数据类型的长度(extent)=上界-下界 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 9 数据类型的域 数据类型的下界:类型图中的最小位移,即 数据类型的上界: {(t1,d1),(t2,d2),(t3,d3), ..., (tn,dn)} 其中 𝜖𝜖 为地址对界修正量 数据类型的长度(extent)= 上界 − 下界
数据类型的对界量 数据类型的对界量 ●原始数据类型的对界量:由编译系统决定 ●复合数据类型的对界量:其所包含的基本数据类型的对界量的最大值 ·地址对界要求: 一个数据类型在内存中所占的字节数必须是其对界量的整数倍 ●地址对界修正量: 使得新建数据类型的长度(extent)能被其对界量整除的最小非负整数 http://math.ecnu.edu.cn/~jypan 10
http://math.ecnu.edu.cn/~jypan 10 数据类型的对界量 原始数据类型的对界量:由编译系统决定 复合数据类型的对界量:其所包含的基本数据类型的对界量的最大值 地址对界要求: 一个数据类型在内存中所占的字节数必须是其对界量的整数倍 地址对界修正量: 使得新建数据类型的长度(extent)能被其对界量整除的最小非负整数 数据类型的对界量