盛乐标
摘 要: 高性能计算在众多领域的广泛应用,使得开展高性能计算教学变得更加迫切,但目前国内对非计算机专业的高性能计算课程教学没有太多的经验。在考虑学生和科研工作实际需求的基础上,结合教学实践经验,摸索出一套合理的高性能计算课程教学内容及教学方法。课程内容包含了Linux基础知识、OpenMP/MPI编程、异构编程等,通过具体的计算示例,介绍高性能计算在不同学科中的应用,以提高学生的学习兴趣,锻炼学生解决实际问题的能力。
关键词: 高性能计算; 教学方法; 教学实践; 课程内容
中图分类号:G642 文献标志码:A 文章编号:1006-8228(2019)07-56-03
Abstract: The wide application of high performance computing make it needful to give a related course. However, there is not much experience in the teaching of high performance computing courses for the non-computer specialties in China. By considering the basic need of the students and the scientific research, a rational content setting and teaching method of high performance computing course is proposed based on the teaching experience. The course content includes Linux basics, OpenMP/MPI programming, heterogeneous programming, etc. Through the specific calculation examples, the applications of high-performance computing in different disciplines are introduced to improve students' interest in learning and to train students' ability to solve practical problems.
Key words: high performance computing; teaching method; teaching practice; course content
0 引言
高性能计算已被公认为是继理论科学和实验科学之后的第三大科学研究方法,它在促进国民经济发展、国防建设和科技进步方面具有重要的战略地位。高性能计算的水平已经成为衡量一个国家综合实力的重要标志之一[1]。从传统学科到新兴学科众多领域,对高性能计算都有着强烈的需求。一方面,国内多家高校和研究机构都建设了大型的高性能计算平台,一些课题组也纷纷采购规模不等的计算机集群;然而却很少有高校针对高性能计算开设专门的课程。所以在本科高年级阶段和研究生阶段开设高性能计算课程就显得非常必要。该课程的开设能促进学生科研水平提升,也有助于培养学生高性能计算集群使用技能和掌握高性能计算程序编写技巧。
高性能计算是一门综合性学科,包括硬件系统、软件研制、建模、算法等一系列内容,是一个知识密集的创新研究领域。针对非计算机专业的高性能计算课程是一门新的课程,没有太多經验可供借鉴[2]。该课程既不是单纯的计算方法课,也不是Linux操作系统课程或者编程课,若要面面俱到地将高性能计算所涉及的内容都作为课程教学,那将占用大量课时,与我们引领学生快速掌握高性能计算基本知识的初衷背道而驰。因此,只有结合实际情况,有针对性地设置教学内容,才能使学生用最少的时间掌握最有用的高性能计算知识。南京大学是较早开展高性能计算教学的高校,通过近几年教学经验的总结,我们探索出了一个相对稳定的高性能计算课程的教学模式和教学内容结构,在实际讲授过程中取得了不错的效果。
1 高性能计算课程的内容设置
由于高性能计算课程的授课对象主要是即将或者已经开始进行科学计算相关工作的学生,因此课程的内容设置必须能满足他们的科研工作需要,并且具有更多的实用性。在这样的前提下,我们就需要合理增加与科研工作相关的作业调度系统、并行编程等方面的内容,而相应减少操作系统原理、集群管理等方面的内容。表1列出了我们所总结出来的比较合理的“高性能计算”课程课时安排。这些课程内容不仅有提高学生学习兴趣的高性能计算发展历史介绍,也包括了基础的Linux知识和并行编程知识,还包括了高性能计算在不同学科中的具体应用示例,并结合最近比较热门的人工智能相关知识,从多个方面帮助学生尽快掌握高性能计算知识。下面将分四个方面分别介绍该课程所安排的具体内容。
1.1 Linux基础知识
高性能计算机集群一般运行的都是Linux操作系统。不了解Linux的基本知识,往往要被高性能计算拒之门外,不懂Linux就相当于在微软Windows操作系统中使用画图程序但不知道如何使用鼠标一样。因此,在学习其他技能之前,学生必须掌握一定的Linux基础知识[3-6]。在介绍完高性能计算的发展历史和计算机集群架构后,本课程将首先介绍用户管理、进程管理、常用网络命令、系统监控命令等基本Linux操作命令,并穿插讲解进程、线程、地址空间等编写并行程序时会接触的内容。
Linux系统上的文件系统与Windows系统上有着很大的区别。学生还需掌握Linux的树型目录结构,了解系统特定文件目录的位置和作用,以及对文件、目录的权限管理等。大型的高性能计算机集群一般都使用并行文件系统,我们也应对Linux的并行文件系统作简单的介绍。