基本知识 并行编程模型 一是底层体系结构与上层应用程序之间的桥梁 向上隐藏并行处理器的细节,并向程序员提供表 达并行的方法 向下充分利用硬件资源,高效且正确地完成应用 需求 任务划分、任务映射、数据分布、通信和同步是 设计并行编程模型时需要考虑的五个关键要素 并行编程模型的另一种说法 并行编程模型是编写可被编译和运行的并行程序 的一种抽象并行机器模型
基 本 知 识 • 并行编程模型 – 是底层体系结构与上层应用程序之间的桥梁 – 向上隐藏并行处理器的细节,并向程序员提供表 达并行的方法 – 向下充分利用硬件资源,高效且正确地完成应用 需求 – 任务划分、任务映射、数据分布、通信和同步是 设计并行编程模型时需要考虑的五个关键要素 并行编程模型的另一种说法 – 并行编程模型是编写可被编译和运行的并行程序 的一种抽象并行机器模型 12
基本知识 并行编程模型的分类 1.按进程交互的机制来分 共享变量模型:进程共享可以异步地读写的全局 变量 消息传递模型:进程通过相互传递消息来交换数据 隐式模型:进程之间交互是用户不可访问的 2.按问题分解 任务并行:每个处理器执行不同的任 数据并行:把大任务分解成若干个相同的子任务 3
基 本 知 识 • 并行编程模型的分类 1. 按进程交互的机制来分 – 共享变量模型:进程共享可以异步地读写的全局 变量 – 消息传递模型: 进程通过相互传递消息来交换数据 – 隐式模型:进程之间交互是用户不可访问的 2. 按问题分解 – 任务并行:每个处理器执行不同的任务 – 数据并行:把大任务分解成若干个相同的子任务 3. … … 13
内存一致性模型 ·并行计算给共享变量读写带来的问题 串行程序 并行程序 x的初值为0 x在共享存储中,初值为① X=x+1 x=x+1‖x=x+2 x=X+2 (注:Ⅱ分隔两段并行代码) 结果:x=3 x可能但并非一定是3 为什么? 在一个进程执行x=x+1期间,共享的x有可能被 其它进程读写
内存一致性模型 • 并行计算给共享变量读写带来的问题 串行程序 并行程序 x的初值为0 x在共享存储中,初值为0 x = x + 1 x = x + 1 || x = x + 2 x = x + 2 (注:|| 分隔两段并行代码) 结果 :x = 3 x可能但并非一定是3 为什么? 在一个进程执行x = x +1期间,共享的x有可能被 其它进程读写 14
内存一致性模型 ·并行计算给共享变量读写带来的问题 并行程序x=x+1‖x=x+2x结果不等于3的情况 x=>R X=>R X=>R R+1=>R R+2=>R X=>R R=>X R+1=>R R=>x R+2=>R R=>x R=>x 结果:x=1 结果:x=2 ·x=x+1的执行:取x到寄存器R,R增1,把R存到x ·各处理器有各自的R,不共享;x是共享的 15
内存一致性模型 • 并行计算给共享变量读写带来的问题 并行程序 x = x + 1 || x = x + 2 x结果不等于3的情况 x => R x => R x => R R+1 => R R+2 => R x => R R => x R+1 => R R => x R+2 => R R => x R => x 结果:x = 1 结果:x = 2 • x = x +1的执行:取x到寄存器R, R增1, 把R存到x • 各处理器有各自的R,不共享;x是共享的 15 t
内存一致性模型 ·内存一致性模型 内存一致性模型(memory consistency model)描述 程序员和系统之间的一种协议。若程序员书写的 软件遵循内存操作的专门规则,系统就保证内存 表现得有规律并且内存操作的结果可预测 专门规则描述的是,在有共享内存的多处理器系 统上,在它们读写共享内存操作的可能执行顺序 中,哪些顺序是正确的 有些模型的专门规则对软件只有少量限制,而有 些则使普通编程几乎成为不可能。规则限制少的 模型没有限制多的模型执行效果好
内存一致性模型 • 内存一致性模型 – 内存一致性模型(memory consistency model)描述 程序员和系统之间的一种协议。若程序员书写的 软件遵循内存操作的专门规则,系统就保证内存 表现得有规律并且内存操作的结果可预测 – 专门规则描述的是,在有共享内存的多处理器系 统上,在它们读写共享内存操作的可能执行顺序 中,哪些顺序是正确的 – 有些模型的专门规则对软件只有少量限制,而有 些则使普通编程几乎成为不可能。规则限制少的 模型没有限制多的模型执行效果好 16