设 为 首 页  
加 入 收 藏
联 系 我 们
新闻动态 | 政策公告 | 教指委专栏 | 地方专栏 | 学校专栏 | 校企合作 | 表格标准  
2010年国家精品课程申报系统已开通 [2010-3-16]

2010年国家精品课程相关文件发布 [2010-1-28]

2009年国家精品课程评审相关文件发布 [2009-4-22]

黔南民族师范学院计算机科学系实验室审查通过 [2009-1-1]

2008年国家精品课程评审相关文件发布 [2008-4-22]

2007年国家精品课程公示名单已经发布 !!! [2007-10-18]

技术支持电话:
025-84813211
如果您有什么意见和建议请致电:
025-84813211
发送电子邮件到:
gaojs_lgc@moe.edu.cn

 

华南理工大学“多核软件设计”课程建设
 

华南理工大学“多核软件设计”课程建设

 

华南理工大学软件学院 陈虎

(广州五山 510640

 

一、引言

多核处理器技术是当前高性能微处理器系统发展的主流趋势。以Intel为代表的国际主流微处理器厂商已经成功推出了多款多核微处理器系统,应用领域也从高端服务器向一般桌面系统延伸。如何充分发挥多核处理器的性能优势,已经成对当前软件产业的重要挑战。在已有软件工程专业的教学体系中,还没有课程能充分指导学生掌握多核处理器上软件设计的方法和技巧,这直接制约了多核处理器应用的普及和深入,制约了软件技术水平的提高。因此,开设“多核软件设计”课程具有相当的重要性和紧迫性。

华南理工大学软件学院和计算机科学与工程学院在多核微处理器系统出现之初,就已经意识到该技术对软件设计的重大影响,开始研究相关技术和规划设立“多核软件设计”课程。200612月,作为Intel大学合作计划的合作伙伴,华南理工大学派遣本课程的负责教师参加了相关技术培训。20073月,该课程进入“Intel大学合作计划”,并接收了Intel公司捐赠的相关实验设备。20076月,该课程被批准为2007年度“教育部-Intel精品课程”建设项目。

 

二、“多核软件设计”课程的知识体系

根据多核软件技术的本身特点,以及我校整体课程体系情况,“多核软件设计”课程的主要内容包括四个主要部分:基本理论知识,多核软件设计方法,基于多核处理器的并行算法设计与实现,多核软件性能分析工具的使用。

1、基本理论知识

该部分主要介绍多核软件设计的硬件和操作系统平台基础,以期让学生掌握多核软件设计的基本原理:

A)多核处理器体系结构。此部分将重点讲授基于地址空间共享机制的多核处理器体系结构主要技术特征,介绍以Intel公司为代表的主流多核微处理器产品,并将根据多核处理器的发展介绍其它有代表性的多核微处理器体系结构。

B)多核处理器上的操作系统。该部分将首先回顾线程和进程的基本概念,继而讨论操作系统对于线程的不同实现思路(内核级、应用级和混合形)和特点。在此基础上,介绍多核处理器上操作系统的关键性技术问题,重点介绍Windows 2000操作系统中多核处理器的线程调度机制。

 

2、多核软件设计技术

这部分内容主要讲授基于LinuxWindows等操作系统平台上多线程程序设计的基本操作系统原语,以及OpenMP的基本设计方法,以期让学生掌握使用多线程方法进行多核软件设计的基本技能。

A)基于Linux平台的多线程程序设计方法。该部分主要讲授pthread线程库中的主要API接口函数,包括线程创建、撤销、互斥锁、条件变量、信号量等,并通过N栅栏和生产者/消费者两个问题介绍上述API接口函数的使用。

B)基于Windows平台的多线程程序设计方法。该部分主要讲授Windows平台上的多线程API接口函数,包括线程创建、撤销、挂起/恢复、优先级设置、睡眠、临界区等。

C)基于OpenMP的多核软件程序设计方法。该部分主要讲授OpenMP的主要原理和特点,编译制导语句格式,语句中经常使用的制导命令和子句,重点介绍变量属性、线程分配策略、规约语句主要内容。

 

3、并行算法设计基本方法和实例分析

这部分内容主要讲授并行计算程序设计的一般原理,以及结合实际例子说明在多核处理器平台上使用多线程方法设计并行程序的方法。

A)并行程序设计的基本原理。该部分首先讲授任务依赖图,引入并发度、关键路径、粒度等基本概念,然后介绍了三种基本的任务分解方法,最后围绕加速比、执行效率、成本等概念,讲授Amdahl定律。

B)并行程序设计实例分析。该部分有针对性地选择了三个实例:高斯消去法,多路归并排序和蒙特卡罗法求PI值。其中高斯消去法主要介绍数值类型计算中的数据划分方法,多路归并排序主要介绍非数值计算中比较复杂的负载均衡问题,蒙特卡罗法则是通过多线程共享互斥的随机数产生过程而对性能产生的副作用,来讨论多线程程序设计中可能出现的问题。

 

4、多核软件的性能分析方法和工具

这部分内容以Intel公司的VTune性能分析工具为基础,介绍了多核软件实际运行性能的分析和优化方法。首先介绍了性能分析工具中采样方式和调用图方式的工作原理,然后介绍了Thread Checker工具中关于数据竞争、死锁、关键路径、负载均衡等重要问题的方法。

 

三、“多核软件设计”课程建设的几点经验

“多核软件设计”是当前新兴的软件设计方法和技术,它需要结合计算机系统结构、操作系统等基础理论知识,还需要掌握并行算法设计的基本思想和方法,以改进和优化已有的串行程序设计。这对课程的教学和研究都提出了新的要求。我们在该课程的建设中在以下方面取得了一些经验。

1、重视科研工作和教学的联系,以最新科研成果带动教学水平的提高

本课程团队长期从事计算机系统结构和基础软件的研究工作,对当前多核处理器技术的发展比较了解,充分认识到多核处理器体系结构对已有软件设计方法提出的新挑战和新问题,并在多核处理器出现之初就搭建了相关实验平台,开始了多核软件设计的研究工作。正是这些研究工作使得我们具备了多核软件设计的经验,掌握了其关键技术,认识到其中可能存在的误区和问题,这为后续的课程建设奠定了坚实的基础。

同时,在科研工作中我们积累了一批多核软件的开发成果,这些成果直接为建立多核软件设计的实践案例提供了丰富的素材。

 

2、重视案例教学和动手实践能力的培养

如何通过多核体系结构提升软件的性能是本课程的核心目标,这需要学生具备一定的并行算法设计能力。针对本科学生的知识水平和接收能力,本课程尽量简化了相关的理论内容,而采用学生熟悉的串行算法的并行化过程作为教学案例。通过对这些教学案例的深入分析,使得学生能比较直观地理解并行算法设计的基本思路和方法。

同时,本课程还充分利用已有的多核计算机系统,特别是Intel公司捐赠的4核和8核服务器,为学生提供了良好的多核软件设计实践环境。通过对两个经典串行问题(优先级查找和K值算法)并行化改造过程的实践,提高分析和解决问题的能力,以及实际动手编程的能力。

 

3、结合广东软件产业的实际情况,设定教学内容

广东省国内软件产业的重要基地之一,在面向商业应用软件开发方面具有很强的优势,因此本课程教学内容和实验案例中大多以广东省应用最为广泛的商业计算核心并行化为主导,突出了经典的非数值计算问题,从而增强学生的学习兴趣和未来解决实际问题的能力。

 

四、总结

“多核软件设计”是随着多核处理器的出现而发展起来的一门新兴课程,内容涉及计算机体系结构、操作系统和并行算法等多个基础知识领域。在华南理工大学的“多核软件设计”课程中,突出了教学实践环节,强化学生对多核软件设计基本技术的训练,引导学生自主分析、设计、实现和评估多核处理器上的经典并行算法,并利用多核软件分析工具对已有软件进行性能分析和改进,以期增强学生利用多核处理器并行特性自主解决实际问题的能力。

多核处理器技术和相关的软件设计技术依然是当前发展非常迅速的一个领域。在未来的教学过程中,本课程将及时汲取相关领域的最新研究成果,不断更新教学内容,加强实践素材,进一步提高该课程的教学质量和水平。

课程教材:

[1] Shameem Akhter, Jason Roberts著,李宝峰  富弘毅  李韬译,多核程序设计技术,电子工业出版社 , 2007ISBN 9787121038716

课程课件和实验案例网站:

http://www.gdsoftwarelab.cn/uploadfile/Multicore/index.htm

主要教师简介:

陈虎,副教授,1994年、1997年和2000年在国防科技大学计算机学院分别获工学学士、硕士和博士学位,研究方向:计算机组织与系统结构。在国际会议和国内核心期刊上发表论文20篇,申请专利4项。曾经参与国家863集成电路重大专题,国家自然科学基金等高性能微处理器方面的研究项目。目前,在“基础软件与应用构建”省级创新平台,广州市重点科技计划项目“数据仓库关键技术的研究”中负责数据仓库预计算的并行化工作,开展了许多面向商业应用领域的并行计算研究和开发工作,对多核软件设计具有比较扎实的理论基础和实际开发经验。

     
中国教育部高教司 版权所有