APP下载

基于模块化组织的教学实施研究
——以并行计算类课程为例

2023-08-31吴建平银福康杨锦辉

高教学刊 2023年24期
关键词:并行算法课程内容模块化

吴建平,银福康,彭 军,杨锦辉,汪 祥,张 泽

(国防科技大学 气象海洋学院,长沙 410073)

课程是学生培养的核心环节之一,课程内容是其中最重要的组成部分,因此,虽然在并行计算相关课程的内容设计上,现有研究成果寥寥,但在其他课程内容设计的研究上,确已有很多研究,并获得了不少研究成果。目前,关于课程内容设计的研究,主要集中在课程内容重复问题、课程体系、模块化设计等方面。

从单一课程看,在建设时为满足不同来源的学生尤其是缺乏某些基础的学生学习的需求,很容易陷入追求自我最大程度的完备,而导致课程内容庞杂、繁多,且与其他课程存在大量重复的问题。张靖[1]发现本科经济法教学中,存在课程重复设置交叉且开设时间安排不合理的问题,并提出了要从理论教学、案例应用、实践教学等方面对课程内容进行最佳组合设计的建议;张霖等[2]发现我国高等教育学专业硕士研究生课程存在课程内容重复、先进性不够、结构不合理等问题,并提出了增加方法论课程、交叉学科课程、跨学科课程等方面的建议;赵玉等[3]发现在经济管理类专业课程群建设中,也存在内容重复的问题,并提出了以提升学生素质和能力为导向,构建精简教学内容的专业课程群的对策;刘健智[4]对21 所高校物理学科教学教育硕士课程设置进行的文本研究发现,部分课程内容之间相互重复或交叉,并提出了对部分课程进行删除、合并,以及在专业必修与选修课间进行类别调整等建议。

虽然很多研究都已经指出在课程内容设置上出现重复的问题,但在出现原因与解决方法方面很少提及,或所提出的解决方法非常简略,可操作性不强。例如,文献[1]中所提及的对课程内容进行最佳组合设计,但如何进行具体设计并未给出。文献[3]中提及要对教学内容进行精简的建议,但如何进行精简也没有介绍。文献[4]中提到了对具体课程的删除、合并与类别调整等建议,具有一定的可操作性,但主要针对物理学教学教育方面,难以直接应用于其他领域的课程建设。

出于对课程优化设计的考虑,一个很自然的想法是对相关课程进行模块化设计,在这方面已有不少研究人员开展相关研究工作。屈婉玲等[5]针对离散数学课程,对教学内容按知识单元进行模块化设置,以便根据培养目标的不同,进行教学内容的灵活组织。施成华[6]针对隧道工程课程结构体系松散、内容庞杂的问题,提出将课程划分成若干模块,并对不同模块采用不同的教学与考核的方法。魏英[7]在深入分析大学计算机基础课程教学所存在的问题的基础上,根据各部分内容相对独立的特点,对分层模块化教学模式进行了研究。兰长林等[8]采取课程内容模块化和教师讲授、专题报告研究型教学模块化相结合的方式,开展了模块化教学方法研究。这些研究虽然针对模块化教学,但主要限于单一课程内部,也主要侧重于对课程内容聚集为少量单元进行组织,而对其间相互关系及其与其他课程之间的关系考虑较少。

在涉及课程之间相互关系的研究上,刘庆昌等[9]对植物生产类专业,提出了“两体系、三层次、模块化”的教学体系,将教学体系整体上分为理论教学和实验实践教学两个体系,每个体系分为三个层次,并按不同专业设置课程模块,以达到压缩学分总量、强化基础、增加实验实践的目的。北京大学陈晓林等[10]提出了对主要课程按照模块化、结构化的要求进行重新组织的思想,以适应学生进行多样化选择的需要。李明金等[11]对国外一流工科高校实践教学体系的特征进行了分析,并发现实践教学内容普遍具有多元化、综合化、模块化的特征,但其分析的模块化主要是将实践分类为基础实践、专业实践与创新实践三个类别。王稼军[12]对大学与中学物理教学的衔接问题进行了研究,并重点分析了新课标中学物理模块化组织与知识点类别设置给大学物理教学带来的挑战。这些研究在进行模块化研究时,涉及到了课程之间的关系,但没有具体描述如何识别这些关系,以及如何利用这些关系来进行教学内容的组织。

本文试图考虑针对所有学历研究生的课程并行算法与针对大气科学(气象海洋预报)专业本科生的课程并行计算技术,在基于知识点的模块化基础上,综合考虑各方面因素的影响与需求,研究对课程内容的优化设计,以期能尽量减少内容上的重复建设,提高不同层次与不同来源学员学习计划规划的针对性。

一 并行计算类课程模块化组织现状

并行计算类课程在国防科技大学(以下简称“我校”)虽然都还是选修课,但随着数值模拟作为第三种科学研究手段逐渐成为共识,在气象海洋环境数值预报、数值气候预测、计算流体力学和核科学等各个领域,已经得到广泛应用。另一方面,在实际应用中,对模拟精度要求越来越高,所要求解的问题规模越来越大,而单节点的内存空间与单处理器的计算能力有限,使得人们越来越寻求通过采用高性能并行计算机进行大规模数值模拟。例如,无论是数值天气预报,还是海洋环境数值模拟,国内外多年以前即早已普遍采用并行计算的手段。因此,开设并行计算系列课程,并对其不断进行改革,具有鲜明的时代背景和现实意义。

我校目前的并行计算类课程不仅在研究生阶段开设,而且在本科阶段也开设。研究生课程并行算法针对全校的研究生开设,以便学生通过对并行计算基本概念、基本原理、基本方法与基本知识的学习与实践,为后续进行大规模科学与工程计算领域的研究与工作奠定基础。该课程总共36 学时,其中课堂实践3 学时,自20世纪90 年代开设以来,经过多年发展、几代老师的经验积累,教学内容进行了多次迭代优化,现已包括并行计算基本知识、并行计算基本概念、基本通信操作、常用任务分解、常用任务调度、常用设计模式、并行算法编程实现、典型数值并行算法与典型非数值并行算法等大的内容模块,知识层次相对较高,虽然对实践的要求较高,但理论性相对也较强。

并行计算基本知识主要涉及并行计算的基本概念、为什么要进行并行计算、并行计算的互连网络、并行计算机的分类与发展,以及并行计算模型等知识模块;并行计算的基本概念主要涉及并行算法的定义与分类、并行算法中的基本概念、并行算法的复杂性与并行算法的性能评价等知识模块;基本通信操作主要介绍常用的广播、规约、分散、收集和多对多私有通信等涉及到多个处理器集中参与的聚集型通信操作;常用任务分解主要介绍嵌套分解、数据划分、探测分解和预测分解等常用的任务分解技术;常用任务调度主要介绍数组分布与图划分等常用静态调度技术,与集中式动态调度技术;常用设计模式主要介绍数据并行计算、任务图、工作池和主从与流水线等常用设计模式;并行算法编程实现主要包括针对共享存储并行算法的OpenMP 编程与针对分布存储并行算法的MPI 编程实现;典型非数值并行算法主要介绍双调排序与快速排序的并行算法设计;典型数值并行算法主要介绍稠密矩阵向量乘、稠密矩阵乘、稠密线性方程组的并行求解、稀疏线性方程组并行求解和快速傅里叶变换的并行算法等知识模块。

同时,自2019 年起,针对大气科学(气象海洋预报)专业对数值预报技术的能力需求,在本科阶段,也开始开设并行计算技术课程,使学生掌握并行计算的基本概念、基本原理、基本方法,以及实现并行计算的典型环境,以便适应气象海洋预报保障的能力需求。该课程总共24 学时,其中课堂实践8 学时,主要包括并行计算基本概念、并行计算牵涉到的主要问题、并行计算基本原理与方法、分布与共享存储并行计算的基本原理与方法、并行计算环境基础、OpenMP 并行编程基础、MPI 并行编程基础,以及MPI 编程实践与气象应用等大模块,虽然也有理论知识的介绍,但主要侧重于实践。

并行计算基本概念主要涉及从数值天气预报的角度对为什么要进行并行计算的介绍、并行计算的基本概念与思维,以及问题、机器、算法三个层面上涉及的并行计算常用基本概念;并行计算牵涉到的问题主要涉及并行计算机的分类与发展、处理器间互连结构的抽象、高性能计算机主存的抽象、并行计算的LogP 模型、并行计算系统的软件基础等知识模块;并行计算基本原理与方法主要涉及输出数据划分、输入数据划分等任务分解技术,静态调度与动态调度的概念、块分布与循环块分布等最常用任务调度技术,基于数据的并行算法设计模式等知识模块;分布与共享存储并行计算的基本原理与方法主要涉及消息传递标准的基本属性、分布存储并行算法设计时需注意的问题、单程序多数据与多程序多数据、影响分布存储并行算法效率的因素,以及共享存储并行算法的一般结构及其主要性能优化技术等知识模块;并行计算环境基础主要涉及Linux 基础环境、GNU基础编译器、OpenMP 并行计算环境验证、MPI 并行计算环境配置和MPI 并行计算环境验证等知识模块;Open-MP 并行编程基础与MPI 并行编程基础主要以C 语言为基础,介绍共享存储并行算法与分布存储并行算法编程实践的入门级知识;MPI 编程实践与气象应用主要介绍Jacobi 迭代的简单MPI 程序实现与计算通信重叠技术的实现,以及数值天气预报WRF 模式的安装、编译与运行等基本知识。

二 并行计算类课程模块化组织教学实施中存在的问题与探讨

并行算法课程自开设以来,已为近千名研究生充分利用大规模数值模拟手段,进行后续研究与开展工作打下了很好的基础。并行计算技术的开设与近年来的教学,也已为大气科学(气象海洋预报)专业的本科生进行后续数值气象海洋保障能力的培养奠定了大规模数值模拟的理论与实践基础。但在具体教学过程中,发现还存在诸多现实问题,这里对所发现的问题进行分析并探寻解决之道。

第一,虽然针对教学目标,按模块化进行了课程内容的系统性设计,但并行算法与并行计算技术存在明显的需求层次差异性,目前课程内容设计在针对不同学生的层次性上还有改进空间。并行算法课程已经开设很多年,在内容的设计上已经经过大量修改订正,已从基本概念、基本理论、基本方法,到编程实现,再到典型并行算法,进行了内容的系统性规划。由于面向全校所有专业的研究生,教学过程中的实际举例、典型算法、具体实践都必须围绕较为通用的知识基础进行展开。并行计算技术面向的是大气科学(气象海洋预报)专业的大二本科生,尚未系统深入学习大气科学相关专业知识,因此,既需要具有一定的专业针对性,以便于后续数值预报预测课程的学习,又不能太过针对专业,对所学专业知识的要求不能太深,这方面尚需要进行进一步优化。

第二,目前并行算法与并行计算技术两课程之间还存在不少重复的内容。在并行计算技术课程开设之前,并行算法课程的开设从系统性角度出发,不仅涉及并行计算基本知识与基本概念,以及基本通信操作、常用任务分解、常用任务调度和常用设计模式等并行算法基本原理与基本方法,而且涉及OpenMP 编程与MPI 编程,以及典型数值并行算法与典型非数值并行算法等具体并行算法的设计分析,教学内容涉及面较广。在并行计算技术课程开设之后,部分并行计算基本知识与基本概念,以及基本理论和基本编程实践都已有一定基础。而目前并行算法课程虽然面向全校研究生,但大气科学专业研究生占有较大比例,如何解决本科生层次与研究生层次所学知识之间的重复性?对此,未来有两方面的解决思路可以结合使用,一是在本科生层次,对并行计算能力需求较高的其他专业,也需要要求学生进行与并行计算技术课程类似的相关知识学习;二是通过对本科生层次与研究生层次并行计算类课程内容大模块中知识点模块的进一步梳理,一定程度上去除重复的知识点模块,或适当区分本科生层次与研究生层次同一知识点模块学习时的深度与广度,例如可以在并行计算技术已介绍并行程序编程实现基础的实际情况下,不再在并行算法课程中进行此方面内容的介绍。具体实践时需要用到并行编程实现知识,直接沿用并行计算技术讲授内容。

第三,并行算法与并行计算技术同一课程内部及其间都存在较强的模块依赖关系,课程内容设计时需要考虑理顺这种逻辑关系。在大的内容模块上,并行计算技术中的并行计算基本概念、并行计算牵涉到的主要问题、并行计算基本原理与方法、分布与共享存储并行计算的基本原理与方法等,是逐层递进的基本理论知识介绍,是后续知识介绍与进行课程实践的基础。并行计算环境基础主要是并行计算实践环境的配置与验证,是后续进行编程实践的基础。OpenMP 与MPI 并行编程主要进行共享与分布存储并行算法编程实现的入门级介绍,为实际并行编程实践时进行并行程序编写提供基础。此外,在具体知识点模块上,其间也存在相互依赖关系。例如,并行计算基本概念中,问题规模、任务分解这二者在逻辑上应优先于数据相关性与并行度这两个概念进行介绍。对并行算法课程,由于牵涉的知识点模块更多,其间存在的相互依赖关系也更多。并行计算技术中部分知识点模块,如并行计算环境基础,以及以后在并行算法去除并行编程接口内容介绍后,该课程中对应的此部分内容,实际在并行算法课程实践时是必备前提。在课程内容设计时,如何处理好这些复杂的依赖关系,理顺各知识点模块间的逻辑关系,在教学设计中非常重要。对此,后续拟采用对课程所含知识模块进一步优化,使之具有一定程度上的内容最小性,即不存在两个知识点模块间双向依赖,且每个知识点模块内容不超过1 学时的情况,再基于模块间依赖关系图进行其间依赖关系综合分析,在此基础上进行各门课程具体知识点模块逻辑关系与课时安排上的仔细设计。

第四,并行算法与并行计算技术课程模块和其他部分课程相关知识点之间也存在较强的依赖关系,如果课程内容设计不合理,极易导致学生对有些内容的学习不适应。在进行并行计算技术内容设计时,由于学生还只进行了公共课的学习,因此,具体理论内容与案例设计时,应主要结合已学高等数学等课程的知识进行,例如,关于任务分解、任务调度与设计模式等,可以主要以矩阵-向量乘或矩阵-矩阵乘为基础,适当扩展到数值天气预报中通用但进行了简化而易懂的案例。此外,由于学生对计算机编程仅在大学计算机基础中涉及到C 语言,但后续数值天气预报相关课程常用软件WRF 中,既含有C 也含有Fortran 语言编写的程序,在需要修改代码进行高阶实践时,可能涉及到Fortran 程序,因此,在具体理论教学与实践练习时,主要以C 语言为基础,但在并行计算环境等教学内容中,应该适当提及下Fortran 对应的相关操作。并行算法课程需要具有一定的并行计算机体系结构基础知识,此外,为适应大规模科学与工程计算中目前以Fortran 最常用的现实,也需要以Fortran 为基础进行相关编程知识的介绍与相关编程实践。同时,典型非数值并行算法的介绍主要为排序算法,因此,需要对排序与数据结构具有一定先期学习基础。在进行典型数值并行算法介绍时,对稠密矩阵相关并行算法,需要具有矩阵乘、Gauss 消去法、LU 分解等知识基础;对稀疏线性方程组并行求解,需要有一定的图论、微分方程数值解、线性方程组迭代求解算法等方面的知识;对快速傅里叶变换的并行算法,需要具有一定的快速傅里叶变换相关前期知识基础。

第五,不同层次并行计算课程存在明显的学生基础差异性。并行计算技术针对的是大气科学(气象海洋预报)专业大二的本科生,由于各地高中所学知识的同步性,以及本科期间在同一学校同一专业就读,因此,其知识基础间的差异性相对较小,比较便于进行统一教学。但并行算法课程针对的是全校研究生,学生来源学校、来源专业各异,导致学生之间已掌握的知识基础差异很大。有的学生对计算机基础知识不甚了解;有的学生没有学习过数值计算方面的知识;有的学生对程序设计与编程实现非常陌生。为应对这种错综复杂的情况所导致的具体教学实施上的挑战,可以对课程依赖的外在知识模块进行梳理,搜集并整理成简便易学的基本知识内容清单。之后,在具体开展每学期课程教学前,事先就学生对相关知识内容的学习情况进行摸底调查,并在具体实施教学时,根据不熟悉相关知识点的学生的数量多少,决定适当简要进行知识点集中介绍,或将相关知识点材料散发给学生先行自学。

三 结束语

并行计算类课程的开设,极大提高了各层次学生进行数值天气预报等大规模科学与工程计算领域后续课程学习与科研实践时的适应性与基础能力,但在课程先后开设后,必然存在内容重复及知识点间相互依赖的问题,同时,由于学生需求层次不同、专业与学校来源各异等现实问题,难以进行统一规划教学。本文针对研究生层次的并行算法与本科生层次的并行计算技术课程,在对授课内容进行模块化设计的基础上,具体分析了实施过程中遇到的教学目标可达性、教学内容系统性、知识点间依赖性、模块内容重复性,以及需求层次差异性、学生基础差异性等问题,并探讨了未来的解决之道,以期进一步优化并行算法与并行计算技术的教学内容,并为其他存在类似问题的课程内容建设提供借鉴。

猜你喜欢

并行算法课程内容模块化
基于“课程内容六要素”的绘本文本解读路径探析
模块化自主水下机器人开发与应用
地图线要素综合化的简递归并行算法
模块化住宅
ACP100模块化小型堆研发进展
模块化VS大型工厂
一种基于动态调度的数据挖掘并行算法
基于GPU的GaBP并行算法研究
学前教育专业体育课程内容的构建
依标明辨 巧用萃取——谈如何将文本内容萃取成课程内容