并行计算课程教学方法

并行计算课程教学方法

摘要:结合在并行编程实践和《并行计算》课程教学经验,分析了面向非计算机专业学生的《并行计算》课程的设计原则和目标,探索了《并行计算》课程的教学内容设计。通过基础知识与并行编程知识讲授并重、讲授与实做并重的授课方式,重点培养学生应用并行计算解决实际应用问题的能力。

关键词:并行计算;教学方法;探讨

一课程设计原则和目标

(一)设计原则

《并行计算》课程的学习内容主要包括:并行算法设计、并行计算机体系结构和并行编程三部分[1]。该课程面向的学员大部分为船舶与海洋工程专业,具有明显的跨学科的特点,课程教学的最终目的是培养学生用并行计算的思想解决相关领域内具体应用问题的并行求解的能力,因此,课程应在围绕基本理论开展的同时,针对学生的具体情况,结合船舶与海洋工程专业各领域对并行计算应用的具体需求开展设计,避免出现重理论、轻实践的情况。

(二)设计目标

根据《并行计算》课程的特点和授课对象的特点,课程设计目标如下: (1)在教学内容上,讲授必要的计算机结构、编程的基础知识,弥补非计算机专业学生计算机基础知识的不足;(2)为了达到与各专业实际应用相结合的目的,根据不同专业应用背景设置具体的实做内容;同时,课程进行中引导不同专业学生之间对各自的并行计算问题进行交流与总结,达到相互学习,共同进步的目的。

二教学内容设计

根据课程的总体规划,《并行计算》课程的教学内容分为讲授和实做两部分,讲授部分主要包括:基本知识点、并行算法设计和实现、典型应用问题并行算法设计等内容的讲授,实做部分主要包括:熟悉并行计算机和编程环境,典型数值计算方法并行算法实现,专业应用问题并行算法设计与实现及讨论。

(一)讲授

(1)基础知识点

《并行计算》课程基础知识点的讲授主要包括五部分内容,一是普及非计算机专业学生关于并行计算系统的基本知识,二是以MPI为例讲授消息传递并行编程的基本思想和方法,三是讲解并行程序的性能评价和优化方法[3],四是以OpenMP为例讲授共享存储并行编程的基础知识,五是讲授MPI+OpenMP混合编程的方法和实现。1)并行计算概述。首先,从对并行计算应用需求谈起,介绍并行计算的应用方向和领域;接着,给出并行计算的概念,包括:并行计算的定义、高性能计算机TOP排名、并行计算分类等;然后,介绍国内外并行计算发展历史,结合并行计算机的发展历程讲授向量机、共享存储多处理机计算机、分布式共享存储并行计算机、大规模并行计算机、集群等概念;最后,结合本单位在并行计算研究和应用中取得的成果,讲授并行计算在实际中的具体应用。2)并行计算机体系结构与编程模型。结合具体的超级计算机示例,首先介绍并行计算机的体系结构相关的知识点;再讲授进程与线程这两个核心概念和编程环境;最后介绍并行编程模型和并行程序设计的基本思想。3)MPI消息传递并行编程。讲授内容主要包括:基础概念、基础编程、高级编程三部分。其中基础概念包括:MPI发展历史、MPI实现种类、MPI程序的一般结构、MPI程序的编译与运行、MPI数据类型以及6个最基本的MPI调用等内容;基本编程主要结合一些容易理解和实现应用问题的并行实现,介绍编写基本MPI程序的相关知识点,具体包括MPI程序设计的基本模式、通信域、消息、点对点通信等相关概念;高级编程主要结合实际案例介绍编写高效MPI程序的相关知识点,以ð值数值并行求解为例,分别使用点对点、聚合通信对其进行实现,分析比较不同实现方法的优缺点和使用范围。4)并行程序性能评价和优化方法。讲授内容主要包括基本概念、并行程序性能评价方法、并行程序性能优化方法等内容。其中,基本概念主要包括:并行程序执行时间、加速比、效率等内容;性能评价方法,主要讲述:加速比、数值效率、并行效率的概念;性能优化,分别讲述串行程序性能优化、并行程序性能优化的常用方法。5)OpenMP共享存储并行编程。讲授内容主要包括:基础概念、OpenMP指导语句、数据环境控制三部分。其中,基础概念包括:OpenMP发展历史、OpenMP指导语句、OpenMP存储模型等内容;OpenMP指导语句部分包括:parallel结构、工作共享结构、Tasking子句、结构嵌套规则等内容;数据环境控制包括:变量共享和私有、并行域边界数据处理、数据环境控制等内容。6)MPI+OpenMP混合并行编程。教书内容主要包括:MPI+OpenMP混合编程模式的结构、MPI+OpenMP混合编程模式的实现和性能评价三部分。

(2)并行算法的设计与实现

本部分内容,主要讲授如何运用MPI并行编程环境完成数值积分、矩阵相乘、线性方程组求解、FFT等典型的数值求解问题的并行算法设计、实现和程序性能的优化[4,5],同时,以ð的数值求解为例讲授MPI+OpenMP混合并行编程模式的设计实现及性能分析。重点培养学生运用并行计算的手段解决实际应用问题的能力。1)数值积分并行求解。以梯形积分公式(ð的数值求解)为例,分别讲述如何采用简单区域分解、主从模式数值积分并行算法设计和实现,并对两种方法的优缺点和并行程序的执行效率进行分析比较。2)矩阵相乘并行求解。主要讲授如何采用行行、行列、列行、列列四种划分方法实现矩阵相乘的并行算法的设计和实现,并结合并行算法对以上四种划分方法的计算量和通信量进行比较分析。3)线性方程组并行求解。主要讲述LU分解、三对角方程组求解得并行算法的设计和实现。4)FFT求解的并行实现。主要讲述一维、二维FFT算法的并行算法设计和实现,及其在多项式相乘、循环矩阵方程组求解中的应用。5)MPI+OpenMP混合并行编程。主要讲述如何在SMP集群上,采用MPI+OpenMP二级混合并行编程方法实现ð的数值并行求解,并结合测试结果,比较MPI、OpenMP、MPI+OpenMP三种并行模式的优缺点和使用范围。

(二)实做与讨论

实做与环节采用“基础十领域”的方式,与讲述部分穿插进行,实验既包含典型的MPI案例编程实现,又包括面向各专业自身领域的并行应用开发。在基础实验环节,由每个学生独立完成,学生结合教师对MPI、OpenMP编程知识点的讲授,以ð值并行求解、矩阵相乘、线性方程组并行求解等典型应用计算问题作为研究对象,采用不同的并行算法和通信方式,反复练习和比较分析,强化学生对MPI、OpenMP及混合编程并行编程基础知识的理解。在领域并行应用开发实验环节,实做部分主要为选择2-3个专业领域中常用问题,采用学生做、学生讲方式的方式进行,带领学生一起完成应用问题的并行求解,锻炼学生应用前面所学的并行算法设计、编程等基础知识解决学术研究和专业领域内具体问题的并行处理的能力。

(三)考核方式

《并行计算》课程的考核可以采用笔试+实做的考核方式,以考核学生对《并行计算》课程基本知识点的掌握情况和应用并行计算解决实际问题的能力,实现对学生并行计算理解与应用能力的综合评价。

三总结

随着并行计算机的普及和应用需求的增长,对并行计算基础知识的教学提出了新的要求。本文针对并行计算课程,结合作者在教学过程中的经验和思考,就如何在非计算机专业的学生中开展课程的教与学进行了探讨。 

参考文献

[1]张林波,迟学斌,莫则尧,等.并行计算导论[M].北京:清华大学出版社,2006.

[2]徐新海,唐玉华,林宇斐.跨专业并行计算基础课程教学设计[J].计算机教育,2014,(23):106-109.

[3]MichaelJ.Quinn著,陈文光,武永卫等译.MPI与OpenMP并行程序设计[M].北京:清华大学出版社,2004.

[4]陈国良,等.并行算法实践[M].北京:高等教育出版社,2004.

[5]BarryWilkinson,MichaelAllen著,陆鑫达等译.并行程序设计[M].北京:机械工业出版社,2002.

作者:范培勤 韩梅 单位:海军潜艇学院