PowerPoint 演示文稿

Similar documents
Linux Linux Linux


消息传递并行编程环境MPI.doc

目 录 参 考 材 料 1 第 一 章 预 备 知 识 高 性 能 并 行 计 算 机 系 统 简 介 微 处 理 器 的 存 储 结 构

模板

PowerPoint Presentation

PowerPoint 演示文稿

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

Department of Science and Engineering Computing School of Mathematics School Peking University October 9, 2007

Parallel Programming with MPI

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

Microsoft Word - 2CA13內文.doc

PowerPoint 演示文稿


07-1.indd

Guava学习之Resources

说 : 荀 子 极 偏 驳, 只 一 句 性 恶, 大 本 已 失 5 朱 熹 说 : 荀 扬 不 惟 说 性 不 是, 从 头 到 底 皆 不 识 6 采 取 的 都 是 这 种 理 论 框 架 另 一 种 理 论 框 架 始 于 20 世 纪 前 期, 这 便 是 诸 子 学 研 究 的 框 架

Department of Science and Engineering Computing School of Mathematics School Peking University October 9, 2007

(Microsoft Word - \251I\250D\245D\246W

! " # " " $ % " " # # " $ " # " #! " $ "!" # "# # #! &$! ( % "!!! )$ % " (!!!! *$ ( % " (!!!! +$ % " #! $!, $ $ $ $ $ $ $, $ $ "--. %/ % $ %% " $ "--/

Microsoft PowerPoint - 07 派生数据类型

Microsoft PowerPoint - KN002.ppt

四、實務實習課程之實習工作日誌(請貼上掃描檔)

第 一 篇 勞 動 契 約 阿 華 最 近 從 事 務 所 出 來 自 己 開 了 一 間 會 計 師 事 務 所, 原 本 想 要 一 個 人 做 就 好, 但 因 應 服 務 之 客 戶 逐 漸 增 加, 需 要 多 請 幾 位 來 幫 忙 處 理 會 計 相 關 之 業 務, 但 不 太 懂

数学分析(I)短课程 [Part 2] 4mm 自然数、整数和有理数

格式化字符串 Weifeng Sun School of Software, DLUT

Parallel Programming with MPI

入 学 考 试 重 点 考 查 学 生 的 基 础 专 业 知 识 基 本 实 验 操 作 技 能 独 立 思 考 和 动 手 能 力 笔 试 和 面 试 的 试 题 都 有 足 够 的 难 度, 以 利 择 优 录 取 新 录 取 的 研 究 生 第 一 次 见 面, 池 先 生 会 作 一 次

Outline USB Application Requirements Variable Definition Communications Code for VB Code for Keil C Practice

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

集 27. 臺 灣 貿 易 史 薛 化 元 戴 寶 村 3F 臺 灣 歷 史 的 鏡 與 窗 戴 寶 村 3/6F 樟 腦 鴉 片 與 專 賣 制 度 產 業 文 化 展 示 資 料 調 查 戴 寶 村 6F


目录 第一章 MPI 简介 消息传递编程的相关概念 分布式内存 消息传输 进程 消息传递库 发送 / 接收 同步 / 异步 阻塞

廚餘來電.doc

Chapter #

, , ,

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

PowerPoint 演示文稿

亮麗水顏

untitled


Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式]

技 术 文 件

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目 录(目录名)

Microsoft Word - 澎湖田調報告_璉謙組.doc

ISO JAB

江汉大学学报 表现的正是这种绿色的自然生态 总第 27卷 云俱黑 江 船 火 独 明 晓 看 红 湿 处 花 重 锦 官 城 古今中外 写春天的诗多得不可胜数 如何去进 这首诗以拟人化的手法写春雨的到来 从诗中所写 行选择 进行欣 赏 呢 我 以 为 主 要 要 注 意 以 下 三 个 春雨的 特

IDEO_HCD_0716

mpi

Microsoft PowerPoint - 6. 用户定义类型User-defined Datatypes.ppt [兼容模式]

投影片 1

課程名稱:國外旅遊概況

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

1 学习目标了解并掌握 MPI 的各种非阻塞通信形式及其作用, 并能运用 MPI 的非阻塞通信语句编写高级的并行程序 2 重点和难点非阻塞通信的语义特点, 如何运用非阻塞通信的特点来实现特定的功能和性能 3 学习方法所有的阻塞调用形式都有其相应的非阻塞调用形式, 此外非阻塞调用还有其特殊的接口形式

五 福 三 社 P2 新 版 個 資 法 已 於 2012 年 10 月 1 號 正 式 上 路, 其 適 用 對 象 包 括 了 自 然 人 ( 也 就 是 一 般 人 ) 法 人 ( 企 業 ) 或 其 他 任 何 3 人 以 上 的 團 體 對 公 司 企 業 而 言, 如 果 洩 露 消 費

OOP with Java 通知 Project 2 提交时间 : 3 月 21 日晚 9 点 作业提交格式 学习使用 文本编辑器 cmd, PowerShell (Windows), terminal(linux, Mac)

PTR89 应用程序编程接口 V1.00

目 录(目录名)

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

栏目:前沿

創 作 動 機 因 未 成 年 懷 孕 的 案 例 從 國 中 時 期 就 在 身 邊 屢 屢 發 生, 這 意 外 中 的 小 生 命 會 讓 一 個 人 或 說 是 一 對 父 母 的 人 生 產 生 劇 烈 衝 擊, 先 不 談 是 否 成 全 生 命 的 誕 生, 往 往 就 在 社 會 倫

求出所有的正整数 n 使得 20n + 2 能整除 2003n n 20n n n 20n n 求所有的正整数对 (x, y), 满足 x y = y x y (x, y) x y = y x y. (x, y) x y =

( ) 001 ( 131 ) : 1- ISBN X/I 1091 :

系统架构 - 模块划分 功能 状态机 H265 主要的模块 : 1. 顶层模块 H265ENC_top 包括 sys_ctrl,enc_core 及 fetch 三个模块 2. sys_ctrl 就是一个状态机, 控制 fetch 和 enc_core 中各子模块的工作 3. enc_core 编码

<4D F736F F F696E74202D20DFB7BAFBB560A147B27BA6E6A475B8EAA475AEC9A8EEABD7>

一九九六年 台灣人權報告

C++ 程式設計

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

无类继承.key

不 是 想 了 想 又 说, 身 体 有 点 不 舒 服, 过 来 看 看 哦, 怎 么 了? 许 是 出 于 职 业 习 惯, 谭 清 辰 脱 口 而 出 你 是 外 科 大 夫 吧? 妇 科 的 毛 病 你 也 能 治? 田 惜 菁 明 显 不 愿 意 继 续 这 个 话 题, 说 话 语 气

Bus Hound 5

第一部分 言语理解与表达

Microsoft Word - 新1-12.doc

操作指南 3/2015 利用 BSEND/BRCV 功能实现 S7-300/400 与 WinCC Professional 的大数据量交换 BSEND/BRCV, WinCC Professional, 原始数据

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

附件1

chap07.key

158 中 極 學 刊 一 前言 清末著名的改良戲曲 黑籍冤魂 原為清末小說家吳趼人寫的短篇小說 名 伶夏月珊將其稍易節目 並搬演於舞臺 由於劇情發人深省 反映社會之弊 故 引 起 當 時 熱 烈 的 迴 響 黑 籍 冤 魂 可 說 是 晚 清 啟 蒙 儀 式 中 最 為 重 要 的 片 段 之 一

Microsoft PowerPoint - string_kruse [兼容模式]

RxJava

投稿類別:其他類

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

C/C++语言 - C/C++数据

厦门创兴科技股份有限公司

科学计算的语言-FORTRAN95

c_cpp

幻灯片 1

FPGAs in Next Generation Wireless Networks WPChinese

2006跑馬記(上)

PowerPoint Presentation

ARM学习报告003——Bios源码分析.doc

OB1

instructions.PDF

推 薦 序 費 奇 玩 味 旅 遊 執 行 長 0 PAVILION

大綱介紹 MPI 標準介紹 MPI 的主要目標 Compiler & Run 平行程式 MPICH 程式基本架構 點對點通訊 函數介紹 集體通訊 函數介紹

Transcription:

第六讲 消息传递编程接口 MPI 三 MPI 数据类型 1

MPI 数据类型 MPI 数据类型定义 MPI 数据类型的大小 上下界 域及相关函数 MPI 新数据类型的创建 提交与释放 MPI 数据的打包与解包 2

MPI 数据类型 MPI 原始数据类型 MPI 消息传递通常只能处理连续存放的同一类型的数据 MPI 自定义数据类型 如果需要发送或接收具有复杂结构的数据时, 可以使用自定义数据类型 使用自定义数据类型的好处 : 有效减少消息传递次数, 增大通信粒度, 同时可以避免或减少消息传递时数据在内存中的拷贝 MPI 的数据类型只用于消息传递! 3

MPI 数据类型定义 MPI 数据类型由两个相同长度的序列组成 : 类型序列和位移序列 {t 1, t 2, t 3,..., t n } {d 1, d 2, d 3,..., d n } t i 的取值为基本数据类型 d i 表示位移, 取值为整数, 以字节为单位 新建的数据类型称为复合数据类型 MPI 数据类型图 {(t 1,d 1 ),(t 2,d 2 ),(t 3,d 3 ),..., (t n,d n )} 这个新的数据类型包含 n 个数据, 其中第 i 个数据的数据类 型为 t i, 该数据离首地址的距离为 d i 4

举例 例 : 设数据类型 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) 5

数据类型的大小 数据类型的大小 该数据类型中包含的数据长度, 即字节数设一个数据了下的类型图为 {(t 1,d 1 ),(t 2,d 2 ),(t 3,d 3 ),..., (t n,d n )} 则它的大小为 sizeof(t 1 ) + sizeof(t 2 ) +... + sizeof(t n ) 例 : 设数据类型 mytype 的数据类型图为 {(real,4),(real,12),(real,0)} 则 mytype 的大小为 12 6

数据类型的上下界 {(t 1,d 1 ),(t 2,d 2 ),(t 3,d 3 ),..., (t n,d n )} 数据类型的下界 : 类型图中的最小位移, 即 数据类型的上界 : 数据类型的域 (extent) : 上界 - 下届 7

数据类型的对界量 原始数据类型的对界量 : 由编译系统决定 复合数据类型的对界量 : 其所包含的基本数据类型的对界量的最大值 地址对界要求 : 一个数据类型在内存中所占的字节数必须是其对界量的整数倍 地址对界修正量 : 使得新建数据类型的域能被其对界量整除的最小非负整数 8

举例 例 : 假设 MPI_DOUBLE_PRECISION 和 MPI_INTEGER 的对界量均为 4,MPI_BYTE 的对界量为 1, 考虑下面的数据类型 {(MPI_DOUBLE_PRECISION,0), (MPI_BYTE,12), (MPI_INTEGER,8)} 4 16 0 对界量为, 上界为, 下界为, 16 3 域为, 地址对界修正量为 9

两个特殊的数据类型 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)} 10

数据类型查询函数 MPI_TYPE_EXTENT(datatype, extent) MPI_TYPE_SIZE(datatype, size) MPI_TYPE_UB(datatype, displacement) MPI_TYPE_LB(datatype, displacement) 详细用法见相关参考资料 11

新数据类型的创建 新数据类型创建函数 MPI_TYPE_CONTIGUOUS MPI_TYPE_VECTOR MPI_TYPE_HVECTOR MPI_TYPE_INDEXED MPI_TYPE_HINDEXED MPI_TYPE_STRUCT 新数据类型的提交 :MPI_TYPE_COMMIT 若使用新数据类型进行通信, 则必须先提交 过渡数据类型不用提交, 用完后就可直接释放 新数据类型的释放 :MPI_TYPE_FREE 数据的打包和解包 :MPI_PACK MPI_UNPACK 12

MPI_TYPE_CONTIGUOUS MPI_TYPE_CONTIGUOUS(count, oldtype, newtype) 连续复制 : 将原数据类型 oldtype 按顺序依次连续复制后, 得到一个新的数据类型 参数 C F77 IN count 复制个数 IN oldtype 旧数据类型 OUT newtype 新数据类型 int MPI_Type_contiguous(int count, MPI_Datatype oldtype, MPI_Datatype *newtype) MPI_TYPE_CONTIGUOUS(COUNT, OLDTYPE, NEWTYPE, IERR) INTEGER COUNT, OLDTYPE, NEWTYPE, IERR 注 :oldtype 可以是原始数据类型, 也可以是已创建的复合数据类型 13

举例 integer n, type1 parameter (n=100) real a(n)............ 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) 14

MPI_TYPE_VECTOR MPI_TYPE_VECTOR(count,blocklen,stride, oldtype, newtype) 创建向量数据类型 : 先连续复制 blocklen 个 oldtype 类型 的数据, 形成一个数据块 ; 再通过等间隔地复制 count 个该 数据块而形成新的数据类型 ; 相邻两个数据块的起始位置的位移相差为 stride*extent(oldtype) 个字节 C F77 int MPI_Type_vector(int count,int blocklen, int stride, MPI_Datatype oldtype, MPI_Datatype *newtype) MPI_TYPE_VECTOR(COUNT, BLOCKLEN, STRIDE, OLDTYPE, NEWTYPE, IERR) INTEGER COUNT,BLOCKLEN,STRIDE, OLDTYPE, NEWTYPE, IERR 15

举例 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,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 的对角线? 16

MPI_TYPE_HVECTOR MPI_TYPE_HVECTOR(count,blocklen,stride, oldtype, newtype) 功能同 MPI_TYPE_VECTOR 唯一区别为这里的 stride 以字节为单位 17

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 的扩展, 区别是每个数据块的长度可以不同, 数据块之间的间隔也可以不同 18

MPI_TYPE_HINDEXED MPI_TYPE_HINDEXED(count,array_of_blocklens, array_of_disps,oldtype,newtype) 功能同 MPI_TYPE_INDEXED 唯一区别为这里的 array_of_disps 以字节为单位 19

MPI_TYPE_INDEXED MPI_TYPE_STRUCT(count,array_of_blocklens, array_of_disps,array_of_types,newtype) 创建结构数据类型 : 与 MPI_TYPE_HINDEXED 的区别在于每个数据块的数据类型可以不同 这里的 array_of_disps 以字节为单位 该函数是最一般的新数据类型的构造函数, 也是使用最广泛的一个, 正确使用此函数在实际应用中非常重要 20

数据类型的提交与释放 新数据类型的提交 MPI_TYPE_COMMIT(newdatatype) 新数据类型的释放 MPI_TYPE_FREE(newdatatype) 21

地址函数 MPI_ADDRESS(location, address) 返回指定变量在内存中的 绝对 地址 C F77 int MPI_Address(void *location, MPI_Aint *address) MPI_ADDRESS(LOCATION, ADDRESS, IERR) <type> LOCATION(*) INTEGER ADDRESS, IERR 22

数据的打包 MPI_PACK(inbuf,incount,datatype,outbuf, outsize, position, comm) 将缓冲区 inbuf 中的 incount 个类型为 datatype 的数据进行打包, 打包后的数据放在缓冲区 outbuf 中 outsize 给出的是 outbuf 的总长度 ( 字节数 ),comm 是发送打包数据时将使用的通信器 position 是打包缓冲区中的位移, 每次打包第一次调用 MPI_PACK 时用户应该将其置为 0, 随后 MPI_PACK 将自动修改它, 使得它总是指向打包缓冲区中尚未使用部分的起始位置 每次调用 MPI_PACK 后的 position 实际上就是已打包数据的总长度 通过连续几次对不同位置的数据进行打包, 就可以将不连续的数据放到一个连续的空间中 23

数据的解包 MPI_UNPACK(inbuf,insize,position,outbuf, outcount,datatype,comm) 是 MPI_PACK 的逆操作 : 它从 inbuf 中拆包 outcount 个类型为 datatype 的数据到 outbuf 中 函数的各项参数与 MPI_PACK 类似, 只不过这里的 inbuf 和 insize 对应于 MPI_PACK 中的 outbuf 和 outsize, 而 outbuf 和 outcount 则对应于 MPI_PACK 中的 inbuf 和 incount 24