王玉柱 张玉清 季晓慧 管建和 夏军宝
摘要:本文从新工科背景下高性能计算导论课程建设的目标出发,陈述了该课程在国内的教学现状。在此基础上,结合自身的教学实践阐述了课程的设计和实践教学的探索,分析了教学实践的效果,强调了动手实践在课程教学中的重要性。
关键词:高性能计算;实践教学;教学改革
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2019)25-0097-02
2017年12月,国务院办公厅《关于深化产教融合的若干意见》提出:“适应新一轮科技革命和产业变革及新经济发展,促进学科专业交叉融合,加快推进新工科建设”。2018年3月,教育部公布了两大类612项新工科研究与实践项目,我国新工科建设的行动已经全面展开[1]。2018年,中国地质大学(北京)信息工程学院负责了两项新工科研究与实践项目。在新工科背景下,我院计算机科学与技术教研室开展了计算机科学与技术专业课程的教学改革与实践。
近年来,我国高性能计算技术快速发展,作为科学研究的重要手段,高性能计算已经渗透到科学研究和社会生活的各个方面。在多核计算和大数据时代,作为计算机科学与技术专业的学生迫切需要掌握高性能计算的理论、方法和技术,了解高性能计算与其他学科的交叉应用,以适应社会对新工科人才不断增长的需求。因此,我教研室进行了新大纲改革,为计算机科学与技术专业本科生开设了高性能计算导论课程。
一、高性能计算课程的现状
1998年,教育部高等学校计算机科学与技术教学指导委员会将“并行计算”课程定位在高等学校计算机专业高年级本科生或研究生以及面向计算学科的非计算机专业的研究生层次上。设置该课程的宗旨是为了我国培养面向21世纪的厚基础、宽口径、强能力、高素质,具有时代性多样化人才的需要[1]。为了培养计算机专业本科生并行与分布式计算思维与系统能力,国内知名高校已开始面向本科生开设高性能计算相关的课程。比如,清华大学开设了“高性能计算导论”,北京大学开设了“多核编程”,浙江大学开设了“多核计算”、“网格计算和分布式系统”、“并行计算机体系结构和编程”,中国科学技术大学开设了“并行计算”,华中科技大学开设了“并行编程原理与实践”[2]。
虽然一些名校开设了与高性能计算相关的课程,但是大部分高校仍然没有开设相关课程,在高性能计算的基础知识教育方面存在明显不足,主要原因包括:(1)高性能计算支撑环境费用昂贵,相关教学研究人员比较匮乏;(2)高性能计算是一门理论与实践相结合的综合性课程,涉及的先修知识又较为广泛,由于学生已经习惯于串行计算的思维和编程模式,对于具有综合性和复杂性的高性能计算知识结构和内容不容易掌握,以致教学质量不尽如人意。针对教学中面临的突出问题,高校需要加大对高性能计算环境的投入,教师需要设计合理的教学实践内容才能激发学生的学习兴趣,促进学生对知识的吸收理解。
二、课程设计
(一)教学内容
在中国地质大学(北京),高性能计算导论课程为计算机科学与技术专业大三学生的专业核心课程,每年在秋季学期授课。根据本课程教学的特点,采用“讲授+实践”相结合的方式。该课程重点为学生讲授高性能计算的基本概念、并行计算机体系结构、消息传递编程接口MPI和共享编程模型OpenMP。关于该门课程的教学内容,我们设计为六个章节。第一章:计算的演化发展。主要讲授早期的计算模式、并行/分布式计算、网格计算和云计算。第二章:高性能计算基础。主要讲授高性能计算的基本概念、并行计算性能评估、并行计算机体系结构和存储结构。第三章:并行程序设计。主要讲授并行程序开发方法、并行程序设计模型和循环程序并行化的一般方法。第四章:Linux系统和并行环境。主要讲授Linux系统的使用、Linux并行计算平台搭建及应用。第五章:MPI并行编程。主要讲授与MPI相关的基本概念、MPI基本函数、自定义数据类型和聚合通信。第六章:OpenMP并行编程。主要讲授OpenMP编程制导语句、OpenMP库函数和OpenMP计算实例。
(二)教学计划
高性能计算导论课程共有48学时,其中理论课32学时,实验课16学时。该课程的课时安排如下表所示。下表中1—6部分属于理论知识教学,7—10部分属于实践知识教学。
三、课程实践教学的探索
高性能计算导论课程是一门实践性很强的课程,除了讲授基础的理论知识外,还需要设计相关的实验内容,以便巩固和加深学生对并行计算机体系结构、并行编程模型和并行软件设计与实现的整体理解。
从上表中可以看出,该课程设置了16个学时的实验内容,具体包括四个实验:Linux系统的安装与使用实验、并行环境的安装与使用实验、MPI并行程序的设计与编写、OpenMP并行程序的设计与编写。关于实验环境,我们为学生提供了一个Linux集群,供学生做实验使用,但原则上我们要求学生在公共实验室的计算机上独立安装Linux系统和并行计算环境,并且这四个实验要求学生独立完成,实验的具体内容如下:(1)实验一要求掌握Linux系统的安装和Linux基本命令的使用,学会在Linux系统下编译和运行C或C++程序。(2)实验二要求掌握并行计算环境的搭建与使用,具体是安装MPICH,构建MPI编程环境。(3)实验三要求掌握基于MPI的并行编程方法,具体是编写课件第五章PPT中的案例,使用SPMD编程模式编写一个求解π的MPI程序。(4)实验四要求掌握基于OpenMP的并行编程方法,具体是编写课件第六章PPT中的案例,编写求解π的OpenMP程序,编写求解π的MPI+OpenMP程序。其中,需要编写4个版本求解π的OpenMP程序,分别是:并行域并行求解、使用for循环制导计算、使用带reduction子句的for循环制导计算、通过private子句和critical制导计算。
该课程实践教学的考核要求是每位学生需要提交实验报告一份,并且在实验报告中需要包含程序代码、运行结果的截图、实验结果分析以及对高性能计算的理解与体会。
四、考核方式及教学效果分析
本课程的学生成绩由平时成绩、实验成绩和期末成绩三部分组成,其中平时成绩占10%、实验成绩占30%、期末成绩占60%,成绩以百分制记。平时成绩由出勤、课堂表现和平时作业等综合评定。实验成绩更注重考查学生动手编程的能力。通过考核结果分析,我们得出以下结论:(1)该课程的教学达到了教学目标。(2)60%以上的学生成绩为优良,说明课程和实验内容的设计整体是合理的。(3)大概13%的学生只是达到了及格水平,仍然有一部分学生对高性能计算理論的枯燥性有一定的抵触。因此,在今后的教学中,我们将进一步凸显高性能计算的重要性,加大理论与案例相结合的力度,提高学生学习该课程的积极性,争取获得更好的教学效果。
五、结语
本课程通过合理的教学和实践内容设计,理论与实践相结合的教学方式,以及多种形式的教学方法和考核手段,达到了良好的教学效果,同时,高性能计算技术本身也在不断地发展,因此在以后的教学过程中我们将不断充实新的教学内容,始终保持高性能计算课程内容的前沿性、先进性,从而高质量地完成高性能计算的教学任务。
参考文献:
[1]陈国良,孙广中,徐云,吴俊敏.并行计算课程的教学方法[J].中国大学教育,2004,(2):35-37.
[2]陆枫,金海.将并行计算纳入本科教育 深化计算机学科创新人才培养[J].高等工程教育研究,2016,(6):108-112.