注册 | 登录

游侠NETSHOW论坛





查看: 12517|回复: 28
打印 上一主题 下一主题

[原创] CUDA到GPU的进化 [复制链接]

帖子
43
精华
0
积分
22
金钱
345
荣誉
0
人气
3
评议
0
跳转到指定楼层
楼主
发表于 2011-10-17 10:39:29 |只看该作者 |倒序浏览

    此文是写给论坛的写给论坛的大鸟小鸟看的~!最近AMD在推APU异构运算,哥我看了只能一笑置之。AMD的异构运算相对于虽然已成概念,不过在应用方面却迟迟不见有什么突破。NV方,就比较成熟鸟。哥还记得有个小鸟曾经问NV的工程师,A卡可不可以运行CUDA程序。工程师说,如果A卡的向量阵列中,也拥有可编程的高速缓冲就可以扫去一切难题。这个缓存是什么可以跟帖问哥,下文也有提及的。

         为了你能看懂下文,你大爷我给你解析一下:


1.Thread
指的是一个线程,它是最基本的执行单位;


2.Block
指的是一组合作进程的**,它们可以通过shared memory通信;


3.Grid
指的是一个内核函数的线程总和,它由block块组成;


4.Warp
指硬件层的线程并行度,也就是说指令的并行宽度,NVIDIA为了上下兼容硬件因此一般取值为32


5.
原子操作:视为一个不可分割的操作,作用是防止多线程的读写冲突

1.
GT200架构:代表显卡GTX 280


GT200
NVIDIA通用架构的第一次变化,和图形架构不同,GPU内部的渲染单元摇身一变成为了通用的运算单元。GT200一共具备了240CUDA核心,在底层组成上每个SM阵列是一个拥有8CUDA核心的单指令多数据流单元。因此,每条指令可以控制32个单元(因为每次执行的周期时为4个周期,因此8个物理单元正好是4×8=32)。


GT200通用计算架构

1.
Fermi架构代表显卡 GTX580


Fermi
主要是内置CUDA核心得到了大幅提高,达到了512个。同时存储结构也得到了优化。在实现上由于需要兼容以往的硬件,因此指令宽度依然保持为32。物理的SM32CUDA核心,不过由于保持了双warp的调度器,因此如果保留32单个warp的宽度就可以让每个向量机阵列实现更多的激活线程块,从而提高执行效率。





Fermi通用运算架构

CUDA硬件对比

核心名称

GT200

Fermi

CUDA核心数

240

512

CUDA核心频率

1300MHz

1540MHz

GPU频率

602MHz

720MHz

Warp大小

32

32

Block允许的最大合作线程

512

1024

Block的最大维度

512×512×64

1024×1024×64

Grid维度

65535×65535×1

65535×65535×1

每个SM中的寄存器

16KB

Shared memory容量

16KB

48/16KB

一级缓存

N/A

48/16KB

二级缓存

N/A

768KB


测试平台及环境

处理器

Core i72500k OC
4GHz

主板

华硕 z68

内存

2×2GB DDR3 at 1600MHz

显卡

GTX 580/GTX280



Histogram
直方图测试

         直方图算法是图像处理中一个最基本的运算。它的作用是把色阶相同的像素做统计分析。在图像处理中的直方图纵坐标一般是数量,横坐标为色阶也就是亮度值。CPU算法是依靠循环逐次计算每个像素的色阶值,然后用数组记录统计数量最后用于显示。


CUDA
的并行实现分为先把整个图像在空间域上通过block分解到不同的合作线程块当中。每个block中的thread并行算出每个小块图像的统计值,最后由block来并行算出。此测试过程block内需要原子加操作,block之间需要DRAM原子加操作。因此可以检验Fermi体系中原子操作的提速。

         测试程序调用两个内核函数,一个为多个block并行处理切割的图像,另一个为单block函数来并行处理色阶数值。值得注意的是G80架构并不支持shared memory上的原子操作,因此G80架构的显卡只能在在一个block内实现单线程。




计算每个像素来表达色阶函数




测试结果为像素吞吐量,单位是MB/sGTX280测试中得到9GB/s的像素计算吞吐量。而采用Fermi架构的GTX580也没经过优化的状态下达到23GB/s的像素处理能力。这当然得益Fermi GPU数量庞大的CUDA核心,加上十倍速的原子操作能力。

         矩阵乘法测试

         矩阵相乘测试是测试并行机器最基本的算法。本次测试的程序采用CUDA runtime层的矩阵乘法。测试主要运用到显示核心当中的高速共享存储器作为缓存,从而减少对显存数据的操作。

         程序采用瓷砖算法来对矩阵元素并行执行。一般简单的并行算法是每个线程执行一个元素的相乘,然后N为边长的方形矩阵相乘则需要N平方个线程来进行运算。CUDA的优势在于可以忽略各个线程具体分配到哪个CUDA核心,这项工作完全由GPU核心的调度器完成。

         由于NVIDIA的核心具有相同的底层执行宽度,因此代码可以不用修改便运行在新一代的核心之上。不过需要注意的是由于Fermi相对于之前产品不仅增加了CUDA核心,而且加大了协助线程的数量,因此虽然稍加优化才能到最大的效能。



可以看到每个block里面是一个从矩阵划分出来的小矩阵,每个block中就可以高效地实现子矩阵的乘法运算,最后这些子矩阵的结果在线程上进行叠加就可以得到最终结果。




把在显存中的矩阵元素划分为block为单位的子快,然后block内通过高速存储器来进行线程交互。不过两代硬件SMblock的最大限制不同,因此最大限度地应用SM中的存储器单元将显著提高效能。



矩阵乘法测试结果

         测试中GTX280拥有73G浮点的效能,而GTX580更达到了112G浮点操作的。虽然测结果相比CPU有较大提升,不过还是低于笔者预期。笔者猜测是矩阵数据的量没够让GPU中的CUDA核心在一段时间里满负荷,因此笔者将修改代码进行从新测试,结果在近期放出。

         并行规约测试

         并行规约来源于一系列串行数据的规约运算。例如n个数的求和也是一种规约的特例。它并行是类似树状规约来实现。本次测试具体是CUDA架构上执行。根据两代不同的架构可以看出执行效能的差异。

         此次测试的CUDA版并行规约采用循环并行的算法。第一次并行是把N个数据划分block大小的合作线程,剩下的N/2数据继续同样方法并行执行,当剩下的数据小于等于block合作线程时用单block执行并输出结果。测试的规约元素为1600万个单精度浮点数,测试的正确性由CPU执行串行程序来比较。





并行规约的一个特例就是并行加法。如图通过树结构可以来实现N个数字的相加,由叶子节点开始到根节点结束。




CUDA的具体实现当中,分别调度多block来进行树状算。



采用2N次方线程与对半的线程相加可以大大减少SM阵列内的高速存储器的操作冲突




UDA版并行

规约的测试结果比较令人满意,GTX280达到115GB/s的数据吞吐量,GTX580150GB/s吞吐量。在规约1600万个数据中,GTX280使用了7毫秒,而Fermi只用了2.8毫秒。此次测试既然应用到了浮点单元以及高速存储器,因此存储器体系更优越的Fermi表现出了更大的潜力。不过注意的是本次应用的延时不在运算上,而在于CPU内存与显卡显存数据的传输上。

         


N
体模拟测试

N体问题是天文数学上一个历史悠久的问题。它代表N个物体,在已知位置和初速度时求只有万有引力下的运动状态。当N大于3时不能得到显式解析。但可以用计算机模拟,在计算中需要大量的运算,测试中将以CUDA环境实现。

         现今并行模拟N体问题的最优复杂度为N×Log2N),此次CUDA的模拟测试同样使用现今最优算法。在笔者挑选的测试环境中具备了CUDAOpenCL以及Direct Compute11/10等几种实现。由于实现OpenCL以及Direct Compute需要CUDA底层,因此直接选取CUDA层做测试(AMD是通过ATI Stream来支持OpenCLDirect Compute)。


N
体模拟算法还可以适用于蛋白质折叠运算、液体仿真以及显卡的全局光照当中。此次测试模拟的是1.6万个粒子,在只受到万有引力的作用时的形态变化。借此可以模拟出星系的发展。




模拟测试采用CUDA C做软件层



GTX580测试结果为680GFlop/sGTX280也达到了420GFlop/s。模拟粒子规模设定为16384个。GTX580CUDA效能达到后者的1.6倍。

总结

         测试可以看出,代码并没为 Fermi体系达到良好的优化。大多数只紧紧依靠Fermi GPU提升CUDA核心而提升效能。即便如此,GTX580的效能也有不错的提升。从Fermi架构的改变可以看出核心在渐渐倾向通用算法而改变。

         听说NVIDIA未来的新架构“伽利略”和“麦克斯韦”表面上将在会倍数提升浮点性能。同时,我预测这两代架构将会在向量机层次上有从新组织,并且也带来更多层次的存储系统的诞生。

         到时可以见到一个拥有高层次向量机模型的GPU,并且既有可能在GPU内集成更多的高速读写统一缓存以及更优异的分支预测性能。

附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

帖子
4885
精华
0
积分
2465
金钱
6235
荣誉
2
人气
20
评议
0
沙发
发表于 2011-10-17 16:34:58 |只看该作者
本帖最后由 lsf_hahaha 于 2011-10-17 16:35 编辑

扯这些根本没用,用户只会关心实际应用的结果

使用道具 举报

~ § Lelouch ·Vi ·Britannia § ~
游侠资深版主
『PC游戏综合区』
能天使
硬件权威
★★★★★★★★

版主勋章资深版主勋章大头像勋章白金会员勋章活跃勋章youki贡献勋章

帖子
10548
精华
4
积分
6925
金钱
3611
荣誉
78
人气
663
评议
0

板凳
发表于 2011-10-17 18:36:03 |只看该作者
{:22:}原创?
论坛有超高端玩家了?

我只是一个SneakerHead

使用道具 举报

帖子
1190
精华
0
积分
595
金钱
1135
荣誉
0
人气
4
评议
0
地板
发表于 2011-10-17 19:05:05 |只看该作者
本帖最后由 jocover 于 2011-10-17 19:07 编辑

HD 4XXX系列就有local memory了,可惜globa cache memory,AMD到现在都没搞出来

使用道具 举报

帖子
5354
精华
0
积分
2690
金钱
11803
荣誉
1
人气
28
评议
0
5#
发表于 2011-10-17 19:11:20 |只看该作者
这个技术贴要慢慢看才能理解

使用道具 举报

荷兰队之晨光 芒茫
暗夜精灵 龙鹰 旅行者

活跃勋章大头像勋章白金会员勋章

帖子
50349
精华
1
积分
25867
金钱
16541
荣誉
47
人气
168
评议
0

6#
发表于 2011-10-17 19:31:15 |只看该作者
虽然不是很明白 但好像很厉害的样子...........{:00:}

使用道具 举报

帖子
75
精华
0
积分
38
金钱
486
荣誉
0
人气
0
评议
0
7#
发表于 2011-10-18 21:29:56 |只看该作者
谢谢分享啊。

使用道具 举报

帖子
38
精华
0
积分
19
金钱
311
荣誉
0
人气
0
评议
0
8#
发表于 2011-10-18 21:33:33 |只看该作者
就只是看懂了280和580在比较。。

使用道具 举报

黑暗圣斗士·黑暗天龙
伏流

帖子
7801
精华
0
积分
4057
金钱
3638
荣誉
15
人气
19
评议
0

9#
发表于 2011-10-18 21:48:47 |只看该作者
感觉好牛逼啊~~~~~~~~~~

使用道具 举报

帖子
72
精华
0
积分
36
金钱
499
荣誉
0
人气
4
评议
0
10#
发表于 2011-10-18 22:09:42 |只看该作者
让我想到了AMDgloba cache memory到现在都没搞出来,坑爹

使用道具 举报

帖子
59
精华
0
积分
31
金钱
534
荣誉
0
人气
10
评议
0
11#
发表于 2011-10-19 00:27:11 |只看该作者
我只知道参数,竟然完全看不懂架构,真是失败

使用道具 举报

帖子
39
精华
0
积分
20
金钱
279
荣誉
0
人气
3
评议
0
12#
发表于 2011-10-19 00:39:30 |只看该作者
怀念当年的卡皇GTX280啊!

使用道具 举报

帖子
57
精华
0
积分
29
金钱
365
荣誉
0
人气
0
评议
0
13#
发表于 2011-10-19 12:28:40 |只看该作者
只看懂了后面的两代卡皇的对比,总之是个好贴支持一个

使用道具 举报

帖子
106
精华
0
积分
63
金钱
681
荣誉
1
人气
1
评议
0
14#
发表于 2011-10-19 12:30:34 |只看该作者
这个技术贴要慢慢慢慢的才能看懂,我看了几遍。。。。

使用道具 举报

帖子
30
精华
0
积分
15
金钱
174
荣誉
0
人气
0
评议
0
15#
发表于 2011-10-19 12:31:49 |只看该作者
这个测试大多数只紧紧依靠Fermi GPU提升CUDA核心而提升效能,还是有点改变的

使用道具 举报

帖子
45
精华
0
积分
33
金钱
342
荣誉
1
人气
0
评议
0
16#
发表于 2011-10-19 21:37:26 |只看该作者
不错不错,给力

使用道具 举报

帖子
38
精华
0
积分
19
金钱
273
荣誉
0
人气
0
评议
0
17#
发表于 2011-10-19 22:26:01 |只看该作者
哈哈~cuda终于已经有可以用的软件了

使用道具 举报

帖子
22
精华
0
积分
11
金钱
222
荣誉
0
人气
2
评议
0
18#
发表于 2011-10-19 23:54:57 |只看该作者
好帖,先顶在看

使用道具 举报

帖子
42
精华
0
积分
21
金钱
304
荣誉
0
人气
3
评议
0
19#
发表于 2011-10-20 17:46:07 |只看该作者
从通用运算看N卡如何进化!!

使用道具 举报

帖子
2137
精华
0
积分
1079
金钱
12292
荣誉
1
人气
1
评议
0
20#
发表于 2011-10-20 18:13:33 |只看该作者
委屈你大爷我来看看。。。。。。。。。。。。。。。。。。。。。


所有的男人生来平等,结婚的除外。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|游侠NETSHOW论坛 ( 苏ICP备2023007791号 )

GMT+8, 2025-7-22 22:04 , Processed in 0.383969 second(s), 12 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到