POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 4079|回复: 21
打印 上一主题 下一主题

R600 SIMD SP 和G80 SP 结构和编程的比较,

[复制链接]
跳转到指定楼层
1#
发表于 2008-6-14 12:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
R600 G80 的SP 都号称是统一渲染模式的SP,但是计算的时候,编程差别是非常巨大的。 R600 号称是4D+1D,其中1D是全功能的SP(这个全功能,仅仅是相对于显卡常用API 的全功能,并非完整的全功能),4D 是相对弱的SP,从R600 ISA 看,4D+1D 的结构,其实只是一个SP,只有一套简单的程序流数据流控制机制。从CPU 设计的看,4+1 的ALU 可以非常简单,甚至4+1的ALU 加在一起,只在整个SP 中占1/3 或者更少。SIMD 程序设计会比较麻烦,数据流如果不能拼接成组,效率会非常低,协处理的运行特点,是从主处理器传送数据,然后由协处理器加工,完成后转送回主处理器,对于SIMD 最理想的计算模式就是数据放置后,用若干指令对5D 同时计算,最后把结果分5D 送出,当4D 的功能不能满足程序需要的时候,5D 只能用1D,单独传输,1D输出的性能会很可怜。SIMD 最大的问题是程序数据必须一致,也就是说,当你同时操作5D 数据的时候,这5D数据必须在同一个数据流程中,5D 的相关性是默认的,从这个角度看R600 的SP 并不够通用,和G80 的SP 不可同日而语,未来也许ATI 会做成5D 均匀的ALU SP,提高图形媒体计算的通用性。 G80 是所谓1D SP,但是仅仅比R600 的5D SP 少了4D 的弱ALU,结构上简单少许,编程就灵活多了,不必考虑1D和4D 的配合,更加通用一些。排除ALU 的显卡计算特性,已经比较接近通用协处理器。
2#
 楼主| 发表于 2008-6-14 12:03 | 只看该作者
如果考虑到4D ALU 的弱功能性,其实ATI 做再多的SP 也不奇怪,问题是有没有足够的数据通路来配合这些SP。
回复 支持 反对

使用道具 举报

3#
发表于 2008-6-14 12:04 | 只看该作者
我觉得ATI肯定要改,只是需要时间
1D应该是通用计算的基础
回复 支持 反对

使用道具 举报

4#
发表于 2008-6-14 12:34 | 只看该作者
原帖由 A骨头 于 2008-6-14 12:06 发表

LZ好像没说1D是通用计算的基础

Lz在强调均匀的ALU SP适合编程

G80均匀的1D就是相对R6xx 1D+4D的优势

嘿,因为我觉得适合编程才有的玩嘛
回复 支持 反对

使用道具 举报

头像被屏蔽
5#
发表于 2008-6-14 12:40 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

6#
发表于 2008-6-14 13:02 | 只看该作者
G80还是个好的架构
回复 支持 反对

使用道具 举报

7#
发表于 2008-6-14 13:39 | 只看该作者
原帖由 stcshy 于 2008-6-14 12:41 发表
CUDA的底层硬件是透明的,所以楼主说了一大堆G80的好处实际编程的时候你是感觉不到的
CAL如果你不去关注底层硬件,编程和CUDA比也不会有任何复杂之处,复杂的编译器都已经帮你做掉了,当然如果你要进一步优化的话由 ...


哈哈,现在支持CUDA的硬件只有G8x、G9x、GT200系列,不服你用A卡来跑一个?
CAL就是跟底层硬件紧密结合的,不比CUDA复杂?怎么没人用呢?笑话
CUDA可以兼容NV所有US架构的GPU,CAL可以兼容多少硬件?
再说说开发后的提高,GTX280靠不到2倍的GFlops却可以跑出3870的接近4倍性能,这能说明什么呢?
硬件兼容性、软件兼容性、参考资源、开发难度乃至带来的性能提高等等方面CAL完全比不上CUDA
回复 支持 反对

使用道具 举报

8#
发表于 2008-6-14 14:14 | 只看该作者
原帖由 zhuoke 于 2008-6-14 12:47 发表
这个构架也就卖到4800系列了吧,都弄了这么多年了
R870才是最后一代
回复 支持 反对

使用道具 举报

9#
发表于 2008-6-14 14:21 | 只看该作者
原帖由 jhj9 于 2008-6-14 13:39 发表


哈哈,现在支持CUDA的硬件只有G8x、G9x、GT200系列,不服你用A卡来跑一个?
CAL就是跟底层硬件紧密结合的,不比CUDA复杂?怎么没人用呢?笑话
CUDA可以兼容NV所有US架构的GPU,CAL可以兼容多少硬件?
再说说开 ...

这话说得跟广告一样,没有一点技术含量。
回复 支持 反对

使用道具 举报

10#
发表于 2008-6-14 14:40 | 只看该作者
虽然话是那么说,都是接口不同
但是说实话,在硬件编程里面,即使你给了接口,很多东西也是不能做的
回复 支持 反对

使用道具 举报

11#
发表于 2008-6-14 14:48 | 只看该作者
原帖由 Isrufile 于 2008-6-14 14:21 发表

这话说得跟广告一样,没有一点技术含量。


想要技术含量?你看得懂CAL和CUDA的代码的话,我倒是很愿意跟你深入讨论一下技术,哈哈
知道CAL的一个矩阵乘法的Demo有多复杂,而CUDA开发多简单吗?
回复 支持 反对

使用道具 举报

12#
发表于 2008-6-14 15:27 | 只看该作者
来具体分析一下CUDA和CAL吧:

移植性:
CUDA支持WinXP、XP64、Vista、Vista64、Linux32、Linux64、Mac OS
CAL支持WinXP、XP64、Vista、Vista64、Linux32、Linux64

官方开发文档:
CUDA:
Programming Documentation
CUDA Programming Guide 1.1  (revision history )
CUDA CUBLAS Library 1.1  
CUDA CUFFT Library 1.1  
MathWorks MATLAB® Plug-in  
CUDA Roll Users Guide Version 4.3  (August 2007): The purpose of the NVIDIA® CUDA™ Roll is to install and configure the device driver and full toolchain necessary to run and develop CUDA programs on a Rocks™ cluster.
CUDA Toolkit Release Notes – Version 1.1 for Linux  
CUDA Toolkit Release Notes – Version 1.1 for Windows XP  
CUDA SDK Release Notes – Version 1.1 for Linux  
CUDA SDK Release Notes – Version 1.1 for Windows XP  


CUDA Programming Tools
CUDA Compiler Driver NVCC  
PTX: Parallel Thread Execution ISA Version 1.1  
CUDA Occupancy Calculator v1.2  : The CUDA Occupancy Calculator is a programmer tool that allows you to compute the multiprocessor occupancy of a GPU by a given CUDA kernel. The multiprocessor occupancy is the ratio of active warps to the maximum number of warps supported on a multiprocessor of the GPU, and is helpful in determining how efficient the kernel will be on the GPU.


Fortran
FORTRAN using pinned memory calling CUBLAS (Fortran_Cuda_Blas.tgz)
FORTRAN interface to CUDA kernel (Fortran_Cuda.tgz)


White Papers and Articles
Accelerating MATLAB with CUDA using MEX Files  
Fast N-body Simulation with CUDA  (from GPU Gems 3)
PARALLEL PROCESSING WITH CUDA  


Trainings and Tutorials
SC07 Tutorial: High Performance Computing with CUDA
ECE 498 AL1: Programming Massively Parallel Processors

CAL:
Stream Computing Resources

Learn more about stream computing from these presentations and whitepapers.

AMD stream computing whitepaper (PDF 1.1MB)
AMD ACML-GPU presentation (PDF 100KB)
AMD Brook+ presentation (PDF 450KB)
Tuning GPGPU applications for performance (PDF 2.9MB)
Stream computing presentation for press (PDF 2MB)

SDK范例源代码容量:
CUDA: 38.8M,58个范例,部分范例有详细PDF参考,包括FFT、DCT、数据统计、查询、粒子系统等等

CAL: 1.55M,28个范例,全部是简单的代码

代码复杂和开发困难度:
矩阵乘法例子
CUDA: 11K大小,全部用高级语言编写

CAL: 41K大小,需要编写部分Shader汇编来输入输出

硬件支持:
CUDA:
GeForce
9800 GX2
9800 GTX
9600 GT
8800 Ultra
8800 GTX
8800 GTS
8800 GT
8800 GS
8600 GTS
8600 GT
8500 GT
8400 GS
8800M GTX
8800M GTS
8700M GT
8600M GT
8600M GS
8400M GT
8400M GS
8400M G

Tesla
C870
D870
S870

Quadro
FX 5600
FX 4600
FX 3700
FX 1700
FX 570
FX 370
NVS 290
FX 3600M
FX 1600M
FX 570M
FX 360M
Quadro Plex 1000 Model IV
Quadro Plex 1000 Model S4
NVS 320M
NVS 140M
NVS 135M
NVS 130M

CAL:
R600 and newer GPUs are found with ATI Radeon™ HD2400, HD2600, HD2900 and HD3800 graphics board

官方论坛人气:
CUDA: 有几个子栏目,目前总共3904个发帖

CAL: 一个栏目,目前总共91个发帖
回复 支持 反对

使用道具 举报

13#
发表于 2008-6-14 15:47 | 只看该作者
原帖由 Richoer 于 2008-6-14 15:35 发表
j神果然是神,g8x、g9x的所有型号包括专业都写出来,还空了一行,洋洋洒洒
r6xx所有加一块只有一行,还不包括firegl,可怜的紧
不如把写的代码都放出来,大家鉴赏一下


那没有办法,我给的分别是NV的官方资料和AMD的官方资料原话,一个字都没有改动
两家分别对于CUDA和CAL支持硬件的描述就是这样
CUDA有一整页
http://www.nvidia.com/object/cuda_learn_products.html

CAL是一页里面提到一条
http://ati.amd.com/technology/streamcomputing/faq.html#11
Will the AMD FireStream SDK work on previous generation hardware?
To run the CAL/Brook+ SDK, you need a platform based on the AMD R600 GPU or later. R600 and newer GPUs are found with ATI Radeon™ HD2400, HD2600, HD2900 and HD3800 graphics board.
回复 支持 反对

使用道具 举报

14#
 楼主| 发表于 2008-6-14 16:21 | 只看该作者

回复 9# stcshy 的帖子

编译器做不了多少,举个简单的例子,做矩阵乘法,a=(a1,...,an) , b=(b1,...,bm)T, a*b 这样简单的操作,如果你不能手工切分好数据,分配好处理的路径,即使cuda 也不能帮你做什么。
算法不好,再好的编译器也无能为力,这是目前并行计算的主要问题。
而我要说明的其实是1D 的SP 比5D 的SP 复杂度并不少多少,理论性能差很多,但是实际性能的差距,更多是体现在软件上。
回复 支持 反对

使用道具 举报

15#
 楼主| 发表于 2008-6-14 16:47 | 只看该作者

回复 23# stcshy 的帖子

类库能做的缺乏普适性,比如BLAS 库,用起来会不那么自在,很多函数还是要自己写。
CUDA 编译器只要如简单集群方式工作就可以,不需要考虑在一个SP 上的DLP,而CAL 不考虑,就等于浪费了4D 的处理能力。
如果AMD  能够把5D SP 通用化,电路复杂度会增加一些,但是比较有限,可以象SSE 编程一样,更加容易处理一些,看AMD以后怎么改进。
回复 支持 反对

使用道具 举报

16#
 楼主| 发表于 2008-6-14 17:22 | 只看该作者

回复 25# helanmouse 的帖子

Larrabee 是基于X86 改的,但是不完全支持X86。
其实做GPGPU 编程的,目前都是专业用户,也就是系统程序员为主,不会无视硬件底层的实现。

GPGPU 协处理器模式最后会面对铁壁,也就是Throughput 的瓶颈,理论上1GFlops 的计算能力,要匹配1GB 的带宽,当IO 带宽和计算能力差距越来越大的时候,GPGPU 的计算能力就会无意义。
回复 支持 反对

使用道具 举报

17#
发表于 2008-6-14 17:26 | 只看该作者
原帖由 stcshy 于 2008-6-14 15:57 发表

CAL可以兼容ATI在PC平台上所有US架构的GPU
这下你满意了吧?
代码的长短根本不是问题
高级语言封装的类库你写代码调用只要一行就可以
用汇编谁晓得要写多少
只能说明类库的封装程度而已,况且你举的例子根本就 ...


代码的长短意味着开发人员的开发复杂度,你以为长的代码都是空的?
里面的汇编部分对于开发人员要求更高
你又不懂汇编编程,跟我这样的资深软件开发人员谈什么开发啊?哈哈

你的那个AVIVO Converter画质请注意称呼用词。,根本不值一提,而且我还没有看到你给出来的结果啊?
压缩一部完整的D9 DVD到640*360 30FPS的视频需要多少时间??你统计过吗?
你那个请注意称呼用词。的AVIVO可以把2小时的D9 DVD在20分钟全部转换完吗?哈哈
回复 支持 反对

使用道具 举报

18#
发表于 2008-6-14 17:27 | 只看该作者
原帖由 stcshy 于 2008-6-14 16:00 发表

忽悠那么多顶什么用?CUDA无非就G8x和G9x
CAL就R6xx和RV6xx


全世界的G8X和G9X的数量和R6xx、RV6xx的数量有可比性吗?哈哈
回复 支持 反对

使用道具 举报

19#
发表于 2008-6-14 17:30 | 只看该作者
原帖由 stcshy 于 2008-6-14 16:30 发表

这个看类库的
好的类库直接帮你把矩阵乘法的算法都搞定了……你一行代码调用下什么都搞定了……
实际上CUDA在类库上确实做的不错
资深程序员可能自己去整算法写代码,一般的人还是不喜欢整算法,只想捡现成的用


哈哈,一看你就根本不懂,CAL实现矩阵乘法都要那么多代码,非常麻烦,只有范例代码,更不用说实现FFT和DCT了,没有范例。
而用CUDA开发有现成的FFT和DCT以及很多算法的代码直接拿过来就可以用,而且这些的实现已经是最优化的,这一点才是最重要的一点。
你以为一般人不喜欢整算法的原因是什么?你根本没法保证你的算法的效率,不服你自己构思一个排序算法和现成的快速排序比比性能看看?纯粹的外行说法,哈哈
回复 支持 反对

使用道具 举报

20#
发表于 2008-6-14 17:33 | 只看该作者
原帖由 tomsmith123 于 2008-6-14 17:22 发表
Larrabee 是基于X86 改的,但是不完全支持X86。
其实做GPGPU 编程的,目前都是专业用户,也就是系统程序员为主,不会无视硬件底层的实现。

GPGPU 协处理器模式最后会面对铁壁,也就是Throughput 的瓶颈,理论上1 ...


目前显存的带宽改进也是与时俱进的,PCI-E的带宽不够也许会对于某些运算是瓶颈,但是只要应用好显存,尽量都在显存内进行运算,带宽还是绰绰有余的。
GTX280不就使用了512bit?如果将来再用GDDR5,更不是问题
回复 支持 反对

使用道具 举报

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

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2025-8-6 10:35

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

快速回复 返回顶部 返回列表