《并行编程原理与实践》课程大纲一、课程名称:并行编程原理与实践二、课程性质:选修、理论课三、学时与学分:32学时,2学分四、课程先导课:C语言程序设计、离散数学、并行与串行数据结构及算法、算法、计算机组成原理、计算机系统结构、操作系统五、课程简介并行编程是典型的计算机理论与实践结合的产物,具备较为完备的理论体系,又随着并行计算环境及其应用场景变化而演进。本课程体系旨在从基础原理、编程环境与编程实践三个方面加深并行思维的形成与对并行编程软硬件环境的了解和熟悉,打好并行计算系统开发与应用基础。并行编程基础原理包括并行体系结构、并行编程模型、并行编程方法学以及程序性能等;并行编程环境与技术包括共享内存与OpenMP、消息传递与MPI、GPGPU与CUDA编程模型、大数据处理、数据流处理等;并行编程实践包括基于回溯的并行实践案例,以及实践项目介绍等。六、课程目标通过本课程的学习,帮助学生了解支持并行处理的体系结构基础知识;掌握并行编程的基本原理与方法步骤;了解各类并行编程环境的基础知识;具备一定的并行编程基本技能;具有一定的并行编程调试和优化能力。培养学生建立在计算机学科领域持续追求效率更高、质量更好的计算的创新意识;课程的具体目标包括:目标1:介绍现有主流并行编程环境与发展现状,使学生了解各类并行编程环境的基础知识,了解支持并行处理的体系结构,掌握并行编程的基本原理与方法步骤;目标2:通过课程的案例式教学,培养学生在并行计算方面分析与解决问题的能力;目标3:指导学生利用相应的软件工具仿照范例制作出性能优化的并行程序,满足一定的性能指标要求,使学生掌握某一主流并行软件的设计、开发、调试、分析与优化的基本技能;七、课程目标对毕业要求的支撑关系支撑的毕业要求二级指标点对应课程目标
《并行编程原理与实践》课程大纲 一、课程名称:并行编程原理与实践 二、课程性质:选修、理论课 三、学时与学分:32 学时,2 学分 四、课程先导课:C 语言程序设计、离散数学、并行与串行数据结构及算法、算 法、计算机组成原理、计算机系统结构、操作系统 五、课程简介 并行编程是典型的计算机理论与实践结合的产物,具备较为完备的理论体系, 又随着并行计算环境及其应用场景变化而演进。本课程体系旨在从基础原理、编 程环境与编程实践三个方面加深并行思维的形成与对并行编程软硬件环境的了 解和熟悉,打好并行计算系统开发与应用基础。并行编程基础原理包括并行体系 结构、并行编程模型、并行编程方法学以及程序性能等;并行编程环境与技术包 括共享内存与 OpenMP、消息传递与 MPI、GPGPU 与 CUDA 编程模型、大数据 处理、数据流处理等;并行编程实践包括基于回溯的并行实践案例,以及实践项 目介绍等。 六、课程目标 通过本课程的学习,帮助学生了解支持并行处理的体系结构基础知识;掌握 并行编程的基本原理与方法步骤;了解各类并行编程环境的基础知识;具备一定 的并行编程基本技能;具有一定的并行编程调试和优化能力。培养学生建立在计 算机学科领域持续追求效率更高、质量更好的计算的创新意识; 课程的具体目标包括: 目标 1:介绍现有主流并行编程环境与发展现状,使学生了解各类并行编程 环境的基础知识,了解支持并行处理的体系结构,掌握并行编程的基本原理与方 法步骤; 目标 2:通过课程的案例式教学,培养学生在并行计算方面分析与解决问题 的能力; 目标 3:指导学生利用相应的软件工具仿照范例制作出性能优化的并行程序, 满足一定的性能指标要求,使学生掌握某一主流并行软件的设计、开发、调试、 分析与优化的基本技能; 七、课程目标对毕业要求的支撑关系 支撑的毕业要求二级指标点 对应课程目标
1.1能将数学、自然科学和信息科学的语言工具用于计算机复杂工程目标1问题的表述。1.3能将软硬件知识、相关工程知识和模型方法用于推演和分析计算机复杂工程问题目标21.4能将软硬件知识、相关工程知识和模型方法用于计算机复杂工程问题解决方案进行比较和综合2.1能综合运用数学、自然科学、工程科学以及计算机科学的基本原理,识别、判断和表达计算机复杂工程问题的关键环节3.1掌握与计算机复杂工程问题有关的工程设计和软硬件产品开发全目标3周期、全流程的基本设计/开发方法和技术,了解影响设计目标和技术方案的多种因素八、教学设计及对课程目标的支持第一章简介本章的主要知识点包括什么是并行计算,为什么需要并行计算,以及为什么需要学习并行计算。从目前应用领域对计算性能的需求以及计算机软硬件技术的发展来看,可以预见,并行计算将在计算机技术中扮演越来越重要且不可代替的角色。1.教学目标1)掌握什么是并行计算;2)了解为什么需要并行计算;3)理解为什么需要学习并行编程。本章教学支持课程目标1和课程目标2。2.教学重点1)高性能、高速度、高吞吐量等概念的理解;2)摩尔定律、频率墙、指令层级并行墙、微电子技术限制一一多核处理器、网络技术飞速发展一一集群计算机等知识的掌握:3)传统串行程序无法在并行机上实现高性能运算,利用编译器发现串行程序中并行度能力有限,以及需要对不同的并行计算机研发新的高效的并行算法和程序等知识的理解。3.教学难点1)如何有效利用计算机资源实现高性能计算。2)信息革命产生的很多大计算量和大数据应用问题无法用单处理器计算机解决。4.教学环节设计围绕教学重点和教学难点,综合应用课堂讲授与讨论、课外阅读等教学形式
1.1 能将数学、自然科学和信息科学的语言工具用于计算机复杂工程 问题的表述。 目标 1 1.3 能将软硬件知识、相关工程知识和模型方法用于推演和分析计算 机复杂工程问题 1.4 能将软硬件知识、相关工程知识和模型方法用于计算机复杂工程 问题解决方案进行比较和综合 目标 2 2.1 能综合运用数学、自然科学、工程科学以及计算机科学的基本原 理,识别、判断和表达计算机复杂工程问题的关键环节 3.1 掌握与计算机复杂工程问题有关的工程设计和软硬件产品开发全 周期、全流程的基本设计/开发方法和技术,了解影响设计目标和技 术方案的多种因素 目标 3 八、教学设计及对课程目标的支持 第一章 简介 本章的主要知识点包括什么是并行计算,为什么需要并行计算,以及为什么 需要学习并行计算。从目前应用领域对计算性能的需求以及计算机软硬件技术的 发展来看,可以预见,并行计算将在计算机技术中扮演越来越重要且不可代替的 角色。 1.教学目标 1)掌握什么是并行计算; 2)了解为什么需要并行计算; 3)理解为什么需要学习并行编程。 本章教学支持课程目标 1 和课程目标 2。 2.教学重点 1)高性能、高速度、高吞吐量等概念的理解; 2)摩尔定律、频率墙、指令层级并行墙、微电子技术限制——多核处理器、 网络技术飞速发展——集群计算机等知识的掌握; 3)传统串行程序无法在并行机上实现高性能运算,利用编译器发现串行程 序中并行度能力有限,以及需要对不同的并行计算机研发新的高效的并行算法和 程序等知识的理解。 3.教学难点 1)如何有效利用计算机资源实现高性能计算。 2)信息革命产生的很多大计算量和大数据应用问题无法用单处理器计算机 解决。 4.教学环节设计 围绕教学重点和教学难点,综合应用课堂讲授与讨论、课外阅读等教学形式
1)讨论围绕并行计算的发展历程等问题展开。2)课外阅读阅读关于中国并行计算机发展历史的文献。第二章计算机体系结构本章的主要知识点包括简单介绍单处理器中的并行,包括流水线、超标量、乱序执行、向量运算、SIMD以及多线程等概念,进而对目前主流的MIMDMPP、多核等体系结构和典型代表机器进行介绍。重点强调并行体系结构设计思想的继承与改进。1.教学目标掌握知识点:1)单处理器系统2)多核处理器/共享多处理器系统:3)集群计算机/分布式多计算机系统4)加速器/GPU(accelerator/GPU);5)前沿发展(内存计算、NVM、SCM和TPU)。本章教学支持的课程目标为目标1和目标2。2.教学重点1)单处理器也是并行处理器一一指令层级并行:2)如何有效利用存储局部性:3)多核处理器共享的存储器层次结构;4)适合分布式多计算机系统的连接网络;5)一至两个实际集群计算机/分布式多计算机系统结构3.教学难点1)并行体系结构设计思想的继承与改进;2)一至两个实际GPU系统结构。4.教学环节设计围绕教学重点和教学难点,综合应用课堂讨论、课外阅读等教学形式。1)课堂讨论围绕不同并行体系结构的局限性展开。2)课外阅读阅读了解主流的MIMD、MPP、多核等体系结构和典型代表机器等的发展历程和结构异同
1)讨论 围绕并行计算的发展历程等问题展开。 2)课外阅读 阅读关于中国并行计算机发展历史的文献。 第二章 计算机体系结构 本章的主要知识点包括简单介绍单处理器中的并行,包括流水线、超标量、 乱序执行、向量运算、SIMD 以及多线程等概念,进而对目前主流的 MIMD、 MPP、多核等体系结构和典型代表机器进行介绍。重点强调并行体系结构设计思 想的继承与改进。 1.教学目标 掌握知识点: 1)单处理器系统; 2)多核处理器/共享多处理器系统; 3)集群计算机/分布式多计算机系统; 4)加速器/GPU (accelerator / GPU); 5)前沿发展(内存计算、NVM、SCM 和 TPU)。 本章教学支持的课程目标为目标 1 和目标 2。 2.教学重点 1)单处理器也是并行处理器——指令层级并行; 2)如何有效利用存储局部性; 3)多核处理器共享的存储器层次结构; 4)适合分布式多计算机系统的连接网络; 5)一至两个实际集群计算机/分布式多计算机系统结构 3.教学难点 1)并行体系结构设计思想的继承与改进; 2)一至两个实际 GPU 系统结构。 4.教学环节设计 围绕教学重点和教学难点,综合应用课堂讨论、课外阅读等教学形式。 1)课堂讨论 围绕不同并行体系结构的局限性展开。 2)课外阅读 阅读了解主流的 MIMD、MPP、多核等体系结构和典型代表机器等的发展历 程和结构异同
第三章并行算法设计与性能分析本章的主要知识点包括介绍并行编程模式的概念,从抽象的层面介绍几种经典的并行编程模式,包括共享主存模式、分布式主存模式、GPGPU的编程模式以及数据密集型计算模式。同时给出每种模式相应的编程工具简介。1.教学目标掌握知识点:1)逻辑并行编程模型,含MIMD编程模型、SIMD编程模型,以及mapreduce和tensorflow;2)并行算法设计,含加速比与额外开销、单机上的性能优化、两阶段并行算法设计过程,以及实例案例(减约运算、矢量内积、矩阵乘法、前缀运算、部分置换高斯消去法、简单稀疏矩阵计算以图计算基本概念);3)性能分析,含加速比、效率、扩展性与渐近分析等概念。本章教学支持的课程目标为目标2和目标3。2.教学重点和难点1)额外开销问题,包括通信/同步,额外计算,并行粒度,负载平衡,以及存储多层结构;2)与机器无关的并行算法设计,包括任务分割、数据依赖相关图、细粒度并行、并行复杂度,以及可扩展性;3)与机器相关的并行算法设计,包括针对MIMD的任务分配和映射、针对SIMD的任务分配和映射,以及图计算等。3.教学环节设计围绕教学重点和教学难点,综合应用课堂讲授与讨论。1)讨论本章课堂讨论主要围绕并行编程模式的特点进行分析和讨论展开。第四章共享内存的编程与OpenMP本章的主要知识点包括共享内存编程的基本概念,OpenMP简介,线程创建、并行循环处理、同步、数据环境、任务分配以及OpenMP并发处理等。1.教学目标掌握知识点:1)OpenMP概要;2)生成线程;3)并行循环;4)同步;
第三章 并行算法设计与性能分析 本章的主要知识点包括介绍并行编程模式的概念,从抽象的层面介绍几种经 典的并行编程模式,包括共享主存模式、分布式主存模式、GPGPU 的编程模式 以及数据密集型计算模式。同时给出每种模式相应的编程工具简介。 1.教学目标 掌握知识点: 1)逻辑并行编程模型,含 MIMD 编程模型、SIMD 编程模型,以及 mapreduce 和 tensorflow; 2)并行算法设计,含加速比与额外开销、单机上的性能优化、两阶段并行 算法设计过程,以及实例案例(减约运算、矢量内积、矩阵乘法、前缀运算、部 分置换高斯消去法、简单稀疏矩阵计算以图计算基本概念); 3)性能分析,含加速比、效率、扩展性与渐近分析等概念。 本章教学支持的课程目标为目标 2 和目标 3。 2.教学重点和难点 1)额外开销问题,包括通信/同步,额外计算,并行粒度,负载平衡,以及 存储多层结构; 2)与机器无关的并行算法设计,包括任务分割、数据依赖相关图、细粒度 并行、并行复杂度,以及可扩展性; 3)与机器相关的并行算法设计,包括针对 MIMD 的任务分配和映射、针对 SIMD 的任务分配和映射,以及图计算等。 3.教学环节设计 围绕教学重点和教学难点,综合应用课堂讲授与讨论。 1)讨论 本章课堂讨论主要围绕并行编程模式的特点进行分析和讨论展开。 第四章 共享内存的编程与 OpenMP 本章的主要知识点包括共享内存编程的基本概念,OpenMP 简介,线程创建、 并行循环处理、同步、数据环境、任务分配以及 OpenMP 并发处理等。 1.教学目标 掌握知识点: 1)OpenMP 概要; 2)生成线程; 3)并行循环; 4)同步;
5)数据环境;6)任务。本章教学支持的课程目标为目标1和目标3。2.教学重点和难点1)了解共享内存编程的基本概念;2)了解OpenMP并行编程基本方法3)共享内存编程模式的优点和局限性分析3.教学环节设计围绕上述教学实施主线,除讲授外,本章的教学还将通过课后实践练习、课外阅读等方式进行。1)讲练结合围绕OpenMP工具,边讲边练,确保重要教学内容教学目标的达成。为达到教学效果,实验指导由承担课程教学任务的任课教师承担。2)课外阅读OpenMP编程手册。第五章基于消息传递的并行编程本章的主要知识点包括基于消息传递的并行编程基本原理,包括发送和接收操作、MPI、消息传递接口、拓扑结构和嵌入机制、重叠通信、集合式通信以及处理器组与通信等。1.教学目标掌握知识点:1)消息传递基本概念;2)传送与接受操作;3) MPI;4)拓扑结构与嵌入机制;5)通讯与计算的重叠:6)通讯与计算的集合;7)集合式通讯。本章教学支持的课程目标为目标1和目标3。2.教学重点与难点1)了解基于消息传递的并行编程基本原理;2)掌握MPI基本编程方法。3.教学环节设计
5)数据环境; 6)任务。 本章教学支持的课程目标为目标 1 和目标 3。 2.教学重点和难点 1)了解共享内存编程的基本概念; 2)了解 OpenMP 并行编程基本方法。 3)共享内存编程模式的优点和局限性分析 3.教学环节设计 围绕上述教学实施主线,除讲授外,本章的教学还将通过课后实践练习、课 外阅读等方式进行。 1)讲练结合 围绕 OpenMP 工具,边讲边练,确保重要教学内容教学目标的达成。为达 到教学效果,实验指导由承担课程教学任务的任课教师承担。 2)课外阅读 OpenMP 编程手册。 第五章 基于消息传递的并行编程 本章的主要知识点包括基于消息传递的并行编程基本原理,包括发送和接收 操作、MPI、消息传递接口、拓扑结构和嵌入机制、重叠通信、集合式通信以及 处理器组与通信等。 1.教学目标 掌握知识点: 1)消息传递基本概念; 2)传送与接受操作; 3)MPI; 4)拓扑结构与嵌入机制; 5)通讯与计算的重叠; 6)通讯与计算的集合; 7)集合式通讯。 本章教学支持的课程目标为目标 1 和目标 3。 2.教学重点与难点 1)了解基于消息传递的并行编程基本原理; 2)掌握 MPI 基本编程方法。 3.教学环节设计