1、并行程序设计课程大纲一、 课程基本信息课程编号 F06D3740 学分 2.0 开课学期 秋 春 夏(小学期)(中文)并行程序设计课程名称(英文)Parallel Programming 课程类别 必修 选修 1 年级 2 年级 3 年级 4 年级课内总学时 课内学时分配 建议课外学时讲课学时 24 课程准备和复习 0实验学时 0 实验/上机准备 0课程学时及其分配 24上机学时 8 课外上机 0教学方式 课堂讲授为主 实验为主 自学为主 专题讨论为主考核方式评分依据三次作业分数汇总(百分制)考勤加上以及三次作业的得分,作业的分数分别是:20, 50, 30适用院系适用专业计算机学院,高等工程
2、学院计算机软件与理论,计算机应用技术,计算机系统结构先修课程预备知识高级程序语言设计 数据结构与算法 计算机系统结构 编译技术教材与参考文献(1) 并行程序设计原理中译本,Calvin Lin, Lawrence Snyder 著,陆鑫达 林新华 译 机械工业出版社,2009 年 7 月。(2) 并行计算导论 (原书第 2 版)中译本,Ananth Grama,Anshul Gupta,George Karypis,Vipin Kumar 著,张武 毛国勇 程海英 译,机械工业出版社,2004 年 12 月。(3) UNIX 环境高级编程 ( 第二版),W.RICHARD STEVENS, S
3、TEPHEN A.RAGO 著,尤晋元 张亚英 戚正伟译,人民邮电出版社, 2006 年 5 月。二、 教学目标本课程目标在于使学生了解并行计算的基本概念与原理,培养学生的并行思维,学会在多核多 CPU 硬件平台上编写简单的并行程序,并初步具备解决实际问题的能力。通过本课程的学习,学生应该能了解当前流行的并行计算机的体系结构,多核芯片以及异构多核芯片的演变过程;熟悉进程间通信的基本技术,包括管道、消息队列、信号量、共享内存;掌握线程的基本概念,线程安全性,线程的创建、终止、同步与控制;了解 MPI 并行程序结构,掌握 MPI 基本通信原语,包括点对点通信、集合通信;掌握几种重要的并行设计模式,
4、包括数据并行、流水线并行、工作池模式和主从模式;掌握并行程序的性能分析方法。学完本课程,学生具备分析和解决易并行问题的能力,能够在一周时间内,编写并调试通过、能正确运行、具备可扩展性的、200 行有效代码以内的并行程序。三、 课程简介随着多核体系结构的出现和发展,使得并行计算科学的硬件基础设施发生了很大的变化,如果把并行硬件基础设施看成是“经济基础” ,则其相应的上层并行软件就可以视为“上层建筑” 。本课程的主要目的是让学生了解并行计算的概念和原理,学习并行编程技术,培养学生并行程序设计思维,使其能够在多核体系结构上进行高效的并行程序设计,以充分利用多核所提供的硬件并行性。四、 课程教学内容及
5、基本要求第 1 讲、 并行程序设计基础(2 学时) 目标:要求学生了解并行的基本概念,学习并行程序设计的必要性;了解共享存储与分布式存储并行计算机架构;了解多核与异构多核处理器架构;并行计算的应用范围;并行计算技术概览。 主要内容:1.1 什么是并行计算1.2 为什么要学习并行程序设计1.3 并行与并发1.4 并行与分布式1.5 并行计算的应用1.6 并行层次与分类1.7 并行计算机架构及分类1.8 并行计算的发展趋势与挑战 重点:并行计算的概念、多核处理器的特点、集群体系结构、并行计算机内存访问模型、并行的层次与分类 难点:多核处理器的历史与架构、多进程、线程概念、操作系统对并行计算的支持、
6、并行编程环境第 2 讲、 多进程程序设计(4 个学时) 目标:要求学生了解多进程的概念与特点,熟悉多进程程序开发技术,了解进程间通信的必要性,熟悉常用的进程间通信技术。本章内容重在了解,不要求学生必须掌握。 主要内容:2.1 进程的基本概念与特点2.2 进程的控制2.3 信号2.4 进程间通信 重点:多进程的概念与特点、多进程程序设计 难点:管道、消息队列、信号量、记录锁第 3 讲、 多线程程序设计(6 学时) 目标:要求学生掌握线程的概念,学会在 Linux 平台下编写多线程程序;掌握线程的创建、终止、控制与同步;掌握线程的调试方法。 主要内容:3.1 线程基础3.2 线程的基本操作3.3
7、多线程的共享变量3.4 线程同步机制3.5 多线程信号处理3.6 并发常见问题 重点:线程基础、线程的创建与终止、线程同步、线程安全性 难点:线程同步、线程安全性第 4 讲、 MPI 程序设计(4 学时) 目标: 要求学生掌握 MPI 程序的结构,了解 MPI 的组和通信子的概念,掌握 MPI 常用通信原语。 主要内容:4.1 认识 MPI4.1.1 什么是 MPI 4.1.2 为什么要用 MPI4.2 MPI 编程基础4.3 MPI 集合通信4.4 MPI 与 Pthread 混合编程 重点:MPI 的程序结构、点对点通信、集合通信 难点:MPI 的执行模型、集合通信、MPI 与 Pthre
8、ads 混合编程第 5 讲、 并行程序性能分析方法(4 学时) 目标:要求学生能够了解影响并行程序性能的因素;掌握衡量并行程序优劣的指标,这些指标包括加速比、可扩展性、执行时间;掌握如何计算这些指标,并根据这些指标分析并行程序性能瓶颈。 主要内容:5.1 实例:通过性能分析改进程序性能5.2 并行程序性能度量5.3 影响并行程序性能的因素5.4 并行程序的可扩展性5.5 改进并行程序性能的几种策略 重点:性能度量 难点:影响并行程序性能的因素、性能优化方法第 6 讲、 并行算法设计与并行模式(4 学时) 目标:要求学生了解并行算法设计的常用方法和常见的并行模式,并能用这些并行模式解决实际问题。
9、 主要内容:6.1 并行算法设计基本方法6.2 常用的并行模式6.2.1 数据并行6.2.2 任务并行6.2.3 工作池模式6.2.4 主- 从模式6.2.5 流水线模式(或生产者- 消费者 )6.3 Google 的 MapReduce 编程框架 重点:主-从模式,流水线模式 难点:数据并行、任务并行、工作池模式五、 课程知识单元和知识点 并行程序设计基础知识点并行计算概念并行计算机分类多核处理器架构并行层次与分类 多进程编程与进程间通信知识点多进程的创建管道消息队列信号量记录锁共享内存信号处理 多线程编程知识点线程基础线程的创建线程终止线程互斥条件变量读-写锁信号量线程安全性线程设计技巧
10、MPI 编程知识点MPI 的特点MPI 执行模型进程组通信域点对点通信原语集合通信原语 并行程序性能分析方法知识点影响并行程序性能的可能因素执行时间度量方法加速比度量方法可扩展性度量方法常用的性能优化方法 并行模式知识点数据并行任务并行工作池模式主-从模式流水线模式六、 课程实践环节课程实验(一)实验名称:多进程编程实验目的:通过实验使得学生了解多进程程序的设计方式,程序结构特点,父进程与子进程间的通信与控制技术。实验内容:含 2 道编程题:1 道简单编程题,1 道难度较大的选作题。课程实验(二)实验名称:线程编程实验目的:通过实验使得学生能够正确理解线程的执行过程,线程的创建、中止、结束方法,能够掌握互斥、条件变量、信号量等线程间的同步技术,能够判断线程安全性引起的原因并加以解决。实验内容:含 1 道编程题,大概需要 200 行左右的代码,CourseGrading 系统自动评判提交的多线程并行程序。课程实验(三)实验名称:MPI 编程实验目的:通过实验使得学生了解 MPI 的程序结构,了解执行模式,掌握基本的通信原语,对于拔尖学生,期望他们能够掌握多线程(或多进程)与 MPI 混合编程方法。实验内容:含 1 道编程题,大概 250 行左右的代码,CourseGrading 系统自动评判提交的 MPI 并行程序。