乡 曙光 计算,改变您的现在 DAWNING 与X3H5的关系 X3H5是ANS/X3授权的小组委员会,主要目的是在PcF(the Parallel computing F。rum)工作的基础上,发展并行计算的一个 ANSI标准PcF是一非正式的工业组织,虽在D循环的并行化方法 的标准化方面做一些工作但在起草拟了一个标准后就草草收场。 OpenMP专门针对这类并行化问题,并完成了这项工作,同时得到工 业界的广泛支持。 2006年4月 共享存储编程 26/108
2006年4月 共享存储编程 26/108 与X3H5的关系 X3H5是ANSI/X3授权的小组委员会,主要目的是在PCF(the Parallel Computing Forum)工作的基础上,发展并行计算的一个 ANSI标准. PCF是一非正式的工业组织,虽在DO循环的并行化方法 的标准化方面做一些工作,但在起草拟了一个标准后就草草收场. OpenMP专门针对这类并行化问题,并完成了这项工作,同时得到工 业界的广泛支持
乡 曙光 计算,改变您的现在 DAWNING ANSX3H5共享编程标准 概念性的编程模型(ANSl标准(1993) 没有任何商品化的共享存储器系统依附于X3H5但X3H5的基本概念影 响以后共享存储器系统的并行编程(些基本概念在 penMP均出现刂 X3H5支持 CFortran77以及 Fortran90语言 X3H5规定的基本的并行结构用于并行性表述 并行块(分散任务 Work Sharing paral 并行循环 end parallel 单进程 sections pao psIn end sections end pao end single 2006年4月 共享存储编程 27/108
2006年4月 共享存储编程 27/108 ANSI X3H5共享编程标准 概念性的编程模型(ANSI标准(1993)) 没有任何商品化的共享存储器系统依附于X3H5,但X3H5的基本概念影 响以后共享存储器系统的并行编程.(一些基本概念在OpenMP均出现!) X3H5支持C,Fortran77以及Fortran90语言. X3H5规定的基本的并行结构用于并行性表述: 并行块(分散任务Work Sharing) 并行循环 单进程 parallel { … } end parallel psections { … } end psections pdo { … } end pdo psingle { … } end psingle
乡 曙光 计算,改变您的现在 DAWNING X3H5编程实例 program main !程序以顺序模式执行 A A只由基本线程执行 parallel !转换成并行模式 线程 B !B为每个组员所复制 sections !并行块开始 隐式 barrier section !一个组员执行c section D !另一个组员执行D 隐式 barrier end sections!等待c和D都结束 single 暂时转换成顺序模式 E E只能被一个组员执行 隐式 barrier end single !转回并行模式 1:2)F(3:4)F(5:6 pdo 11, 6 !并行do循环开始 无隐式 barrier F() !各线程分担循环任务 end pdo no wait无隐式路障同步 G !更多的复制代码 隐式 barrio end parallel !结束并行模式 H H !根进程执行H !更多的并行构造 各线程以负载平衡方式分担任务 end 可能为F(1:1),F(2:2)2F(36)
2006年4月 共享存储编程 28/108 X3H5编程实例 program main !程序以顺序模式执行 A !A只由基本线程执行 parallel !转换成并行模式 B !B为每个组员所复制 psections !并行块开始 section C !一个组员执行C section D !另一个组员执行D end psections !等待C和D都结束 psingle 暂时转换成顺序模式 E !E只能被一个组员执行 end psingle !转回并行模式 pdo I=1,6 !并行do循环开始 F(i) !各线程分担循环任务 end pdo no wait !无隐式路障同步 G !更多的复制代码 end parallel !结束并行模式 H !根进程执行H … !更多的并行构造 end 线程 P Q R B B E C F(1:2) F(3:4) F(5:6) G G G H 隐式barrier 隐式barrier 隐式barrier 无隐式barrier 隐式barrier B D 各线程以负载平衡方式分担任务 可能为:F(1:1),F(2:2),F(3:6)…
乡 曙光 计算,改变您的现在 DAWNING X3H5例程执行过程描述 程序以顺序方式启动,此时只有一个初始化 线程称为基本线程或主线程当程序遇到 parallel时,通过派生多个子线程转换为并 顺序执行 行执行模式(线程数隐式决定)基本线程与 它的子线程形成一个组,所有组员并行处理 fork 后继并行代码直至 end parallel.然后程 序转为顺序模式只有基本线程继续执行 子线程遇到内部并行或任务分担构造时,可 以继续派生其子线程,从而成为一个新组的 并行执行 基本线程 线程间同步通信与交互 barrier 隐式路障 parallel, end parallel, end pdo或 end single处隐式 顺序执行 barrier.如果不需,则加 no wait; 各处理机通过全局变量通信,通过私有 变量封装数据 2006年4月 共享存储编程 29/108
2006年4月 共享存储编程 29/108 X3H5例程执行过程描述 程序以顺序方式启动,此时只有一个初始化 线程,称为基本线程或主线程.当程序遇到 parallel时,通过派生多个子线程转换为并 行执行模式(线程数隐式决定).基本线程与 它的子线程形成一个组.所有组员并行处理 后继并行代码,直至end parallel.然后程 序转为顺序模式,只有基本线程继续执行. 子线程遇到内部并行或任务分担构造时,可 以继续派生其子线程,从而成为一个新组的 基本线程. 线程间同步,通信与交互 隐式路障:parallel, end parallel, end pdo或end psingle处隐式 barrier.如果不需,则加no wait; 各处理机通过全局变量通信,通过私有 变量封装数据 fork …... barrier … 顺序执行 顺序执行 并行执行
乡 曙光 计算,改变您的现在 DAWNING OpenMP:并行模型 Fork-Join并行模式 主线程根据需要创建一组子线程进行工作分担. 可对串行程序进行逐步并行化 主线程 并行执行区域 2006年4月 共享存储编程 30/108
2006年4月 共享存储编程 30/108 OpenMP: 并行模型 Fork-Join 并行模式: 主线程根据需要创建一组子线程进行工作分担. 可对串行程序进行逐步并行化. 主线程 并行执行区域