课程名称 |
并行程序设计实践 |
Parallel Programs Design |
开课单位 |
计算机科学与工程学院 |
课程性质 |
必修课 |
课程类别 |
实践环节 |
课程代码 |
210731100601 |
学分 |
1 |
学时 |
1周 |
适用专业 |
智能科学与技术 |
先修课程 |
程序设计基础,数据结构 |
授课语言 |
中文 |
一、课程简介
(一)课程中文简介
随着多核体系结构、GPU的出现和主流化,发掘并利用并行性已经成为有效利用资源的首要因素,并行程序设计技术对软件工程师和计算机软硬件开发人员以及系统设计师变得日益重要。
本课程是计算机科学与技术等专业的专业必修课,主要介绍在异构多核平台上编写并行程序的方法,需要学生独立或合作在分布式和共享内存并存集群、GPU集群中,设计并实现解决综合性、复杂性科学问题的算法,并进行性能对比分析。
该课程目的在于使学生初步掌握MPI、OpenMP、CUDA等编程技术,了解混合编程技术,初步掌握并行程序调试和性能评估的基本方法,学会运用并行程序设计思想解决复杂性问题。
(二)课程英文简介
With the emergence of multi-core architecture and GPU, it has become the primary factor to effectively utilize resources by exploring and using parallelism. Parallel programming technology has become increasingly important for software engineers, computer software and hardware developers and system designers.
This course is a required course for computer science and technology major. It mainly introduces the method of writing parallel programs on heterogeneous multi-core platforms. It requires students to independently or cooperatively design and implement algorithms to solve comprehensive and complex scientific problems in distributed and shared memory clusters and GPU clusters, and conduct performance comparison and analysis.
The purpose of this course is to enable students to preliminarily master MPI, OpenMP, CUDA and other programming technologies, to understand hybrid programming technologies, to preliminarily master the basic methods of parallel program debugging and performance evaluation, and to learn to use parallel program design ideas to solve complexity problems.
二、实训课程目标
本课程的目标包括:
CO1:掌握并行程序设计的基本原理,熟悉Flynn分类体系,了解多核多线程计算机系统结构的基本特征。
CO2:掌握MPI进行消息传递并行程序设计的基本方法,以及OpenMP进行多线程程序开发的基本方法,熟练运用MPI+OpenMP进行并行程序开发,用于解决较大规模的难题。
CO3:掌握CUDA编程的基本方法,熟练运用CUDA在GPU上进行编程,用于解决较大规模的难题。
CO4:能够与他人构建小型团队,合作解决一个实际工程问题的分析、求解、测试和分析。
课程目标与所支撑的毕业要求指标点的对应关系如下表所示。
毕业要求内涵观测点 |
课程目标 |
GR4.3能够对实验结果进行合理分析、解释,并对多个子问题进行关联分析,找出冲突点并进行平衡,通过实验数据分析、信息综合等手段得到合理有效的结论。 |
CO1,CO2,CO3,CO4 |
三、实训、实践内容与要求
1、并行程序设计基础知识简介。
(1)并行程序的必要性。
(2)并行计算机模型。
(3)多线程并行程序设计原理。
(4)消息传递并行程序设计原理。
2、MPI+OpenMP并行程序设计实践。
以稠密矩阵运算、线性方程组求解、快速傅里叶变换等大规模数值计算算法,以及K-最短路、最大团、排序、查找等大规模非数值计算算法为案例,要求学生以团队形式至少完成2个问题的MPI+OpenMP混合并行程序。通过答辩、作品展示、报告等予以展示。
3、CUDA编程实践。
以音视频压缩、图像处理、文本分类、个性化推荐以及大规模稠密矩阵运算等巨大规模问题为案例,要求学生团队形式至少完成2个问题的MPI+OpenMP混合并行程序。通过答辩、作品展示、报告等予以展示。
四、实验设备与环境配置
1.多核计算机、GPU集群。
2.Linux操作系统,MPI+OpenMP、CUDA编程环境。
五、课程思政、创新创业元素
教学章节 |
知识点 |
思政元素案例 |
培养目标 |
备注 |
超级计算机 |
艰苦奋斗精神 |
我国研制超级计算机的历程 |
严谨、艰苦奋斗、求真务实、百折不挠,坚持真理的科研精神。 |
|
超级计算机 |
弘扬时代精神 |
银河巨型机的研制和天河巨型机创新之路 |
当代大学生应胸怀祖国,放眼世界,勇做时代精神的弘扬者和改革创新的实践者。 |
创新创业案例 |
超级计算竞赛 |
前沿科技跟踪 |
TOP500的发展与追逐 |
立足国家实际情况,坚持自主创新,突破“卡脖子”技术。 |
创新创业案例 |
GPU在AI中的应用 |
尊重工程伦理 |
人脸识别技术的滥用 |
遵守工程伦理,严守道德底线,合理运用技术。 |
|
加速卡技术 |
“卡脖子”技术 |
超级计算中的“卡脖子”技术 |
美国限制我国国防科大等超算的研制、发展。 |
|
超级计算利用 |
数值气象预报 |
FVCOM等依赖国外的开源技术。 |
生活应用中处处存在“卡脖子”元素。 |
|
团队合作 |
复杂问题解决 |
团结合作才能解决复杂问题。 |
在团队中发挥每个人的作用,互相配合。 |
|
六、主要参考资料
[1]Maurice Herlihy,Nir Shavit.金海译.多处理器编程的艺术[M].北京:机械工业出版社,2009.
[2]张武生,李建江. MPI并行程序设计实例教程[M].北京:清华大学出版社,2009.
[3] Michael J. Quinn著,陈文光等译. MPI与OpenMP并行程序设计(C语言版)[M].北京:清华大学出版社,2004.
[4]方民权,张为民等. GPU编程与优化--大众高性能计算[M].北京:清华大学出版社,2016.
[5] Aaftab Munshi,Benedict G.等著.苏金国等译. OpenCL编程指南.北京:机械工业出版社华章公司,2012.
七、考核方式、方法及实验成绩评定方法
考核成绩可以采用五级制,从工作态度、作品质量、实训报告质量、沟通能力、独立分析与解决问题能力、团队与合作等方面进行评价。
(一)评分标准
考核 环节 |
占总成绩比例 |
<60 (不及格) |
60-69 (及格) |
70-79 (中等) |
80-89 (良好) |
90-100 (优秀) |
工作态度 |
10% |
态度不端正,不按时完成任务,不听从老师安排。 |
态度基本端正,能够按时完成任务,基本服从安排。 |
态度端正,能够按时完成任务,服从安排。 |
态度良好,及时完成任务,服从安排。 |
态度积极认证,提前完成任务,积极承担工作。 |
作品质量 |
30% |
不能运行。 |
能够运行,但是性能很差。 |
能运行,性能一般。 |
能运行,性能较好。 |
能运行,性能优异。 |
实训报告质量 |
20% |
书写不规范,逻辑混乱,工作量小。 |
书写基本规范,逻辑基本清楚,工作量适当。 |
书写规范,有一定逻辑性,工作量一般。 |
书写规范,图表清楚,逻辑性较强。 |
书写规范认真,图表清楚,逻辑性强。 |
沟通能力 |
10% |
不能与人沟通。 |
能与人沟通,但是沟通质量较差。 |
能够与人正常沟通。 |
与人沟通良好,可以较好表达观点。 |
与人沟通顺畅,能充分表达自我观点。 |
独立分析与解决问题能力 |
20% |
不能分析、解决问题。 |
基本能够解决问题,但不具备分析问题能力。 |
能够分析、解决问题,但是创新性差。 |
能综合运用所学知识较好地分析、解决问题。 |
能灵活运用所学知识独立分析、解决问题。 |
团队与合作 |
10% |
不能与人合作。 |
能与人合作,但合作效果较差。 |
与人合作较好。 |
与人合作良好,人际关系较好。 |
善于与人合作,具有一定组织领导能力。 |
(二)考核环节权重
考核环节 |
目标1 |
目标2 |
目标3 |
目标4 |
工作态度 |
30% |
10% |
10% |
20% |
作品质量 |
40% |
50% |
50% |
20% |
实训报告质量 |
30% |
10% |
10% |
|
沟通能力 |
|
|
|
20% |
独立分析与解决问题能力 |
|
20% |
20% |
|
团队与合作 |
|
10% |
10% |
40% |
|
100% |
100% |
100% |
100% |
撰稿人:崔焕庆
审核人:花嵘
批准人:崔宾阁