时间:2024-08-31
张荔哲,刘 凯,张亚杰
(西安电子科技大学 计算机科学与技术学院,陕西 西安 710071)
计算机专业本科生的基础课程具有拓展学生学科理论和提升学生科研素养的作用。通常此类课程理论与实践结合密切,对学生数理逻辑能力要求较高。考虑到课程内容的深度和广度,传统上主要采取教师课堂授课、学生到课听讲和课下完成作业的教学模式。但这种模式过于注重知识的垂直灌输,以致学生兴趣不足、专注度不高且独立思考和自主学习时间过少。此外,本课程考核形式也比较单一,通常以期末闭卷笔试为主,教材内容老旧过时,以《计算机组成与系统结构》课程为例,极少包含GPU(图形处理器)相关内容,教师基本不讲授GPU 体系结构知识。尽管部分高校在教授GPU 内容,但仅停留在表面概述,没有对GPU 内部系统结构和计算模型进行全面且深入的研究。GPU 相较于中央处理器(CPU),主要在以下类型的程序中有着更高的效率:计算密集型的程序,即大部分运行时间集中在寄存器运算上;易于并行的程序[1]。GPU 越来越多地应用在并行计算、高性能计算、数据挖掘、深度学习和人工智能等领域。学生在课程中不能系统地学习到GPU 体系结构知识会导致在这些领域中遇到学习障碍。为进一步提升计算机专业本科生的培养质量,本科生基础课程的教学改革与创新非常必要。如何将教学内容现代化、将学习方式多样化、将考核评估多样化,是摆在本科生基础课程教学改革面前的难题。
国内外高校已开始对本科生基础课程的教学模式开展改革探索[2-5],在教学过程中注重引导学生学习方法和思维的转变[6-7],同时结合课程特点围绕教学内容和教学方法进行了初步改革探索[8]。不过在课程内容、教学模式、考核方式和挖掘学生个性化以及成效等方面,相对于教学改革的既定目标仍有较大差距。西安电子科技大学《计算机组成与系统结构》教学组在过去的几年内积极探索高等院校计算机专业本科生基础课程教学改革的思路和方法。本文总结了该课程教学组在改革实践中的经验体会,从规划教学内容、设计教学模式和完善考核体系等多个维度提出创新性优化方案,以达到构建计算机专业本科生专业知识体系和提升学生科研创新能力的教学目标。
《计算机组成与系统结构》及其相关内容在计算机系统中的位置是至关重要的。传统课程中相关的计算机硬件内容包含:算数逻辑运算器、内部存储系统、指令系统、中央处理器、流水线技术与指令级并行系统、总线与输入输出系统和并行体系结构。这些硬件由操作系统进行管理,同时,高级语言的源代码经过编译器(Compiler)编译产生目标程序代码,目标程序代码也直接运行在这些硬件平台上。因此,《计算机组成与系统结构》课程教学内容不仅包括计算机硬件的各部件及它们的互连互通和指令系统等,还与计算机操作系统、编译原理、微型计算机原理与接口等课程与技术密切关联,对于学生全面地理解计算机系统的结构层次,系统地形成计算机整体概念,掌握计算机硬件系统的应用、分析、设计以及开发能力,都起着不可或缺的重要作用。所以,这部分内容是计算机系统的核心内容,自然成为计算机相关专业的重要基础课程。
图1 是美国加州大学伯克利分校2011 年“Computer Organization and Architecture”课程的设置情况[9]。从图中可以看出,在这门课程的教学内容中,加州大学伯克利分校在保留了传统教学内容的同时,也在FPGA 的硬件设计能力方面加强了培养。同时,还对并行体系结构的相关内容加深了教学。
图1 美国加州大学伯克利分校关于《计算机组成与系统结构》的课程设置
图2 是中国科学技术大学2012 年本门课程的课程设置情况[10]。如图所示,中国科学技术大学在本科教学中加强了中央处理器设计能力的培养和操作系统的相关知识,但还未引入GPU 体系架构、并行体系结构、高性能计算设备等相关课程内容。
图2 中国科学技术大学关于《计算机组成与系统结构》的课程设置
为了总结各大高校本类课程的设置情况,有研究对MIT、Stanford 等多个美国著名大学和清华大学、国防科技大学等国内知名高校在相关课程方面的教学情况进行了分析[11-13]。在计算机组成等相关课程中,以上大学以及我校在教学思想、教学概念乃至教学内容都有着大量相似之处,都是处在计算机系统的角度描述计算机组织体系结构及硬件的设计思想和结构,都以典型的数据编码、存储系统、指令设计及其系统、中央处理器和流水线技术为核心内容,加强学生对并行体系结构等知识的掌握,鼓励学生通过多种途径在课下自主学习,强调引起学生兴趣和培养动手实践能力。
通过对这些国内外权威高校相关课程的教学理念、教学思路和教学内容进行分析,结合本校近年来在该课程上的教学实践,对教学方法进行了深入研究,提出引入GPU 体系结构教学内容及采用基于MOOC 的“互联网+”教学方式的教学改革,并在《计算机组成与系统结构》课程教学中进行了实践与研究。
GPU 是一种专门在PC、服务器、游戏主机和智能手机、平板电脑等小型移动设备上进行图形计算工作的扩展微型处理器。在个人计算机中,GPU 可以集成于显卡上或嵌入在主板上。现如今GPU 已经不仅限于处理图形渲染,GPU 通用计算技术作为在CPU 计算之后的新一代计算技术已经在计算机行业内引起大量关注,在并行计算、几何运算和浮点数计算等方面,GPU 可以提供比CPU 高出十倍甚至百倍的算力,所以GPU 越来越多地被应用在并行计算、高性能计算、深度学习、神经网络和人工智能等领域。
GPU 与CPU 设计处理计算任务的目标是不一样的,导致两者的整体结构有很大区别。具体来说,CPU 是一种低延迟的设计(如图3 所示):①CPU 有强大的ALU,时钟频率很高;②CPU 的容量较大的cache,一般包括L1、L2 和L3 三级高速缓存,L3 可以达到8MB;③CPU有复杂的控制逻辑,例如:复杂的流水线、分支预测和乱序执行等,这些设计使得真正进行计算的算数逻辑单元(ALU)只占据很小一部分片上空间。
图3 中央处理器(CPU)体系结构
而GPU 是一种高吞吐的设计(如图4 所示),具体来说:①GPU 有大量的算数逻辑单元(ALU);②缓冲区(caches)很小:缓存的目的是为线程提高服务,而不是保存后面需要访问的数据;③控制逻辑简单,没有分支预测等这些组件。GPU 需在有限的面积上实现超强的运算能力和极高的存储器带宽,因此有大量的执行单元去运行更多相对简单的线程。
图4 图形处理器(GPU)体系结构
总体来说,CPU 擅长处理逻辑复杂、要求低延迟的计算任务;而GPU 擅长的是大规模数据集的并行计算(data-parallel)任务。
(1)浮点计算能力强。GPU 相对多核CPU 在系统结构设计上有本质的区别,GPU 设计目标是为解决复杂的浮点计算。作为众核协处理器的典型,GPU 上一个warp的32 个线程由一个控制器控制,同时处理同一条指令。这种设计为GPU 提供了超强的浮点计算能力,从而使得这种异构系统在超级计算机领域表现突出。
(2)超高性价比。在CPU/GPU 异构系统中,多核CPU 在提供256 位宽向量处理的基础上,主要负责复杂的逻辑处理,而众核GPU 协处理器的设计目的是高速进行浮点运算,特别是双精度浮点计算。由于多核CPU和GPU 设计理念不同,故在内部结构和组件成本方面存在着明显差异。GPU 在设计时避免或减弱了类似分支处理、逻辑控制等与浮点计算无关的复杂功能,专注于浮点计算,因此在制造成本上有着巨大的优势,众核GPU 协处理器仅需要十分之一的成本即可达到与多核CPU 同等的浮点运算能力。
(3)绿色功耗比。GPU 集成了大量的轻量级微处理器单元,这些处理单元功能简单(仅用于浮点运算)、时钟频率有限,能最大限度降低所消耗的功率。比如NVIDIA Tesla K20c GPU 在休眠状态仅需15 瓦左右功耗,其满载运转时功耗约为150 瓦,能提供超过2Tflops单精度浮点运算能力;而Intel Xeon Phi 31S1P 协处理器在低功耗状态的能耗为100 瓦,在满载运行提供2Tflops单精度浮点运算能力时需要250 瓦供能。因此GPU 比MIC 在能耗上更有优势。
(4)普及度广。部分GPU 产品(显卡)已经装备于许多设备上,用于科研、实验、工程、娱乐等。购置新GPU也十分便捷。GPU 产品拥有完善的商业体系,其产品价格区间大,无论经济实力好坏,都可以购买到合适的GPU来搭建编程平台。
另外,从计算机组成与系统结构的并行计算领域来说,该领域存在以下几个重大问题:存储小、功耗大、编程难和不平衡的计算机科学生态系统。GPU 提供了程序员可控制的层次式存储,在一定程度上突破了存储问题;GPU 的低功耗优势在一定程度上解决了功耗大的问题。GPU 并行体系结构设计可以充分发挥CPU/GPU 异构系统和GPU 的集群性能,真正扭转计算机科学生态系统“重软轻硬”的不平衡。
所以,无论从当前业界需求,还是未来计算机技术的发展来看,在本科生《计算机组成与系统结构》课程中引入关于GPU 的内容并重点讲授都十分必要。同时,掌握GPU 各类系统架构知识和其相关通用计算标准,能为本科生在研究生阶段学习神经网络和深度学习等知识打下牢固基础。
基于《计算机组成与系统结构》课程的教学改革,引入GPU 硬件系统架构教学内容。主要包括GPU 架构、kernel函数的GPU映射、GPU存储体系、GPU计算能力、CPU/GPU 异构系统、GPU 组成相关实验和典型GPU介绍。通过这六个方面的教学可以使学生对GPU 硬件体系有一个整体的认知。
(1)GPU 架构:对英伟达主要的5 类不同架构的GPU产品架构进行教学。分别为:特斯拉(Tesla)架构、费米(Fermi)架构、开普勒(Kepler)架构、麦克斯韦(Maxwell)架构、帕斯卡(Pascal)架构。不同GPU 架构的设计理念、流程层次和工艺水平等均不相同,相应的内部体系结构和性能也不一致。学习这五类架构可以认识到GPU 浮点运算高性能的原因。
(2)GPU 存储系统:GPU 存储系统是影响其程序性能最关键的因素之一。GPU 采用了清晰的分层存储设计,可以用于优化程序性能,分层存储结构系统的使用是性能优化的关键。
(3)GPU 计算能力:即GPU 架构及其所支持的功能。随着GPU 架构的发展,GPU 支持的功能也越来越多,计算能力版本也从1.0 升级至6.0,提高了计算性能、统一了存储空间、扩展了原子操作等。这个模块将讲述GPU的浮点计算能力、访存带宽、通信带宽,以及如何使用GPU-Z、CUDA-Z 等软件测试GPU 性能,分辨其真伪。GPU 的计算能力也是衡量GPU 质量的重要标准之一。
(4)CPU/GPU 异构系统:CPU 和GPU 各自有独立的外部存储器,CPU 负责逻辑性较强的事务处理,GPU 负责高密集度的浮点运算。当面对大量的数据时,CPU 处理事务,GPU 的高存储带宽发挥其强大的运算能力,故CPU/GPU 异构系统此类计算设备的计算能力可以明显提高系统的速度,异构系统的应用越来越普遍,也是获得高计算能力的途径。
(5)GPU 组成的相关实验:warp 是GPU 执行程序时的调度单位,sp(streaming processor)是GPU 最基本的处理单元,sm(streaming multiprocessor)由多个sp 及一些资源组成。进行warp 排程实验需要对线程划分块,一个sm 仅会执行一个块中的warp,当该块执行完毕时才进行下一个块的资源执行。只有合理划分每个块中的warp,让GPU 将每个sm 都利用起来,才可达到高效率的目标,本实验可以让学生学会GPU 内资源的具体调度操作,同时可以学会如何分配线程块的资源增加GPU利用率以提高效率。
(6)典型的GPU:截至2018 年,英伟达和AMD 控制了近100%的市场份额,各自的市场份额分别为66%和33%。在这个模块介绍第一代GPU(GeForce 6800)和第二代GPU(GeForece 8800)的相关参数,及英伟达和AMD生产制造的经典显卡设备型号、计算核心数、各级存储容量、计算能力、时钟频率、grid 和block 网络维度及ECC 错误校验等参数。
“互联网+”思维可以应用于各类传统教学方法中,在充分利用信息科技技术和平台的前提下,将互联网与传统教学方式深度融合,为教育改革、创新、发展引入新的活力,提供宽广的网络平台,增添便捷与效率。“互联网+”代表了一种新的教学形态,可以充分发挥互联网在课堂教学、本科生教育中的优化和集成作用。
MOOC 是一种旨在通过互联网广泛参与和开放访问的网络课程。除了传统的网络课程材料,如视频讲座、PPT、练习题和线上测试,许多MOOC 还提供用户论坛,以支持学生与学生、学生与教授之间的社区互动,以及对作业和测验的即时反馈。MOOC 已经发展为一种广泛的学习方式[14]。
对比传统课堂教学,MOOC 具有许多显著优势,比如费用低廉、在线、开放等。现如今很多课程教学均选择通过MOOC 技术进行在线教学,大多数课程的目的是丰富教学资源,便于学生自主学习,降低教育成本。传统课堂教学无法让所有同学清晰地了解GPU 实物的系统结构,MOOC 通过将GPU 实物系统构造教学录制为特写视频,提高学生对实物结构难点的理解,增加了MOOC 教学的优势。搭建一个GPU 实验室需要高昂的费用,而将GPU 服务器引入MOOC 教学可显著降低教学成本且完成实验教学。GPU 服务器是为其应用于视频编解码、深度学习、科学计算等多种场景提供的快速、稳定、弹性的计算服务,可以让实验者们了解到GPU出色的图形处理能力和极致的计算性能。在GPU 体系结构MOOC 教学中加入实验室搭建的小型GPU 服务器,可基本满足《本科计算机组成与系统结构》实验要求,突破成本的限制,再加上其丰富开放的学习资源,对学生更加友好。
基于MOOC 的“互联网+”教学模式吸收了传统课堂教学和网络在线教学两者的各自优点,是一种将两者相结合的教学模式,比单纯的线下教学或线上教学都具有优势。
(1)线上网络平台教学
在《计算机组成与系统结构》课程开课前,教师将传统线下课堂难以完成的教学内容制作成在线课程资源,上传于学校互联网教育平台。改变传统单一的图片及文字PPT 教学课件模式,将GPU 实物教学放置于MOOC课程中,可以清晰详细地讲解真正的GPU 体系结构而非仅停留于书面及图片,解决了传统课程无法使每位同学均看清GPU 内部构造等问题。同时将GPU 相关实验与传统课堂教学中的应用相结合,将课程中的难点、重点引入多媒体技术中,将GPU 服务器运用于实验教学,不仅解决了搭建GPU 实验室费用高昂的问题,也使每位同学均可现实对显卡使用的操作,切身体验到GPU的高效。
(2)线下课堂教学
在本科生教育中,MOOC 教学仅是一种辅助教学工具,网络端的教学方式不能取代《计算机组成与系统结构》的理论和实践教学,而是将难以口述、不易理解的实物、实验教学穿插于线下传统课堂教学中。教师可将网络教学平台上学生的问题进行汇总,查看学生在平台上的自学测验结果,针对学生反映的学习困难内容在课堂上统一深入讲解,着重解决。
(3)完善考核评估体系
合理有效的评价机制对于反映学生真实的学习效果有重要作用。相对于传统课堂教学主要依据线下笔试成绩,基于MOOC 的“互联网+”教学模式需要一套更加多元的评价体系来准确反映学生的学习成绩。评价体系应将随堂评价和期末评价相结合。随堂评价分为线上随堂评价和线下随堂评价两部分,其中线上随堂评价指标包括学生观看线上课程完成程度、线上课程自学测试情况等,线下随堂评价指标包括学生课堂出勤情况、随堂测试情况等。期末评价同样也分为线上实验机试和线下笔试两部分。多元的评价机制有利于学生形成良好和符合趋势的学习习惯,提高学习质量。
通过对GPU 体系结构和计算模型进行全面且深入的教学,丰富了《计算机组成与系统结构》课程内容,拓宽了本科生的知识视野,为学生将来在并行计算、大数据、高性能计算、深度学习、神经网络和人工智能等领域的科研和工作打下了基础。
基于MOOC 的“互联网+”教学模式为学生提供了一个开放、独立的学习平台,并促进了计算机网络化教学,使教师学习、使用现代网络科学技术的水平有所提高。为GPU 体系结构提供了一个便捷且成本低廉的教学方式,将传统课堂上无法完成的实物、实验教学改善,每位同学均可具体清晰地观看且了解到GPU 是由什么部件组成且如何运转的。为对于基础薄弱的同学,可以多次观看平台上发布的视频教程进行自主学习。对于学习能力强的同学,可以找到高阶的课程,提高自己的能力。网络教学平台中可直接设置测试项目,教师可以随时查看学生对知识的掌握。鼓励学生充分利用线上教学资源,培养了学生独立主动学习的能力,提高了学生《计算机组成与系统结构》课程的参与度,从而切实提升了学生学习计算机专业知识的能力,进而推动大学计算机学科教学发展。
但值得注意的是,将GPU 体系架构相关内容引入《计算机组成与系统结构》课程也会导致一些问题。目前GPU 通用计算领域主要采用英伟达公司生产的GPU 产品,产品的单个售价较高,导致学生自行学习成本较高,加之本科生人数较多,每位学生真正使用高性能GPU进行实操学习的机会有限,教学资源没有CPU 普遍易得。且MOOC 教学存在一定的局限性,比如学生的课程完成率和真实完成度不够高。由于MOOC 缺乏有效的监督,一些学习主动性不高的学生容易中途放弃,并且存在部分同学虚假学习的情况。
针对传统《计算机组成与系统结构》课程教学内容落后和硬件类课程课堂教学方式成本高昂且受设备仪器、时间和地点限制的问题,本文引入GPU 体系结构教学内容并采用基于MOOC 的“互联网+”教学方式,提高了计算机硬件系统结构的教学质量。同时采用了多元评价机制对学生的学习效果进行评价,激发了学生的学习热情和学习兴趣,培养了学生自主学习的习惯和能力,拓宽了本科《计算机组成与系统结构》课程的知识覆盖面,为学生日后进行GPU 体系架构、高性能计算、数据挖掘和深度学习等方面的学术科研打下了坚实的基础。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!