VideoCard 板


LINE

刚好老师最近要我为 group 撰写中文的教学文件,准备下学期教学弟妹们CUDA程式设计,所以顺便 po 上来和大家分享,有什麽 疏漏之处,请各位大大不吝指正。 ※ 引言 ※ 从软体设计角度来看,CUDA 写作并不困难,困难之处在於如何最佳化,它需要了解不少硬体的细节。一般而言未最佳化的程式 在 GPGPU 上面执行,可以比传统的 CPU 快上 5~10 倍,而最佳化过的程式,往往还能再增速 5~10 倍,达到 25~100 倍的效能。 CUDA 和传统 C++ 最大的差异在於「平行化的程式设计」vs.「序列化的程式设计」,例如传统上透过回圈执行数千次的程式码, 在 CUDA 上就可以将它拆解成数百个同时执行的执行绪,每个执行绪只执行十几次而己,因此产生数十到数百倍的效能。 CUDA 是在传统 C++ 的基础上,加入一些延伸语法,以及辅助的函式库,而形成的一种程式语言,一般而言只要熟悉 C 或 C++, 就很容易上手 (可能比 Java 容易上手,因为传统 C/C++ 的函式库都可以用),编译好的程式码,也可以跟其它语言做不错的联结。 在接下来几篇文章中,我们从简单的软体设计角度开始,介绍 CUDA 如何写作,逐渐带出硬体细节,然後介绍最佳化的一些技术。 ※ 第一章CUDA程式如何执行 ※ ◆ 名词 ◆ 主机 (host) :插显示卡那台PC。 装置 (device):显示卡。 核心 (kernel):在显示卡上执行的程式码区段。 ◆ 执行流程 ◆ 因为 GPGPU 属於外部装置(device),其机器指令有别於传统 CPU,所以程式核心(kernel) 必须经过特殊编译後,在执行时期和所需的 资料由主机(host)送到装置中,并在执行完成後,将结果资料传回主机,流程如下。 主机(host) PC 装置(device) 显示卡 传送资料到显示卡记忆体中 (1) 主机记忆体 ------------------------------------------>> 显示卡记忆体 传送程式码(kernel)到显示卡 (2) 主机记忆体 ------------------------------------------>> 显示卡记忆体 (3) 主机做其它的事 or 闲置 执行显示卡中的程式(kernel) 传回执行结果 (4) 主机记忆体 <<------------------------------------------ 显示卡记忆体 实际上,CUDA 提供了很多 API 简化这些流程,包括记忆体在两者间的搬移,显示卡记忆体的配置与释放,kernel 设定、启动与同步 等,所以上面的每一个步骤其实就是去叫用CUDA的函式而已。 ◆ 编译流程 ◆ 简易的编译流程如下,只要先准备好副档名为 .cu 的 CUDA 程式码档案,然後使用CUDA的编译器 (nvcc) 来编译即可,进阶的编译流程 以後再介绍。 nvcc .cu 档案 ----------> 可执行档 or 目的档 其中 .cu 档案可以同时包含在 host 中执行的传统 C++ 程式码,以及在 GPGPU 中执行的 kernel 程式码。 ※ 後续章节 ※ ◆ 第二章 CUDA 安装 ◆ ◆ 第三章 简易 kernel 写作 ◆ ◆ 第四章 CUDA 的记忆体分类 ◆ ◆ 第五章 CUDA 的函式种类 ◆ ... (可能还会调整) ※ 名词解释 ※ (1) GPGPU (General purpose graphics processing units) 泛用图形处理晶片 (2) host 主机:指插上显示卡的那台机器。 (3) device 装置:主机之外的其它单元,在这里指显示卡。 (4) kernel 核心:在GPGPU中执行的程式码区段。 (5) API (Application Programming Interface) 程式设计介面,就是一组函式库。 (6) nvcc : CUDA 的compiler,可到 nVidia 的官网免费下载 http://www.nvidia.com/object/cuda_get.html。 (7) .cu 档案:CUDA的程式码档案,基本上是 .cpp 档案的延伸,除了传统C++程式码之外,亦可包含kernel程式码,透过 nvcc 编译 成目的档或可执行档。 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.45.212.98 ※ 编辑: a5000ml 来自: 114.45.212.98 (09/25 09:38)
1F:推 vip82:PUSH PUSH!! 09/25 09:06
2F:推 f7258:推长知识... 09/25 09:12
3F:推 yayax:受用了~推! 09/25 09:34
4F:推 VictorTom:对齐不了也要推.... 09/25 09:39
※ 编辑: a5000ml 来自: 114.45.212.98 (09/25 09:44)
5F:推 killer2k:好酷 09/25 09:41
6F:推 lavatar:推推... 09/25 10:17
7F:推 finalhaven:可以请问是哪间学校在做的cuda研究吗? 09/25 11:07
8F:推 Gigabye:目前nVidia的驱动就是CUDA complier出来的吗? 09/25 12:05
9F:推 Gigabye:缩起来比较方便 http://0rz.tw/314QO 09/25 12:08
10F:推 b24333666:这个可以拿来做专题喔 09/25 12:54
11F:推 bewith:看板长知识 09/25 13:09
12F:推 finalhaven:CUDA写的程式归CUDA,Dirver归Driver,两个是不一样 09/25 13:18
13F:→ finalhaven:光两个程式定位就不同了... 09/25 13:18
14F:推 kenru:我一直觉的CUDA很酷~ 09/25 13:25
15F:→ cap0111:看不懂 end推 09/25 13:33
16F:推 Gigabye:CUDA似乎偏向video & audio的encode 跟底层的driver不同? 09/25 13:40
18F:→ Gigabye:有好多美国的名校有研究和教学CUDA 台湾哪所学校有阿? 09/25 13:59
19F:推 hunterchung:好棒喔....好期待第二章! 09/25 14:03
20F:推 finalhaven:CUDA是在Application Layer做Compile程式,而Dirver 09/25 14:11
21F:→ finalhaven:是属於较底层的程式,还要配合硬体位址做设计 09/25 14:12
22F:推 Gigabye:Phat~~ f大了解的真多 想必是科班出身的吧^^ 09/25 15:12
23F:推 athlun:我们专题本来也是打算做CUDA,不过被另一组抢先一步 09/25 18:56
24F:→ athlun:顺便提一下,美国UIUC有把完整的CUDA课程讲义放上网 09/25 18:57
25F:→ athlun:期待续文~ 09/25 18:58
26F:推 finalhaven:请问楼上是哪间学校阿@@ 09/25 19:11
27F:推 Gigabye:想学认真这门技术 我看只能到美国了 伊利诺香槟很优秀^^ 09/25 19:37
28F:→ Gigabye: 学 09/25 19:37
29F:推 athlun:我是清大的. 我们是做大学部专题,用CUDA协助EDA运算 09/25 22:53
30F:推 mike0227:那个倍数有点夸张 要看是做什麽运算 差很多阿 09/26 00:38
31F:→ mike0227:NV网站上那些很大数字的倍数应该都只记kernel时间而已XD 09/26 00:39
32F:推 vixen:UIUC的CUDA讲义连结在哪里啊? 09/26 07:32
33F:推 finalhaven:请问是清大资工的吗? 09/26 09:48
34F:推 finkel:台大今年有开课喔,可惜交大似乎没有 看有没有老师有兴趣可 09/26 11:47
35F:→ finkel:以去找NV赞助(布过NV最近裁员了说.. 09/26 11:47
36F:→ finkel:我比较想知道正确在VS2005开发的设定法 "编译流程"那步骤.. 09/26 11:48
37F:推 finalhaven:那个编译要用NV的Compiler吧?,可以用其他的编译器 09/26 12:01
38F:→ finalhaven:来编译吗? 09/26 12:02
39F:推 finkel:是用NV的compiler阿.只是在VS2005开发CUDA程式要做一些设定 09/26 12:05
40F:推 b24333666:不知道南开科技大学会不会辅助 09/26 12:59
41F:推 athlun:我是清大电机的,不过是偏资工走向的 XD 09/26 19:09
42F:→ athlun:UIUC的课程网页: http://courses.ece.uiuc.edu/ece498/al1/ 09/26 19:09
43F:推 finalhaven:是许雅三老师的学生吗XD 09/26 20:23
44F:推 mike0227:http://0rz.tw/884Lt Visual Studio设定方式 09/27 02:40
45F:推 athlun:不是耶,我是刘靖家老师的大学专题生 09/27 17:37
46F:推 netsphere:好期待下一章喔 >///< 09/28 23:31
47F:推 sdk:我一年半前就试过用CUDA解EDA了..50几倍..不过懒的写paper..XD 10/01 18:58
48F:→ sdk:如果对cuda有兴趣的or有写过的..大家可以来交流一下啊~~ 10/01 18:58
49F:→ sdk:另外要cuda在windows上有5秒的限制 建议用linux会稳很多 10/01 19:00
50F:→ sdk:(尤其是EDA这种simulation很容易超过5秒...) 10/01 19:01
51F:推 powertodream:推!!!!! 10/02 15:53
AE2001:转录至看板 NTUT_MMRE86 10/05 01:05 a5000ml:转录至看板 C_and_CPP 10/15 20:58 uf2000uf:转录至某隐形看板 10/16 21:48
52F:推 noxigm:神人!! 快拜!! 10/24 05:37







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP