790 likes | 1.04k Views
并行计算基础. 唐玉华、徐 新 海 计算机学院 611 教研室. 课程介绍. 并行计算基础 面向信息大类本科学员的研讨课 为什么要开 / 为什么要学? 生活已经进入并行时代 搞科研需要并行计算 科学研究的三种方法:理论、实验、 计算 很多 研究都需要大规模并行计算 作为一名国防科大的理工科学员 银河、天河. 课程介绍. 研讨课 20 学时: 8 课堂讲授 +8 实验 +2 研讨 +2 报告 了解知识 并行计算相关概念 并行计算典型体系结构和编程模型 并行计算的问题及对策 掌握方法 熟练使用 MPI 库进行并行编程 远程使用超级计算机平台
E N D
并行计算基础 唐玉华、徐 新 海 计算机学院 611教研室
课程介绍 • 并行计算基础 • 面向信息大类本科学员的研讨课 • 为什么要开/为什么要学? • 生活已经进入并行时代 • 搞科研需要并行计算 • 科学研究的三种方法:理论、实验、计算 • 很多研究都需要大规模并行计算 • 作为一名国防科大的理工科学员 • 银河、天河 计算机程序设计
课程介绍 • 研讨课 • 20学时:8课堂讲授+8实验+2研讨+2报告 • 了解知识 • 并行计算相关概念 • 并行计算典型体系结构和编程模型 • 并行计算的问题及对策 • 掌握方法 • 熟练使用MPI库进行并行编程 • 远程使用超级计算机平台 • 锻炼能力 • 编程求解问题、演示报告、撰写论文 计算机程序设计
课程介绍 • 教学内容 • 并行计算概述(2学时) • 并行计算机体系结构与编程模型(2学时) • MPI并行程序设计(4学时+4学时) • 并行问题研讨(2学时+4学时) • 学生报告(2学时) • 考核形式 • 编程作业30%+演示报告30%+小论文40% • 上课不到或作业不完成扣5分 计算机程序设计
课程介绍 • 参考资料 • 并行程序设计导论(英文版),Pacheco(美), 机械工业出版社,2011 • Principles of Parallel Programming, Calvin Lin et al. 机械工业出版社影印,2008 • 高性能计算并行编程技术—MPI并行程序设计,都志辉著. 清华大学出版社,2001 • 任课教员 • 唐玉华研究员 • 徐新海助研:13574846588,xuxinhai@gfkd.mtn • 辅导教员 • 郭晓威博士:13874946515,guoxiaowei@gfkd.mtn 计算机程序设计
第一讲 并行计算概述 并行计算基础
本讲主要内容 • Why并行计算 • 并行计算的概念与要素 • 并行计算机的发展 • 并行计算的度量 并行计算基础
身边的并行计算 • 超级计算机——TH-1A • 14336颗X5670CPU • 2048颗FT-1000CPU • 7168颗Nvidia Tesla M2050 GPU • 共186368核 并行计算基础
身边的并行计算 • 超级计算机 • 电脑 • ThinkPad X230 • CORE i7-3520M(双核) • iPad 4 • Apple A6X(双核) 并行计算基础
身边的并行计算 • 超级计算机 • 电脑 • 手机 • iPhone 5 • Apple A6处理器(双核) • GALAXY Note 2 • 三星Exynos4412(四核) 为什么都需要并行计算呢? 并行计算基础
Why并行计算 • 应用的需求 • 同时多任务 • 例如:一边听歌,一边编辑文档 • 对策:“人多分头干” Core 0 Core 1 并行计算基础
Why并行计算 • 应用的需求 • 大规模应用表现出超高的计算能力需求 • 例如: • 高能/核物理 • 材料/化学 • 生命科学 • 航空宇宙计算 • 飓风预测 并行计算基础
Why并行计算 • 应用的需求 • 大规模应用表现出超高的计算能力需求 • 对策:“人多力量大” VS 超强串行计算 大规模并行计算 并行计算基础
Why并行计算 • 微电子技术的发展 • 半导体线宽不断降低 并行计算基础
Why并行计算 • 微电子技术的发展 • 半导体线宽不断降低 • 功耗密度不断增加 并行计算基础
Why并行计算 • 微电子技术的发展 • 半导体线宽不断降低 • 功耗密度不断增加 • 温度的上升直接影响芯片的可靠性 • 45纳米工艺,每百个芯片每月发生一次故障 • 16纳米工艺,每百个芯片每天发生一次故障 并行计算基础
单处理器的性能提升缓慢, • 且受到功耗和可靠性问题的困扰, • 因此,并行计算成为人们的选择 Why并行计算 • 微电子技术的发展 • 半导体线宽不断降低 • 功耗密度不断增加 • 温度的上升直接影响芯片的可靠性 • 单处理器的性能提升变缓 • 2002年前每年增长50% • 2002年之后每年增长20% 并行计算基础
本讲主要内容 • Why并行计算 • 并行计算的概念与要素 • 并行计算机的发展 • 并行计算的度量 并行计算基础
并行计算的概念 • 并行计算 • 同时利用多个计算资源去解决一个计算问题的计算模式 • 在并行机上,将一个应用分解成多个子任务,分配给不同的处理器,各个处理器之间相互协同,并行地执行子任务,从而达到加速求解速度或扩大求解应用问题的目的 并行计算基础
并行计算的概念 • 并行计算的三个基本条件 • 并行机 • 两个或两个以上计算资源 • 应用问题必须具有并行度 • 应用可以被分解为多个可并行执行的子任务 • 并行编程 • 具体实现并行算法,编写并行程序、运行该程序,以求解应用问题 并行计算基础
并行计算的概念 • 与并行相关的三个概念 • 同时(Concurrent)计算 • 一个程序包含多个任务,这些任务在任意时刻可以同时处理 • 并行(Parallel)计算(狭义) • 一个程序包含多个任务,这些任务通过紧密合作去解决一个问题 • 分布式(Distributed)计算 • 一个程序,可能需要与其它程序合作去解决一个问题 并行计算基础
并行计算的概念 • 与并行相关的三个概念 • 并行的或分布式的一定是同时的,前者紧耦合,后者松耦合 • 反之不成立,关键在于是否用于解决一个问题 • 举例 • 同时:多任务操作系统 • 并行:天气预报应用求解 • 分布式:网页搜索 本课程重点学习的就是这种狭义并行计算 并行计算基础
并行计算的要素 • 并行的粒度 • 指令级ILP:多功能部件同时执行不同的指令 并行计算基础
并行计算的要素 • 并行的粒度 • 指令级ILP:多功能部件同时执行不同的指令 • 指令流水:一条流水线,不同功能部件在同一时刻针对不同的指令进行不同的操作 并行计算基础
并行计算的要素 • 并行的粒度 • 指令级ILP:多功能部件同时执行不同的指令 • 指令流水 • 多发射:复制功能部件,同时执行不同指令 并行计算基础
并行计算的要素 • 并行的粒度 • 指令级ILP:多功能部件同时执行不同的指令 • 指令流水 • 多发射 • 并行关键 • 多功能部件(功能可相同,也可不同) • 可并行执行的指令,即无数据依赖 • 反例:a = b + c; d = a – 1; 并行计算基础
并行计算的要素 • 并行的粒度 • 数据级DLP:多个功能相同的部件同时对不同的数据进行相同的处理 并行计算基础
并行计算的要素 • 并行的粒度 • 数据级DLP:多个功能相同的部件同时对不同的数据进行相同的处理 • 典型应用场景——循环计算 • for(i=0;i<100;i++) A[i] = B[i] + C[i]; 并行计算基础
并行计算的要素 • 并行的粒度 • 数据级DLP:多个功能相同的部件同时对不同的数据进行相同的处理 • 典型应用场景——循环计算 • 实际应用 • 向量计算 • GPU • 并行关键 • 多个功能相同的运行部件 • 多个数据执行相同的操作(指令) 并行计算基础
并行计算的要素 • 并行的粒度 • 任务级TLP:多个处理器/核通过执行进程或线程,同时对不同或相同的数据进行处理 并行计算基础
并行计算的要素 • 并行的粒度 • 任务级TLP:多个处理器/核通过执行进程或线程,同时对不同或相同的数据进行处理 • 突出不同计算任务之间的并行性 • 一般情况下,进程或线程之间是需要交互数据的 • 并行关键 • 多处理器/核 • 任务的并行划分 并行计算基础
并行计算的要素 • 并行的粒度总结 • 在现阶段,指令级并行和数据级并行强依赖于计算机硬件的实现 • 指令级并行几乎完全由处理器硬件和编译器开发 • 数据级并行由程序员面向特点的处理器开发 • 在一般并行程序的设计过程中,程序员的主要工作是开发任务级并行 并行计算基础
并行计算的要素 • 创建并行计算(程序)的步骤 并行计算基础
并行计算的要素 • 几个重要概念 • 任务 • 在并行计算中任意不可分解的工作 • 自身顺序执行,同步发生在任务之间 • 粒度可细可粗 • 进程(/线程) • 具体执行任务的实体 • 之间通过通信/同步以共同完成计算 • 处理器 • 进程执行的具体物理引擎 并行计算基础
并行计算的要素 • 创建并行计算(程序)的步骤(一) • 分解(Decomposition) • 将计算分解,得到任务集合 • 任务的个数可能是变化的 • 任务执行需要数据 • 目标 • 适度的任务数 • 同一时刻有效的任务数决定了 计算的最大并行度 并行计算基础
并行计算的要素 • 创建并行计算(程序)的步骤(二) • 分配(Assignment) • 将任务划分给进程 • 目标 • 负载平衡 • 减少通信 • 减少管理开销 • 时机 • 静态:执行过程中分配不变 • 动态:自适应变化 并行计算基础
并行计算的要素 • 创建并行计算(程序)的步骤(三) • 编排(Orchestration) • 利用给定的编程模型和编程语言实现程序 • 组织数据结构 • 组织通信/同步 • 目标 • 降低通信/同步代价 • 降低并行化开销 • 减少空转 • 利用局部性 并行计算基础
并行计算的要素 • 创建并行计算(程序)的步骤(四) • 映射(Mapping) • 具体将哪些进程放到哪些处理器上去运行 • 目标 • 将交互密切的进程放近些 • 利用系统结构信息开发局部性 • 方式 • 直接绑定 • 操作系统决定 并行计算基础
本讲主要内容 • Why并行计算 • 并行计算的概念与要素 • 并行计算机的发展 • 并行计算的度量 并行计算基础
并行计算机的发展 • 巨型机的发展 • 向量机时代 并行计算基础
1 103 106 109 1012 1015 OneOPS KiloOPS MegaOPS GigaOPS TeraOPS PetaOPS 并行计算机的发展 • 巨型机的发展 • 向量机时代 • Cray-1 • 时间:1976年 • 公司:Cray Research Inc • 性能:133MFlops 处理器数:1个 结构:向量处理 并行计算基础
1 103 106 109 1012 1015 OneOPS KiloOPS MegaOPS GigaOPS TeraOPS PetaOPS 并行计算机的发展 • 巨型机的发展 • 向量机时代 • Cray X-MP • 时间:1982年 • 公司:Cray Research Inc • 性能:941MFlops 处理器数:4个 结构:并行向量 并行计算基础
1 103 106 109 1012 1015 OneOPS KiloOPS MegaOPS GigaOPS TeraOPS PetaOPS 并行计算机的发展 • 巨型机的发展 • 向量机时代 • YH-1 • 时间:1983年 • 公司:国防科学技术大学 • 性能:100多MFlops 填补了国内巨型机的空白,使我国成为世界上少数几个拥有研制巨型计算机的国家之一 并行计算基础
1 103 106 109 1012 1015 OneOPS KiloOPS MegaOPS GigaOPS TeraOPS PetaOPS 并行计算机的发展 • 巨型机的发展 • 向量机时代 • Cray 2 • 时间:1985年 • 公司:Cray Research Inc • 性能:3.9GFlops 处理器数:8个 结构:并行向量 并行计算基础
1 103 106 109 1012 1015 OneOPS KiloOPS MegaOPS GigaOPS TeraOPS PetaOPS 并行计算机的发展 • 巨型机的发展 • 向量机时代 • YH-2 • 时间:1992年 • 公司:国防科学技术大学 • 性能:1GFlops 表明我国仿真机研制能力已跨入国际领先行列,使中国成为当今世界少数几个能发布中期数值预报的国家 并行计算基础
并行计算机的发展 • 巨型机的发展 • 向量机时代 • 技术路线遇到困难 • ECL器件的功耗高 • Cray-2采用液冷技术 • Cray-3、Cray-4都未能商业化 ECL电路 并行计算基础
并行计算机的发展 • 巨型机的发展 • 向量机时代 • 技术路线遇到困难 • ECL器件的功耗高 • Cray-2采用液冷技术 • Cray-3、Cray-4都未能商业化 • 对策:使用功耗相对较低的CMOS电路 • CMOS电路比ECL更难实现高主频 • 所以并行计算被认为是实现更高性能的主要技术途径 ECL电路 并行计算基础
并行计算机的发展 • 巨型机的发展 • MPP(Massively Parallel Processors)计算机 • 采用大量处理器(大多为商用) • 结点间使用定制高速互连网络相连(紧耦合) 并行计算基础
1 103 106 109 1012 1015 OneOPS KiloOPS MegaOPS GigaOPS TeraOPS PetaOPS 并行计算机的发展 • 巨型机的发展 • MPP计算机 • Cray-T3D • 时间:1993年 • 公司:Cray Research Inc • 性能:21.4GFlops 处理器数:256个 采用商用处理器 并行计算基础
并行计算机的发展 • 巨型机的发展 • MPP计算机 • Cray-T3D • Alpha 21064处理器 • 公司:DEC • 主频:150MHz主频 • 性能:150MFlops • 功耗:23W • Alpha指令集的首款商用处理器 并行计算基础