武汉大学“多核架构及编程技术”精品课程在线学习

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


课程导学 理论教学 课外作业 课程实验 教学录像 课程试卷 参考资源


1)课程概述

现如今多核处理器已经成为通用处理器的主流,多核体系结构技术是一大新兴的研究热点。本课程武汉大学国家电工电子基础课程教学基地的重要课程,目的是让学生了解当前计算机芯片设计领域中新兴多核体系设计的基本原理、技术难点、目前发展状况、以及对计算机领域带来的相关影响等,通过建立体系经典理论研究和实际的发展方向之间的桥梁,为将来从事体系结构领域、系统软件领域以及相关领域的高水平研究打好扎实的基础。学习该课程的基本目标是通过本课程的学习,使学生掌握多核体系的基本原理、典型设计策略、操作系统和编译器的相应设计、编程方式的变化方向等,达到能真正将多核技术应用在本学科领域的目的。

课程名称:“多核架构及编程技术”(课程号:20071022112)
性质:专业必修
学分:3
学时:72
开课专业:本科电子信息工程专业、通信工程专业、电子信息科学与技术专业
开课学期:6

前导课程:微机原理,C语言,计算机体系结构,FPGA等。
授课:多核架构课程组

课程建设思路:武汉大学“多核架构及编程技术”本科生课程依托于我院“国家工科基础课程电工电子教学基地”及一级学科点“信息与通信工程”展开建设,坚持将多核架构理论与实践有机结合,强调课程的实践性思想,看重学生的动手能力的培养,立足于多核多线程编程技术在本学科领域(如网络数据包处理、图像处理、视频流处理、语音处理、空间信息处理等方面)的应用实践,体现工科专业的特色。每年授课学生数约为270-300人。从2007年开始调整为第6学期开课。
本课程在全院课程中的地位:
%25E8%25AF%25BE%25E7%25A8%258B%25E7%259F%25A5%25E8%25AF%2586%25E4%25BD%2593%25E7%25B3%25BB.jpg
2)学习方法
本课程中程序设计实践占了相当大的比重,为配合本课程更好的开展教学,课程提供了课后习题,供同学们在各章节的学习思考。此外课程还精心设计了多个配套实验,让同学们在各章节理论学习的同时进行动手实践加深理解,使体系经典理论研究和实际的发展方向相联系,切实掌握多核程序设计技术。
因此对于本课程的学习主要是理论学习和编程训练相结合。结合多核编程工具,通过编程作业锻炼对多核编程能力的培养。此外,为了使得同学们可以通过多核课程的学习,促进其它课程的学习,如编程方法等。,课程组专门设置了学术指导小组,由相关学科或研究方向的教授、副教授组成,他们将会根据其科研实践真实项目,提炼适合同学们锻炼和学习的创新性实践项目,同学们可以联系这些老师来确定研究内容。
3)课程内容组织
本课程通过对多核架构和编程技术的学习,结合同学们在本专业其它课程的学习,侧重于多核编程技术的应用实践。让学生学习多核平台上的并行编程设计,学到多核硬件与单核在编程技巧上的差异性,以及多核程序评测和调优工具的使用以及优化技巧。
本课程第一章介绍了多核体系结构、芯片发展与系统软件;第二章包含有并行计算相关的知识;第三章详细介绍线程相关的概念;第四章详细介绍了在windows环境下使用多线程程序设计的方法;第五章详细介绍Linux环境下使用多线程程序设计的方法;第六章就OpenMP程序设计作了系统介绍;第七章介绍了MPI程序设计技术以及IPP对相关内容;第八章介绍了TBB的相关内容,第九章从性能调优角度介绍了相关工具的使用。纵观全课程,处处体现出多核程序设计知识与应用能力的培养。
4)课程知识体系
本课程包括四大知识领域以及相关的知识点,建议总学时不少于32。如下图所示:
%25E7%259F%25A5%25E8%25AF%2586%25E7%2582%25B9%25E5%2585%25B3%25E7%25B3%25BB%25E5%259B%25BE.jpg

  • 知识领域:
1.多核系统概述。介绍并行体系与多核体系结构的起源和特点,典型多核芯片Cell、Intel双核芯片体系分析,多核系统软件对并行编程的支持,建议最少4学时。
2.并行编程技术,介绍多线程编程技术、windows多线程技术、unix下pthread编程优化、OpenMP、MPI,建议最少14学时。
3.多核编译优化。介绍多核平台上的编译优化技术,学习使用多核平台上编译工具、多线程优化策略、多核优化函数库使用,建议最少8学时。
4.性能评测。介绍硬件性能评测工具、多线程程序的性能评测方法与评测优化工具使用,建议最少6学时。

  • 知识点:
• 多核SOC芯片技术介绍
• 多核芯片与传统单核微处理器、SMP的区别
• 多核下的各种硬件设计技术(Cache与存储一致性、网络互连、IO管理)介绍
• 并行体系与多核体系结构介绍
• 典型多核芯片:Cell、OpenSparc、Intel双核芯片、AMD双核芯片介绍
• 嵌入式多核芯片技术介绍
• 多核平台结构与芯片组支持技术(包括固件技术)介绍
• 多核操作系统介绍
• 多核系统软件对并行编程的支持
• 多线程编程对多核的支持
• Windows多核多线程编程技术
• Linux多核多线程编程技术
• OpenMP对多线程编程
• MPI编程
• 多核平台上的编译优化技术
• 多核平台上编译工具
• 多核API优化函数库
• 多核多线程程序的性能评测方法
• 多核多线程程序的性能评测工具
5)知识模块顺序和对应的学时

知识模块

内容及对应学时数

基础理论

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学时+课外)下载设计要求

5

雷达数据并行处理(开放实验室,18学时+课外)下载设计要求

6

遥感信息并行处理(开放实验室,18学时+课外)下载设计要求

6)教学大纲

课程代码:20062022071
课程负责人:田茂、杨剑锋
课程中文名称: 多核架构及编程技术
课程英文名称:Multi-Core Architecture and Programming Technologies
课程类别:专业必修
课程学分数:3
课程学时数及安排:72(理论36学时,实验36学时)。理论部分每周3学时,共6周,实验部分每周6学时,共6周(基础实验6周内完成,课程设计利用课外时间,开放实验室,需在第18周前完成)。
授课对象:电子工程专业、通信工程专业本科生第七学期
本课程的前导课程:《操作系统》、《微机原理》、《C语言》、《系统组成》、《FPGA设计》

一、 教学目的和要求
近年来,在Intel等公司的大力推动下,多核技术的发展已经超出人们的预期想象。这个发展使得单核架构的电脑逐渐被替代,更重要的是多核技术将带来业内硬件和软件设计理念和方法上一系列的更新和变革。多核时代的到来无疑揭开了计算机发展历史的新篇章。
从学科发展和现代教育思想出发,结合工科专业特点,经充分的研讨,针对我校电子信息工程、通信工程、电子信息科学与技术等本科专业,我们创建了“多核架构及编程技术”课程立体体系。该体系结构为:课堂理论教学-系列讲座-实践性教学(实验和毕业设计)三大模块。课程建设围绕该立体体系进行,以我校电子信息学院“国家工科基础课程电工电子教学基地”为依托,以一级学科“信息与通信工程”为龙头,坚持将多核架构理论与实践有机的结合,贯彻“少而精与博而通”教学思想的创新实践,体现工科专业的特色。
本课程是一门专业必修课,采用课堂教学、实验、课程设计相结合的方式,着重培养学生的实际动手能力。教学目的:掌握多核体系的基本原理、典型设计策略,全面深入了解多核体系架构,完善知识结构,能在多核平台上进行并行编程,会使用多核技术编程工具进行程序优化及调试,理解多核技术对其他学科的影响,能独立完成所要求的实验计划。

二、 课程内容与学时分配
课程内容与学时分配表
内 容
基础理论 1 基于多核的计算机系统介绍(2学时)
2 多核计算机系统的操作系统(2学时)
3 并行体系与多核体系结构(3学时)
4 基于多核计算机系统的软件开发工具(1学时)(实验中要讲)
5 基于多核的软件设计(3学时)
6 基于多核计算机系统的编程技术(3学时)
7 基于多核平台的程序调试技术(2学时)
8 基于多核的编译优化技术(2学时)
基础实验 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学时+课外)

第一章 基于多核的计算机系统介绍(2学时)
第一节 单核处理器基础
内容:为了更好地理解多核硬件系统上的多线程技术,首先对单核处理器的运行原理进行回顾,为理解多核处理器体系结构打下基础。本节内容包括处理器概念、南北桥的连接方式、微处理器的功能模块、处理器的内部构成、超标量结构与EPIC结构的对比等。
重点讲授:处理器的内部构成、基本执行流程、超标量结构与EPIC结构的对比。
第二节 基于多核的计算机系统
内容:为什么要多核、多核是什么、多核处理器结构、并行计算平台、与传统的对称多处理器(SMP)的区别、多核带来的软件挑战等。
重点讲授:为什么要多核、多核是什么、多核处理器结构、多核带来的软件挑战。

第二章 多核计算机系统的操作系统(2学时)
第一节 操作系统简介
内容:什么是操作系统、操作系统组成、并行系统、分布式系统等
重点讲授:操作系统原理、比较。
第二节 多核操作系统内容及功能
内容:多核平台的发展趋势、调度策略及算法、同步问题、死锁问题、。
重点讲授:调度策略及算法、同步问题。

第三章 并行体系与多核体系结构(3学时)
第一节 并行体系结构
内容:计算机系统分类,典型的计算机并行系统,集群系统,并行计算概念引出等。
重点讲授:全部。
第二节 双核及多核体系结构
内容:双核及多核体系结构是并行体系结构的一种,特点,区别等。
重点讲授:全部。
第三节 并行计算
内容:为什么需要并行计算、并行编程、并行编程模型、OpenMP。
重点讲授:并行编程模型、OpenMP。

第四章 基于多核计算机系统的软件开发工具(1学时)
第一节 工具概览及其主要功能描述
内容:Intel C++和Fortran编译器、Intel数学核心函数库和Intel集成性能原件库、Intel VTuneTM性能分析器、Intel线程检测器和Intel调试器、Intel线程直方统计器等。
重点讲授:各个工具在多线程中编程的作用。

第五章 基于多核的软件设计(3学时)
第一节 从单核系统到多核平台的软件移植
内容:单核多线程与多核平台上的多线程比较,存储器快存与线程优先级
重点讲授:比较
第二节 并行软件设计
内容:多线程设计(任务分解、数据分解、数据流分解、比较)、并行程序设计模式、多线程和并行程序设计结构(同步,临界段,死锁,同步原语,消息,流控制)等。
重点讲授:全部。
第三节 基于多核平台的应用
内容:科学计算,多媒体处理,多排队队列,文本处理等
重点讲授:文本处理,科学计算

第六章 基于多核计算机系统的编程技术(3学时)
第一节 线程API
内容:Windows的线程API,.NET框架的线程API,POSIX线程。
重点讲授:线程同步机制,线程池,优先级等。
第二节 OpenMP
内容:将循环多线程化所面临的挑战,提高程序性能的设计方法,OpenMP库函数,OpenMP环境变量,编译,调试,性能,特点。
重点讲授:设计方法,库函数,环境变量,调试。
第三节 一些并行程序设计问题的解决办法
内容:线程过多,数据竞争、死锁和活锁,非阻塞算法,线程安全函数和库,存储问题,Cache相关的问题,避免IA-32上的流水线停顿,面向高性能的数据组织。
重点讲授:线程过多,非阻塞算法,Cache相关的问题,面向高性能的数据组织。

第七章 基于多核平台的程序调试技术(2学时)
第一节 通用调试技术与Windows多线程程序调试
内容:在设计多线程应用程序时应该考虑的问题,使用Trace缓冲扩展应用程序,Thread窗口,跟踪点,断点过滤,线程命名,
重点讲授:在设计多线程应用程序时应该考虑的问题,Thread窗口,跟踪点。
第二节 使用GDB进行多线程调试
内容:GDB功能,创建线程通告,设置线程相关断点,线程之间的切换。
重点讲授:设置线程相关断点,线程之间的切换。
第八章 基于多核的编译优化技术(2学时)
第一节 编译回顾
内容:什么是编译,作用,过程,常用编译技术
重点讲授:作用,方法。
第二节 基于多核多线程程序的编译方法
内容:Intel编译器,编译选项,自动并行,编译器优化和Cache优化
重点讲授:全部。

基础实验
实验一、多核软件开发工具(3学时)
实验二、Windows系统下多线程编程(3学时)
实验三、Linux系统下多线程编程(3学时)
实验四、Windows系统下利用OpenMP进行进行多线程编程(3学时)
实验五、利用Intel Thread Checker工具进行程序错误调试(3学时)
实验六、利用 Intel Profiler工具进行多线程程序调试(3学时)

课程设计:分组进行
注重培养学生将多核编程技术灵活运用到实际需求环境中的能力,特别是本学科领域的应用能力。本部分实践性实验内容包括中文文本信息处理、集群服务器多排队模型、数据挖掘(空间聚类分析)、网络服务共4个综合性实验的设计工作(图像处理与语音分析的实验工作在准备过程中,设计完成后将加入到多核课程课程设计部分)。这部分实验都是由课程组教师在研或已经完成的课题任务演变而来,有较好的实验基础,同时在这部分实验准备的过程中,也得到Intel公司相关架构工程师及软件工程师的帮助和指导,保证了实验过程、结果的正确性。现分别对这4个综合性实验(课程设计)进行简单介绍:
•中文文本信息处理:
背景:计算机自诞生之日起就是以西方语言为基础的,而对于缺乏形态的汉语来说,国外的计算机语言学并不能适用。对于汉语的计算机自动处理,至今仍然没有真正进入到句子理解或句群处理的阶段。对于中文文本的信息处理,全国人大副委员长许嘉璐先生曾给予了高度关注与支持,并主持了“863”项目--中文信息处理现代汉语应用基础研究。在中文信息处理过程中,分词过程需要查“字典”,消耗了大量的时间,效率较低。以往的程序都是顺序执行的,所以将多核技术运用到中文信息处理中来具有重要的实践意义和研究价值。
撇开如何对汉语进行理解不说,在此我们专门对中文文本中的分词进行研究,其中根本原因是,(a)中文与西方语言的最大区别在于西方语言的单词之间有空格,而汉语没有,所以对汉语进行处理必须要进行分词。(b)分词的案例对于理解基于多核的编程具有重要的实践意义,可以使学生通过本案例的学习分析进而掌握线程数量设置、共享内存的处理、同步机制处理、线程粒度大小设置等一系列在基础实验中没有遇到的问题。(c)基于多核技术,可以使分词速度得到提高,可以减少响应时间,提高中文文本信息处理的性能。具有重要的实际价值。(d)分词阶段顺序执行的程序有较大的并行处理空间。(e)有研究基础及项目支持。我们已经初步完成了具有自主知识产权的自动分词体系,建立了基于虚词、动词等词性的词库(字典)。
主题:基于多核平台的多线程自动分词算法研究
处理对象:中文Web页文本内容。
目的:通过Intel编程工具的使用,提高自动分词的效率。

•集群服务器多排队模型:
背景:本设计项目来源于武汉市重点科技攻关计划项目“高性价比集群服务器”。我们在2005年完成了该项目的研究工作。对于Web服务而言,当大量的请求来临,服务器系统负载不断增加,当超过承受能力的时候,HTTP服务器行为将变得难以预料,或者使请求长时间处理排队状态,或者不加区分丢弃到来的请求,或者低优先级的请求有可能妨碍了高优先级请求的服务质量。而在服务器承受能力之内的时候,系统采用排队的方式对各个请求进行处理。集群服务器是用多个一般服务器组成集群,对外作为一个服务器进行发布使用。这样,对于外部的请求,首先要进行请求分类,将各个请求根据请求类型进而转发到相应的服务器上进行处理。我们已经实现了网络请求的动态负载均衡算法――临界加速递减均衡算法。系统采用Linux作为操作系统。
对于多核计算机而言,每个计算机有多个具有独立处理能力的核,相比较于集群服务器,从某种意义上说,每个多核计算机相当于2台或4台普通计算机的集群。这样就出现了新的问题,一是多核PC与普通PC的集群之间有本质的区别,也区别于多CPU结构,如SMP(对称多处理器)。这样,请求任务的调度算法将会有很大的区别,原有的排队模型将不能有效发挥多核的效率,需要重新进行设计。二是如果采用多核PC作为集群的组成,我们面临的问题如何设计合适的调度算法与建立高效的排队模型。据我们了解,目前国内还没有相关机构进行此方面的研究。
主题:基于多核技术的集群服务器多排队模型
对象:Web服务

•数据挖掘(空间聚类分析):
背景:聚类分析是数据挖掘的重要分支,属于人工智能的范畴。可以通过聚类分析进行知识发现、文本聚类、空间数据聚类等一系列信息处理工作,如在GPS数据集中就需要对所有的空间点进行聚类,以得到能正确反映地面特征的数据子集。以往的空间聚类程序都是顺序执行的,通过我们的分析,如果能正确处理好线程之间的同步关系,发现空间聚类60%以上的程序可以并行执行。在此,我们以10万个点的空间数据集为实验对象,进行多核多线程空间聚类分析实验。
主题:基于多核平台的空间聚类分析研究
实验对象:10万个对象(二维)的数据集合
目的:提高聚类效率,减小执行时间

•网络服务:
背景:直接运用多核服务器作为网站服务器,由于内核级的线程控制可由系统来进行调配,同样可以加快系统响应速度,但是这并不能真正发挥多核的效率。要真正发挥多核的作用,需要对服务程序进行并行处理。在未来多核遍天下的实际环境中,对Web服务的多核多线程设计具有实际指导意义和较高的研究价值。
主题:基于多核平台的Web服务器多核多线程程序设计
方法:利用多核服务器替代学院和学校的网站服务器,重新进行Web服务程序的编写工作,提高服务器响应时间。

以上这四个课程设计从本专业领域的几个方面来进行多核的应用实践和设计,从而更好地体现多核的价值,让学生实实在在将多核的学习与其它专业知识的学习有机结合起来,同时也使学生促使学生进一步熟悉多核架构、概念及Intel工具包的使用。

三、 教材与参考书
课堂教材:Multi-core Programming: Increasing Performance through Software Multi-threading》(中文译本为:《多核程序设计技术--通过软件多线程提升性能》),电子工业出版社,Shameem Akhter著,李宝峰等译。
实验教材:自编。
参考书:[1] 《PARALLEL PROGRAMMING IN C WITH MPI AND OPENMP 》(影印版),清华大学出版社,Michael J Quinn著,2005年。
[2] 《Parallel processing 》(英文版),Harry F.Jordan著,清华大学出版社,2003年。
[3] 《编译原理及编译程序构造》,高仲仪、金茂忠,北航出版社。
[4] 《编译原理》,吕映芝,张素琴等,清华大学出版社,1998年。
[5] http://www.intel.com/multi-core/
[6] http://software.intel.com/zh-cn/academic/
[7] http://www.intel.com/ids

四、 作业和考核方式
作业:课后作业和实验报告,批改。
考核方式:闭卷笔试。
分数构成:
100%(总分数)=40%(笔试成绩)+30%(实验报告)+30%(课程设计)


7)教学日历
course_agenda.jpg
有关编译器优化的更完整信息,请参阅优化通知
类别: