武汉大学“多核架构与编程技术”精品课程课程描述

首页 申报信息 教学资源/在线学习 教学改革 教学效果

理论课或理论课(含实践)教学内容

结合本校的办学定位、人才培养目标和生源情况,说明本课程在专业培养目标中的定位与课程目标

        多核架构及编程技术是一门综合性较强的科目,属于计算机和电子信息类学科中较为专业的课程,学习本课程必须学习计算机程序设计语言、计算机组成、计算机体系结构、操作系统、汇编语言、编译技术、面向对象技术等课程。
        前瞻性的将多核架构及编程技术引入到电子信息类学科中,作为专业必修课,主要的作用是通过对较高年级本科生计算机技术和电子技术中的专业基础知识的综合与升华,帮助学生,顺应市场格局变化,接受新技术新理念,建立系统、完整的专业基础理论体系,培养学生系统设计能力和综合应用能力,培养学生的创新型思维和动手实践能力,开拓学生的专业学术视野。
        围绕着武汉大学培养 “三创”(即创造、创新和创业)型新型高素质人才的教育理念,坚持以“厚基础、宽口径、高素质、强技能”作为电子信息类专业人才培养目标,并逐步形成了“注重基础、突出能力、追求创新、发展个性”的教风和学风。本课程以培养系统分析与创新能力为目标,坚持“理论指导实践、实践强化理论”的教学改革指导思想,指导学生建立扎实的实践动手能力,培养学生的科研精神,激发学生的科研潜力。
        课程建设以我校电子信息学院“国家工科基础课程电工电子教学基地”和“国家电工电子类实验教学示范中心”为依托,以一级学科“信息与通信工程”为龙头,针对我校电子信息学院学生动手能力很强,软硬件基础知识扎实的特点,课程组在教学过程中坚持将多核架构理论与实践有机的结合,贯彻“少而精与博而通”教学思想的创新实践,体现工科专业的特色,主要是强调学生的动手能力,并结合课程前沿讲述知识。本课程的定位是理论和实践相结合,通过理论学习为实践做准备,通过实践来进一步理解理论,掌握理论。教学过程中,以实验为主,结合理论。

课程主要目标
        课程的主要目标更注重对多核架构的理解、系统设计与多线程编程能力的培养,使学生通过此课程的学习掌握扎实的多核技术的基础知识,让学生学习在基于多核微处理器的应用系统平台上进行并行编程,学到多核硬件与单核在编程技巧上的差异性。课程以上课为主,结合多核编程工具,通过编程作业锻炼学生对多核编程能力的培养。并掌握多核平台上的性能评测和调优工具,具备在多核系统平台上较强的程序设计与并行代码编写能力。可以灵活在本学科领域使用多核技术提高数据处理性能。
        实验环节是多核架构及编程课程的重要组成。通过不同层次的实验设计,课程实验达到以下主要目标:
        1)熟悉并深入理解多核架构系统的基本理论及工作原理;
        2)了解主流的多核硬件平台;
        3)多线程编程技能的训练和培养;
        4)掌握多核程序调优工具的使用,培养多核程序评测、调试及调优技能;
        5)实践探索精神和创新能力的培养。


知识模块顺序及对应的学时
        课程共设72课时,其中理论课和实验课各36学时,知识模块顺序及对应的学时如下表所示:
                      

知识模块

内容及对应学时数

基础理论

1

基于多核的计算机系统介绍(3学时)

2

核计算机系统的操作系统(3学时)

3

并行体系与多核体系结构(5学时)

4

基于多核计算机系统的软件开发工具(3学时)(实验中要讲)

5

基于多核的软件设计(6学时)

6

基于多核计算机系统的编程技术(4学时)

7

基于多核平台的程序调试技术(6学时)

8

基于多核的程序优化技术(6学时)

基础实验

1

多核软件开发工具(3学时)

2

Windows系统下多线程编程(3学时)

3

Linux系统下多线程编程(3学时)

4

Windows系统下利用OpenMP进行进行多线程编程(3学时)

5

利用Intel Thread Checker工具进行程序错误调试(3学时)

6

利用 Intel Profiler工具进行多线程程序调试(3学时)

课程设计(分组)

1

集群服务器多排队模型(开放实验室,18学时+课外)

2

基于中文的Web页信息处理(开放实验室,18学时+课外)

3

空间聚类分析(数据挖掘)(开放实验室,18学时+课外)

4

网络服务(开放实验室,18学时+课外)

    

课程的重点、难点及解决办法

课程的重点及难点:
        针对该课程的实践性本质,我们立足于在让学生理解多核架构的基础上,学会在各种编程环境下熟练使用多线程的编程技术,并能使用Intel多核编程工具进行编程、调试和优化。在此基础上,充分利用学院现有或已经完成的课题来强化学生的动手能力,使学生能在学习的同时,增强分析问题和解决问题的能力,强调动手能力和创新能力的培养。本课程的主要重点是:

1、多核架构体系与单核架构体系的异同
        学生通过微机原理等课程学习和掌握的理论体系基本上都是基于单核架构的,如何快速有效的让学生的思维理念从单核过渡到多核,对于多核与单核架构体系的异同的理解就显得十分重要和必要,是后续的学习都是以此为基础,但多核技术所涉及的内容非常之广泛,而且多核技术尚处于快速发展和研究中,因此,要学生从单核架构体系得束缚中走出来,除了理论上的对照讲解之外,必要的对比性的实验亦是必不可少的。

2、全面掌握多核程序设计与传统串行程序设计的异同
        多核架构及编程技术是计算机技术中的融合性技术,其软件和硬件都是最新的产品,其产业需求十分密切,非单纯的计算机知识的教学。这涉及到各学科、各行业的知识。而入学本课程的学生往往收到传统串行程序设计思想灌输,需要打破固有的条条框框,逐步接纳在现有平台上的并行软件设计方法论。因此课程难点之一是破除串行程序设计的固有编程经验,学习新型并行程序设计方法。

3、基于多核架构实验平台的熟悉和相关工具的使用

        多核实验平台是整个教学过程中的基础。对实验平台的掌握将关系到后面教学工作的开展。所以课程组在教学过程中特意安排了实验平台(包括软件和硬件)熟悉这个环节,其主要目的是通过使用多核机器编程来了解整个系统的工作原理和软件开发环境。

4、理解掌握OPENMP和IPP
        OPENMP和IPP由于其易用性和高性能,在目前的多核平台程序设计中被广泛使用,能够帮助程序员编写高性能的多核应用程序,特别是对于电子信息类专业的学生来说,这些内容的实际应用非常的广泛。因此,二者也是本课程组要讲述的主要内容之一。
        OpenMP是一种能够被用于显示指导多线程、共享内存并行的应用程序编程接口(API),具有良好的可移植性,支持多种编程语言,包括Fortran77,Fortran90,Fortran95以及C/C++;同时在平台支持上,OpenMP能够支持多种平台,包括大多数的类UNIX系统以及Windows NT系统(Windows 2000,Windows XP,Windows Vista等)。
        “Intel Integrated Performance Primitives” ( Intel IPP )是一套跨平台的软件函数库,他提供了广泛的多媒体功能:音频解码器(例如: H263 、 MPEG-4 )、图像处理 (JPEG) 、信号处理、语音压缩(例如: G723 、 GSM 、 AMR )和加密机制。“Intel IPP” 包含各种的函数,用于进行向量与图像处理、颜色转换、过滤、分屏、设置域值、变换,以及算术、统计、几何与图形运算。

5、理解掌握多核程序设计的基本方法
        多核程序设计涵盖面十分庞大,涉及内容五花八门,软硬件技术兼有。其中如何引导学生将计算机程序设计语言、计算机组成、计算机体系结构、操作系统、汇编语言、编译技术、面向对象技术等知识交叉起来,综合起来,真正的应用到并行计算与多核实验中去,是本门课程的主要难点之一。

重点难点的解决办法:
        课题组在设计实验内容时,根据理论教学内容来安排和设计实验,遵循循序渐进的原则,从易到难,从简单到复杂,从验证到综合到创新。并根据教学过程中的反馈,对实验内容进行修改,特别是教学中的难点,课程组通过实验来诠释,通过开放式实验室和实验室创新研究项目来鼓励学生学以致用。
        1、为方便学生的课下预习和自学,课程组在全国高校该类课程教学中首次利用多媒体工具自主开发出了交互式动画学习软件,通过模拟实验教学的方式让学生在轻松新奇的状态下就学习到了多核技术的精粹。
        2、在实验课中,首先将介绍本实验将应用到的几个理论,以及要注意的地方,然后让学生动手实验,并让学生在实验后思考实验各个环节怎么和课本结合,最后对实验做总结。这样学生就能在实验过程中,将理论和实践相结合,做到为了理解而实验,而不是为了实验而实验。通过简单的基本实验逐步消除同学们对并行编程的恐惧感。
        3、课程组安排了综合创新实验。对进行实验教学改革,改革传统的提交每个实验的实验报告做法,要求和鼓励学生合作完成相关的大型PROJECT,对project的要求是根据自己和团队的应用需要,尽量从底层开始设计。这样就能培养学生的一个大局观和综合应用的能力。
        4、安排软件调优实验。给出的题目已经有能正确运行的串行程序代码,教会学生们如何使用优化工具调优。优化工具从微软的Visual Studio入手,让学生们实验VC调试多核程序,之后改用专业工具,大大提升了同学们的兴趣,对性能调优大有信心。
        5、开展了丰富的第二课堂和开放式实验室活动活动,吸引更多学生在平时进入实验室进行实践和设计。
        6、针对教学过程中出现的难点,我们制作了小视频,通过老师在视频中的讲解,学生可以随时下载观看学习。         2009年武汉大学启用校园卡,学生人手一卡。我们目前正在进行学生通过校园卡注册实验、提交实验报告的系统,同时任课教师在实验现场使用PDA对学生实验过程和成绩进行记录存档、上传的一体化实验管理系统。该系统将在新址实验室中提交使用。

实践教学活动的设计思想与效果

实践教学设计思想
        实践教学中主要以编程实践为主,结合多核编程工具,强调灵活应用,通过编程作业锻炼学生对多核编程能力的培养。希望能够让学生学习在了解多核架构和系统软件设计的基础上,学习多核平台上的并行编程设计,学到多核硬件与单核在编程技巧上的差异性,以及多核程序评测和调优工具的使用以及优化技巧。         根据理论教学内容来安排和设计实验,遵循循序渐进的原则,从易到难,从简单到复杂,从验证到综合到创新,简单一般验证性的实验通过多媒体软件等形式让学生实验自己独立完成;综合性的实验由指导教师演示和配合多媒体软件的形式指导学生完成;对于创新性实验,由指导教师协助学生完成。并根据教学过程中的反馈,对实验内容进行修改,特别是教学中的难点,课程组通过实验来诠释,通过开放式实验室和实验室创新研究项目来鼓励学生学以致用。这种教学效果在实际实践教学过程中深受学生的好评,主要体现在以下几个方面:

1、实验教学以理论为基础,遵循循序渐进,从易到难,从验证到综合再到创新
        实验教学是理论学习的一个配套和补充。其主要作用是:协助学生理解理论难点和精粹,增强学生的动手能力和创新意识。本课程依据实验形式设计的不同,对实验教学进行了组织,通过多种实验教学方式开展实验课程的教学活动。课程专门安排了与理论学习相对应的实验课时。实验课时与理论学习的课时数相同。通过基本实验、提高和深入实验与创新综合实验,循序渐进,由浅入深掌握课程的实验内容。基本实验、提高和深入实验、调优实验主要在课程的机房进行。创新综合实验则是依托于开放式多核实验室进行。

2、多核开放性实验室建立为学生自主创新实践提供有效保障;
        多核技术的学习内容很多,单纯依靠正常的实验课堂教学是远远不够的,更需要学生更多的课外的动手和实践,为了使实验室的开放更为有效,开放形式灵活多样,我们主要采用以下几种形式分阶段多样化展开:
        (1)时间上的开放,即多核实验室在时间上是全天开放的,实验室有丰富的自学资源,学生可以自主选择做实验的时间,这可以有效的解决理论课程和实验课程的时间顺序上有冲突的问题,同时也可以给学生更多自主选择时间的自由,解决了实验室在一段时间内过于拥挤或过于闲置的状况。
        (2)内容上的开放,即学生可以结合自己的专业特点和研究方向自主选择实验的内容,在教学大纲范畴内,制定自己的学习计划,间接培养学生的判别和选择能力。
        (3)时间和内容同时开放。结合时间和内容开放的共同特点,将实验室的开放更为深入地进行,最大发挥开放式实验教学的作用。开放型实验室受到了广大学生的好评,很多学生预约进入多核开放实验室学习多核技术进行科研创新、竞赛等等,周人时数平均达到560人时。


3、实验内容涵盖全面,满足和激发学生的无限求知欲;
        除了正常的编程实验内容外,实践教学过程中还穿插了诸如:C++编译器、VTune性能分析器、IPP性能函数库、Thread Checker线程检查器和Thread Profiler线程档案器等当前在产业界普遍使用的多线程编程工具。通过学习当前业界广泛使用的多线程调试和优化工具,让学生掌握如何为多核平台编写多线程程序、如何发现潜在的数据竞争、如何发现性能瓶颈,最终目的是让学生能够编写正确的高性能的多核程序。通过这门课程的学习,可以为学生的就业提供一个好的平台。

4、丰富多彩、形式多样的多种实践教学形式并重

        1)充分利用全国多核大赛等学科竞赛平台,培养学生实践创新能力。
        在该课程的学习后,组织并指导学生参加了各种多核技术类竞赛,在竞赛中培养学生的实践创新能力,同时也为学校争得很多荣誉,课程组为学生提供相应的指导和设备。在由教育部主办的、迄今为止唯一的一届以多核技术为主旨的全国重大赛事--“2008年全国大学生电子设计竞赛-嵌入式专题邀请赛”中,全由课程组指导参赛的四支参赛队伍获得全国一等奖、二等奖、三等奖各一项。
        2)设立创新“学分”,采取多种措施鼓励学生进行多核课程创新实践
        为了鼓励学生积极主动地进行多核课程的创新实践活动,进一步促进学生实践能力的提高,在我多核课程本科教学中设置“创新学分”,将多核竞赛、多核技术大学生业余科研基金,国家大学生创新计划-多核技术项目的研究工作均纳入我院创新学分的重要组成部分予以保证。并且规定,凡电子信息类毕业生必须取得经学校或学院认可的创新学分,才可获得推免研究生的资格。在免试研究生资格评定条例中对学生创新实践活动和科研成果也进行了倾斜。
        这些措施的实施,极大地鼓舞了学生参加多核技术创新实践活动和科学研究的热情,取得了非常良好的效果。
        3)动员学生参与科研活动
        课程小组采用项目申请讨论形式,让学生进行自由发挥,鼓励学生提出自己的研究方案,对于具有创新意义的方案,课程小组依托“国家工科基础课程电工电子教学基地”多核技术实验室,支持学生参加学生科研项目,并给予一定的专项科研经费的支持,授予“创新学分”,极大的激发学生的实践热情。
        4)资源丰富的网络教学形式
        课程组还依托多核实验室的技术力量,建设了多核专业技术网站。在该网站上,提供了课程的课件、多核编程的技术讲座录像。还提供课程组在教学过程中所使用的多核平台方面的资源的下载(这些资源来自课程组的收集整理和英特尔公司的捐赠)。在多核方面相关的资源下载,主要有白皮书、指令集手册、使用手册、使用指南、试用版软件、科研报告、Intel多核软件开发工具等资料下载。网站开设了多核教学的相关论坛BBS,使得学生能够在平时自己动手做实验或者进行编程训练时,能够随时在论坛版面上进行咨询,和老师互动交流和释疑。
        5)远程预约编程实验
        课程组利用Intel公司捐赠的多核服务器,建设了远程预约编程环境。学生可以通过远程预约,在自己的计算机上连接到多核服务器上进行并行计算与多核编程实验,充分体验多核服务器的性能特点。

多核考核
        多核架构及编程技术是一门实践性很强的科目,因此在考核实验时,以能力考核为主。针对不同的实验形式,分别进行考核,最后进行加权。
        基本实验、提高和深入实验、调优实验是对学生基本实践动手能力的考核。这部分考核主要包括两个方面,一方面是在平时的实验课程中的阶段性检查,另一方面是在课外综合创新实验的考察。阶段性检查主要在一个单元教学将结束时进行;通过阶段性检查,来对学生的某一知识模块实验能力的测试;而课外综合创新实验则是检验在整个课程的学习阶段,学生综合动手实践能力的培养情况。创新综合实验根据课堂互动式讨论来进行评分。课堂上学生需要对创新综合实验的实验设计思想、实验内容、实验过程、实验结果进行详细的介绍,并进行对应的演示,而在此过程中,由教师和其他学生进行提问。该方法既是一种教学方法,同时也是一种考核方式。
        此外,为了进一步提高学生对实验动手能力学习训练的主观能动性,课程组还联合Intel公司,开展多核调优工具的认证考试工作。对于参加课程学习的学生,采用自愿报名的形式,由Intel组织考题、监考人员,进行实验能力的考核。对于通过考试的人员,发给Intel认证并认可的证书。尽管该项考核并未计入课程实验能力的考试成绩,但是通过这种方式,有效的提高了学生进行实验能力培养的主观能动性。


实践课程教学效果
        得益于完善的实践教学体系和丰富的实验内容,以及竞赛的激励,本课程是武汉大学电子信息学院最受欢迎的课程之一。
        在由教育部主办的、迄今为止唯一的一届以多核技术为主旨的全国重大赛事--“2008年全国大学生电子设计竞赛-嵌入式专题邀请赛”中,全由课程组指导参赛的四支参赛队伍获得全国一等奖、二等奖、三等奖各一项。
        在学生能力培养方面,如有的学生说:“多核计算课程系统的将这些知识串联了起来,为我们了解整个计算机系统提供了强有力的帮助。特别是多核计算课程的课程实验”,也有“老师在这个领域有非常深入的眼界,让我们的学习与工作都受益匪浅”,还有就是“重新开始审视从前硬件架构和对编程的初步的印象”。
        在学生研究与工作方面,有的说“使我在实验室的工作受益匪浅”,还有的说:“得益于当年对多核课程的学习,在这些问题的处理中我是游刃有余,常常能够很快的处理一些棘手的问题”,还有“多核编程方面的知识,为我的工作提供了有力的帮助,使我干什么事情都比其他同事先行一步”。
        在课程教学环节,学生评价是“授课老师经验非常丰富,对待难点问题经常是反复示范,不厌其烦”,“《多核技术》是一门全新的技术课程,但杨剑锋老师很好地把握住了这门课程的基础知识和最新动态,列举应用实例信手拈来,课堂既生动又深刻。”。

实验(践)课教学内容

课程设计的思想、效果以及课程目标
        信息与通信系统是实践性、工程性很强的工科学科,多核架构及编程技术也是一门实践性很强的科目,因此实验室多核架构及编程技术教学中的一个重要环节。课程组提出以多核体系结构为切入点,采用理论指导、课程实验奠基,将多核技术与本学科领域相结合的教学理念,并以此设计完成一套多核架构及编程技术课程的实践教学体系。课程的预设目标是使得学生在经过该课程的学习之后,能将该课程所学知识快速应用于本学科领域的各项科研实践(如图像处理、网络数据包处理等)。
        针对这样的设计思想,我们摸索出一条可以很快激发学生学习热情、使得学生快速掌握多核编程基本思想的途径,通过课程组教师把多核技术应用在科研项目实践上,并在第一时间将科研项目实践成果进课堂,让学生切实感受到多核技术给本学科领域的学习研究带来的程序性能的提高,开拓的学生的视野,激发学习兴趣,培养学生的钻研性。
        课程组在实验设计的过程中,根据理论教学内容设计了金字塔型实验系列,遵循循序渐进的原则,从易到难,从简单到复杂,从验证性实验到研究性实验,并根据学生反馈,及时调整实验内容和实验课时。对于教学中的难点,课程组会在实验课上通过实验进行诠释。
        同时,在实验过程中,课程组更强调学生的团队精神。通过分组进行研究性实验的开展,不仅锻炼了学生的科研能力,更锻炼了学生的协作能力。2008年全国大学生电子设计竞赛嵌入式专题邀请赛(基于多核的竞赛平台),武汉大学代表对一举获得一、二、三等奖各一组,就是有力的证明。
        通过我们的实验,学生普遍反映收获很大。
        “通过本次VTune实验,我们进一步了解了多线程在CPU中是如何协调工作的,就好像看见一样,非常高兴。”
        “这次设计的目的主要是网络数据包的分发,•••••,通过多核编程的方法,使得包转发速率提高了63%。•••,这半个月来,我们不断讨论,受益匪浅。我们也遇到非常多的问题,特别感谢杨老师在邮件中耐心的解答,使得我们可以圆满完成任务。”

课程内容(详细列出实验或实践项目名称和学时)
          

基础实验

1

多核软件开发工具(3学时)

2

Windows系统下多线程编程(3学时)

3

Linux系统下多线程编程(3学时)

4

Windows系统下利用OpenMP进行进行多线程编程(3学时)

5

利用Intel Thread Checker工具进行程序错误调试(3学时)

6

利用 Intel Profiler工具进行多线程程序调试(3学时)

课程设计
(分组)

1

集群服务器多排队模型(开放实验室,18学时+课外)

2

基于中文的Web页信息处理(开放实验室,18学时+课外)

3

空间聚类分析(数据挖掘)(开放实验室,18学时+课外)

4

网络服务(开放实验室,18学时+课外)



课程组织形式与教师指导方法
  • 建立了资源服务器。在实验开始之前,为学生收集大量的参考资料、源代码、实验数据、实验多媒体课件等。这些都有教师事先准备好,集中在服务器上,学生可以随时查阅。
  • 课程组为各个实验专门制作了多媒体课件,包括实验要求、实验步骤等详细内容。这为学生的自学提供了很好的条件,使得学生可以在宿舍里面就可以预习实验的各个详细步骤。
  • 编写的实验指导书。
  • 严格要求,鼓励创新。执行严格考勤制度,每周均有讨论课,终期进行答辩和考核。
  • 指导方式:
    • 现场指导。对于基本实验、提高实验和研究性实验,主要在实验室进行现场讲解和实验。在这一过程中,由课程组老师、博士研究生助教等现场进行指导。其中,课程组教师主要负责讲解和实验指导,助教负责进行实验指导。
    • 改革网上答疑弊端,选用邮件指导。 关于网上答疑,我们曾试过通过网络平台学生提问、教师回答,以及课程QQ群组等方式,但最终我们选定使用邮件进行答疑。这样做的原因有:如果通过网络平台进行提问的方式,经常有不法分子散布不良信息,在我们的服务器上有时一个晚上的不良信息多达2000多条,造成了非常不好的影响,同时使得正常提问的问题被淹没了。如果我们设置需要网络管理人员审核后才能显示所提问的问题,这样就使得原本一些本可以由另外一些知道解决方法的学生来回答的问题,还需要老师来回答,失去了讨论的机会。QQ群确实也是一个好的方法,学生也喜欢上QQ,但是过多的消息也会使得所提出的问题被淹没了。最终,我们选定了邮件交流。每个学生都有一个邮箱地址,每封邮件都会群发到所有的学生和所有的老师,谁会谁回答,讨论得非常热烈,取得非常好的效果,当然,通过这种方法显然的缺点就是班外的学生得不到任何信息。还有,通过对邮件中积极回答问题,能提出优良解决方案的同学,在实验课上进行加分鼓励。
    • 实验室指导。这里的实验室是指导科研实验室。对于创新综合实验、学生创意方案,课程组需要组织一些相关老师或者已经成为科研骨干的博士生进行指导,课程组教师也作为参与者,对学生创新实验与方案进行分析指导,从而有效地培养了学生的创新能力。
考核内容与方法

        在考核实验时,以能力考核为主,特别鼓励创新。
        基本实验、提高和深入实验、调优实验是对学生基本实践动手能力的考核。
        创新综合实验根据设计报告、答辩、创新性进行考核。
        考核及评价方法:方案设计占20%,答辩(演示)占40%,创新性占20%,实验报告占15%,态度占5%。
        此外,为了进一步提高学生对实验动手能力学习训练的主观能动性,课程组还联合Intel公司,开展多核调优工具的认证考试工作。对于参加课程学习的学生,采用自愿报名的形式,由Intel组织考题、监考人员,进行实验能力的考核。对于通过考试的人员,发给Intel认证并认可的证书。尽管该项考核并未计入课程实验能力的考试成绩,但是通过这种方式,有效的提高了学生进行实验能力培养的主观能动性。


Kategorien:
Nähere Informationen zur Compiler-Optimierung finden Sie in unserem Optimierungshinweis.