网站地图 | 设为首页 | 添加收藏
 

北京大学《并行程序设计》课程建设的体会

北京大学《并行程序设计》是面向全校理工科研究生开设的计算技术实践类课程。自1999年秋季开课以来,每学年开课一次,选课学生分别来自北大信息科学技术学院计算机系、物理学院、化学学院、数学学院、遥感与地理信息系统研究所等单位。与普通串行程序设计相比,并行程序设计的需求主要来自高性能计算的应用领域。这方面虽然也有一些关于并行算法设计、MPI程序设计等方面的参考教材,但它们的内容难以满足教学的需要。自开课以来,针对研究生教学的特点,我们始终坚持教学和科研相结合、理论和实践相结合的原则,采用课堂讲授、编码实践和综合案例研究相结合的教学形式,对教学的内容不断改进和完善。以教师和同学在科研工作中遇到的实例为教学主线,把理论的教学与应用实践紧密结合起来,使得学生学有所用。鼓励同学结合科研工作的需要,对先进的技术进行探索,激发同学学习和研究的热情。把并行处理的先进设施和技术及时引入到教学内容中来,保持教学内容与相关技术的发展进步相一致。

体会1:课程教学与科研工作相互促进

以教员的科研工作促进课程教学。承担本课程教学工作的教员都长期从事并行处理技术的研制和应用推广工作,在长期的科研实践中积累了大量来自不同学科的应用实例。典型的实例包括:太阳风磁场重连模拟、卫星遥感数据处理、地质板块运动过程模拟、分子化学运动过程模拟、油气勘探地震资料数据处理、基因组可变剪接数据分析等。把这些实例用于教学活动,一方面开阔了同学的视野,了解了不同领域问题的特征;另一方面也避免了枯燥的概念、方法、技术的称述。同学通过这些现实问题的分析和编程实践,获得并行处理技术适应性、计算复杂性、通信和同步开销等方面的实际体会。例如,在讲述Laplace问题及其并行方法时,以太阳风磁场重连模拟为例。使得同学认识到:Laplace计算是对一类问题计算模式的抽象、概括;对于这类问题可以采用数据并行的方法进行设计,同时讲述数据并行的概念;采用MPI实现,并行程序可获得比较好的伸缩性。

以教学活动促进教员的科研工作。把科研活动取得的认识、成果及时引入到教学内容中,既可促进教员对尚在研究中的技术进行系统整理和分析,也有利于保持教学内容的先进性。自课程建设以来,我们先后引入的相关技术包括HPF、OpenMP、MPI、pThread、集群、SMP、Grid和multi-core。教学的重点也从最初基于HPF和集群的并行程序开发技术逐步演化为现在基于MPI和pThread的并行编程技术。针对课程以研究生为教学对象的特点,对于一些还不成熟、但在教员研究领域的相关技术如Grid,则通过技术讨论和调查的方式溶入教学内容中。一方面使得同学不但掌握本领域中的成熟技术,而且对其中的前沿问题和方向有一定的认识。另一方面,通过与来自不同学科背景同学的交互讨论,促使教员从不同的角度来分析科研工作中问题,促进科研工作的进步。

以教学活动促进同学的科研活动。鼓励同学以自己科研工作中遇到的相关问题作为课程的综合研究实践,并记入课程的成绩考评。选修本课程的许多同学,特别是那些来自非计算机专业的同学,在科研活动中都需要使用并行处理技术进行科学和工程计算。他们学这门课程的目的就是要自己会写高质量的并行程序,解决科研工作中的问题。通过课程的综合研究实践环节,使得同学能够把科研工作中的问题与课程的学习结合起来,学习的方向和目标更加明确。在课堂上对综合研究实践进行讨论和教师点评,帮助相关同学解决实际的问题。同时,这样的课程综合研究实践又为今后的教学活动积累了实例和素材。

体会2:以实践驱动理论教学

并行计算常常追求计算效率的提高、对大规模数据处理的支持、对大量并发用户的支持等。一般而言,这些目标的实现与应用问题自身的特征、目标计算平台的特征有密切关系。这就导致并行应用系统的开发常常是“一事一议”,即:不同的应用问题需要不同的计算平台和实现算法、采用的计算模式也不同。例如,太阳风磁场重连模拟问题采用数据并行进行并行算法的设计,并采用静态任务划分;而基因组可变剪接预测分析则需要采用master-slave计算模式进行动态任务划分。有时,针对同一个问题,面向不同的数据规模,选用的计算平台和算法都不同。

在课程的内容设计和教学安排上,对每一个概念、技术的阐述,我们都尽可能与具体的应用实例结合起来。通过实例加深同学的认识,并分析、比较不同技术之间在适用性方面的差别。通过分子化学运动过程模拟,说明这个问题用SMP、Multi-core技术比较合适,而放到Grid则不但增加了复杂性、而且也是没有意义的。结合太阳风磁场重连模拟问题,说明并行程序伸缩性的内涵、MPI和集群技术对并行计算伸缩性的支持。通过与应用实例的结合,同学实际体会了不同技术的适应性,认识到根据需求选择技术的重要性。

并行程序设计涉及并行计算机体系结构、并行算法设计、并行程序性能优化、并行程序的开发技术等方面,内容很多。在教学活动中,我们采用课堂讲授和课堂讨论相结合的方式,解决教学内容广度与深度之间的矛盾。课堂讲授中,力图覆盖所涉及的各基本概念和技术,从比较高的层次上将它们组织成体系。对这些技术的进一步学习,则以课程综合研究案例的形式,引导同学自己去分析和思考。每个同学根据自己的兴趣、知识背景和科研工作需要,选择合适的综合研究案例进行研究设计。在课堂讨论中,各个同学将自己的研究成果、心得与大家进行分享。实践表明,这种课堂互动讨论不但督促主讲同学就并行处理技术中的某一方面进行比较深入、系统的学习和认识,而且其他参与讨论的同学也从中获得相当深入的认识。

体会3:兼顾不同知识背景的同学

选修《并行程序设计》课程的同学来自北京大学不同的理科院系。来自计算机系的同学缺乏应用问题的背景,来自其他院系的同学计算机基础较弱、而且各自的应用背景相差很大。为不同的同学选择一个共同的切入点,对本门课程是一个关键。为此,我们从三个层次上安排课程的内容:应用实例、典型问题、并行技术。把不同领域的应用实例归结成若干个数学语言描述的典型问题,以典型问题阐述基本的并行技术和问题。在课程教学中,我们采用的典型问题包括:Laplace问题、N-body问题、求素数问题等。这些问题与具体的领域背景没有关系,但每个问题都代表了一类来自不同领域的实例。例如,求素数问题体现了基因组可变剪接预测、地质板块运动过程模拟等问题的非规则特征。以这些简化了的典型问题进行并行性分析、并行算法设计和编程实践,并与相关的背景应用实例联系起来。对应用问题求解感兴趣的同学,以典型问题的并行解决方案为参考和起点,获得运用并行技术解决自己所关心问题的知识和经验。对并行技术本身感兴趣的同学,以典型问题体现的特征和需求为起点,认识并行技术在解决这些需求方面的原理和方法。

体会4:激发同学的学习兴趣和热情

几乎在每一门课程的教学活动中,总有一些同学并没有明确的学习目的,《并行程序设计》这门课程也是如此。一些同学当初选这门课程时,也许就是为了能得到学分,这种情况对计算机系的学生而言不是个例。为了实现让每个修课同学都有收获,我们从多个角度激发学生的学习兴趣和热情。

把具体的技术与实现的原理结合起来。例如在讲消息通信和同步时,强调任何一个基于网络的计算都存在这个问题,不管这个网络是Internet还是系统总线。对不同的技术而言,只有实现机制的差别。在MPI中这个实现机制是显式的消息交换,pThread中采用临界区和锁机制。这样同学通过对具体技术的学习,将能够获得一些原理性的认识。

让同学在学习过程中获得成就感。这种成就感不是来源于实现了某个并行算法、或者完成一个练习,而是通过课程的综合研究案例,解决了同学自己认为有意义的某个现实问题。例如,对于来自非计算机专业的同学,可以用他们自己课题组中的问题作为综合研究案例。在学习过程中,以这个问题为需求,对相关的并行技术进行深入分析、与教员和其他同学进行反复讨论交流。等到课程学习结束,也解决了这个科研工作的问题。对于计算机专业的同学,让他们自己动手实现某一技术的原型,比如实现一个基本的MPI系统。这样一个原型的实现,驱动同学对相关的原理和难点进行系统分析。

及时引入先进的技术和成果。作为一门面向研究生的课程,让同学认识国际上发展的前沿和方向,既是课程必备的内容、也是学生的期望。这部分的内容不需要很系统、完备,其中涉及的一些技术甚至还处在很不成熟的阶段。我们在2003年时,结合自己的科研工作,在课程中引入Grid技术,鼓励同学在对国际上有关文献分析的基础上,结合自己的课程综合研究实践,提出对Grid上并行计算的期望、技术思路设想等。2007年,在英特尔“多核技术”大学课程计划和“教育部-英特尔精品课程”项目的资助下,我们在课程内容中引入基于“多核技术”的并行程序设计技术。

英特尔公司通过“教育部-英特尔精品课程”项目,不但为《并行程序设计》课程理论教学内容的完善更新提供了相关的参考资料,而且提供了教学实践的软件、硬件支撑平台,这对本课程的建设是一个极大的促进。现在,北京大学《并行程序设计》课程的内容已经涵盖了从“多核”、SMP、集群、到Grid的各种尺度的并行技术,其中既有成熟的MPI、集群和pThread等技术,也有“多核”和Grid等正在引起广泛关注的前沿技术。我们所积累的应用案例不但来自不同的学科领域、具有不同的并行模式,而且具有不同的并行粒度、适合采用不同尺度的并行技术。例如:基因组可变剪接预测问题适合集群和Grid上的并行处理;地质板块运动过程模拟适合SMP和集群环境的并行处理;分子化学运动过程模拟适合“多核”和SMP环境的并行处理。我们也将以“教育部-英特尔精品课程”项目为契机,努力使《并行程序设计》课程的建设上到一个新的台阶,使得其他兄弟学校也能从中受益。

 

 
 

   联系我们:65904408  bb@shufe.edu.cn

网络自助服务系统 | 教学管理信息系统 | 公共数据平台 | VPN登录 | 校内搜索
 
  Copyright © 2010 上海财经大学教育技术中心 all rights reserved. 地址:国定路777号 邮编:200433