UCDavid大学GPU课程学习_1

最近在youtube上看到ucdavid大学的gpu课程(也是因为GPU的论文不是很好入手,读不下去,等课程结束后再读吧),是一位年轻的副教授讲的,那人以前在harvard拿到博士学位,博士课题就是大名鼎鼎的imagine流处理器,所以听他的课绝对不会错。课程是2009年的,但资料都非常新,甚至还有很难找到的mali技术资料,值得研究。最近两天是中秋节假期,泡在5楼解决问题的同时,学习一下。

这里是他们的网站,提供一些PPT课件。

1. introduction:为什么用GPU,提出一些高层问题,然后讲每章的简介,最后介绍课程要求等。

Lecture 1: Introduction / Overview

• Why graphics hardware?

CPU的单核的基本性能最近几年基本不动,但GPU最近几年发展很快,充分发掘并行性,总的i想念功能提升非常快(相对于CPU)。为什么?GPU兄弟们干活很努力,又把GPU用到非图形处理领域。最新的CPU能做的15年前的CPU也能做,但GPU不一样,当前能做的几年前的GPU就不能做到,这就是GPU的结构发展。

最大的性能比较,可以看到CPU多核的性能可没有什么提升,绝对性能更是不值得一提。GPU绝对性能可以到115.2GB/s,依靠的是并行多核,现在买的GPU都不是单芯片而已,而是一个系统(板子,包括GDDR5等)。GPU有非常宽的带宽,相对与CPU,GPU可以提供10倍以上的性能和带宽。

最新的PC的UI都用GPU加速,3D游戏都用GPU加速,图形用途非常多。从软件角度将,本课程会提到很多非常有趣有用的算法。从系统角度本课程还将介绍各个层次对并行处理的支持。会介绍latency和throughput的关系,前者主要是CPU计较的,后者是GPU(或者说并行处理)计较的。GPU不在乎渲染每个pixel的时间,而在乎能同时渲染多少pixel,但CPU就不一样,否则系统基本就动不了。对于可编程性而言,GPU的发展可以看出从最早的汇编,到API,到shader编程,到现在的GPGPU,本课程也将讲到。

• Generations of graphics hardware

政府愿意支持飞行模拟器,这就是GPU发展的第一笔投资。需要大量的pixel而且需要非常快的更新这些pixel,有点儿类似雷达的屏幕,总在一行一行的扫描。由于FB非常非常贵,所以只有政府投资了。即使如此,也仅仅只能将部分图像做处理。

Jim Clark建了一个公司,82年就开始了。是一个三角引擎,只能实时勾勒不能填充。SGI公司非常成功。

第二代:这个时候才能填充像素了(非常多的像素填充量),这也就引入了三角渲染速度和像素填充速率的tradeoff。除了绘制光滑曲面之外,这一代此外还引入光照的问题。出现了专门填充像素的硬件:Rasterization。

第三代就不光需要光滑的曲面填充,还需要特定的材质(一些图片映射到三角上去,使之看起来像贴在表面上一样)。此类贴图算法其实还可以在很多地方使用,以后介绍。这些材质就是图片。要求每个三角上填上所需的图片。在1992年时这非常昂贵。

第四代需要通过编程决定每个顶点的位置,特别是光照等等,都需要可编程。从此就可以构建实时高性能3D游戏了。Pixal动画就是这一代GPU渲染出来的,几十万行的代码画出来。

第五代就非常牛逼了(这里介绍的只是其中一个方向),主要可以看到各种真实光照效果,比如各种高光、折射、反射等等。这一代开始越来越和物理结合了,叫做“电影级渲染(cinematic rendering)”。必须强调,这是3D建模后实时渲染出来,不是一张简单的图片。

现在GPU的分层就比较突出了,高低端差距也越来越快,比如intel的集成显卡和nvidia的高端SLI显卡,目前的趋势是低端的上限在不断上升。SGI在GPU发展的早期起了很大的作用,但现在(特别是可编程的GPU出现后),SGI就不行了,现在总在做大型服务器。

未来可以用GPU做物理运算,比如保龄球游戏,这些游戏需要计算大量计算。但当前此类计算还是用软件实现的,未来应该会转向 GPU。

总结各代GPU的进步:主要是三个方面:性能(三角形和像素渲染速率)、特征和效果(更高的分辨率等)。

当GPU性能上升后,渲染基本可以做到实时了,当然玩游戏还得60fps。左上角的小熊非常难渲染(很多毛),但当代的GPU基本上可以实现实时渲染了。

未来还有很多事情要做,比如地面和墙壁还不是非常真实,还有阴影当前还是软件的,还有一些贴图无法支持。Pixar说,真实是需要8千万个多边形/帧换来的,太可怕了。

• Class outline

这就没什么记的了,需要学生最好有结构课程的基础和图形学的基础。需要写openGL代码并讨论渲染流水线。后面就是介绍学期后续课程的安排:

第二节主要讲渲染流水线,介绍当代流水线的每个流水级以及openGL到底如何用流水线的方式渲染。

貌似这一课是最新加入的,因为视频里面没有提到。

这一课将怎么评估性能 ,怎么认识性能以及性能的瓶颈是什么。

这一课主要介绍可编程的流水线,那些标准和API。

用2个课时介绍GPGPU,即如何用GPU做通用计算(非图形处理),这是老师的研究方向。

原课程计划中此时才真正介绍GPU的硬件,介绍如何并行计算。

这一课详细介绍渲染流水的每个流水级细节,在硬件中使用的算法等。还将介绍pizar自己的流水线。通用流水中有些流水级可编程性很强,详细介绍。

最后一节主要介绍利用GPU的并行编程,如果有多个GPU,如何分派任务。

这是一节由intel GPU小组做的讲座,主要介绍GPU的发展趋势和larrabee的细节,现在intel很热心GPU。

这一节客座讲座没有出现在课件中,也是来自Intel的,主要介绍软件部分,介绍larrabee如何用。

这一节也没有出现在新的课件中,但新的课件中请到了另一位NVIDIA的哥们。当前这人是搞GPU架构的,设计了不少经典的N卡,这次他来主要介绍GPGPU。

这个也没有出现在新的课件中,主要介绍GPU计算和GPU架构。

这位同样没有出现在课件中,主要介绍一种抽象流水线,stanford学术类。

• Administrivia

这个就真的没什么好记的了。倒是推荐了几本课本可以看看,刚刚买了GPU Gems3,有点儿老了。

其中那个网站很不错。没考试,没有notes,但作业不少:写流水线的介绍,写到老大妈都能懂。GPGPU的分类(4周)。做好自己买一块CUDA的GPU卡,没有的话可找老师借,他有11张。后面还有project(50%的分数,这个可以失败,但讲清楚为什么失败,点子为什么是坏点子)。可用的软件资源,这个可以记一下:

project至少花上5-6周,否则基本搞不定,有问题赶快问。

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s