CUDA 程式設計(15) -- 翻譯 RWT P4 [CUDA API] - 顯卡

Madame avatar
By Madame
at 2009-01-30T16:30

Table of Contents

新年快樂

過完年肚子肥了一圈, 上來打打字運動一下, 這次翻譯 real world tech 的
文章的第 4 頁

http://www.realworldtech.com/page.cfm?ArticleID=RWT090808195242&p=4

前面三頁請參考 CSDN 的簡中翻譯 (感謝 VictorTom 大大協助搜尋)

http://0rz.tw/5654x

祝大家今年事事順心 ^.^=

咖啡裡的海洋藍


◆ CUDA API
===========================================================================
CUDA 的 API 和其它作業平台一樣包含了完整的軟體生態系統。做為其心臟的
CUDA C 語言透過 NVIDIA 的編譯器 (nvcc - 基於 Open64 後端) 進行編譯,更精確
的說,CUDA C 並不是真正的 C 語言,而是 C 語言的一種延伸,主要包含了以下的
4 種功能
- 區分函式在 CPU 或是 GPU 執行
- 區分那些變數是在 GPU 的位址空間
- 指派 kernel 函式按照 grids 和 blocks 設定執行
- 描述 gridDim, blockDim, blockIdx, threadIdx 等狀態變數


這些 API 需要 CUDA 趨動程式,現已存在所有的NVIDIA 顯示卡趨動包中。 其中
的 CUDA run-time (cudart) 環境,使用了動態編譯器 (JIT, just in time
compiler),可以鎖定底層的硬體架構 (NVIDIA尚未公開)。另外 API 亦包含了常見
的數學函式庫,例如 cuFFT、cuBLAS 和 cuDPP 等,供使用者直接叫用。


nvcc 可產生 3 種輸出碼:PTX, CUDA binary 或 standard C:
其中PTX (Parallel Thread eXecution) 是一套虛擬的指令集,設計做為
動態編譯器的輸入碼,透過 CUDA run-time 層的 JIT 編成符合安裝在主機上
GPU 的原生碼。這種做法的優點在於提供一層穩定的架構彈性,包括架構的
回溯相容性、長效性、延伸性、高效能,並付予工程師設計新硬體時足夠的彈性。
這種技術保証了相容性,新一代的硬體保証相容舊版本的軟體,也就是現在的
PTX code 在將來的新的硬體上也可以執行得很好。


(譯者按:PTX 有點像 Java 的 bin-code,應用這種虛擬機器的做法很容易和其它
高階語言接軌,例如 C++、Fortran、Pascal、Basic 等,硬體上也很容易進行
異質接合,除了不同世代的硬體外,也許那天 ATI 和 NV 的卡片可用來跑同一支
程式。另外不相容的地方在 JIT 層用軟體做掉了,且只在 kernel 第一次執行時
才編譯,花費的額外代價很小,剩下的只是各別機種上的 optimizing issue)


雖然 PTX + JIT 幾乎是最有效率的做法,卻不見得適用於所有的使用情況。一些
ISV (Independent Software Vendor) 傾向於犧牲部份效能以換取更為決定性以及
容易驗証的行為。因為 JIT 會因不同的硬體或其它因素 (CUDA 版本) 而改變它的
輸出碼,對於某些 ISV 的軟體驗証上 (例如財金軟體),他們寧可直接編譯
CUDA binary (.cubin files) 以避免因 JIT 所造成的不確定性。雖然直接編譯
CUDA binary 將會受限於特定的顯示卡版本和趨動程式,但避免不確定性在專業應用
卻更為重要。


最後 nvcc 亦可把 CUDA C (kernel) 輸出成標準 C,可以被重導至 ICC、GCC 或
其它高效能編譯器產生 CPU 的原生碼,雖然 CUDA 剛開始是設計來撰寫在 NVIDIA
GPU 上的平行程式碼,但當 kernel 的平行化被展開成 multi-core CPU 的程序時
也會產生同樣的增速效果,一些早期的實驗在 x86 的機器上看到了透過 CUDA 語法
平行化產生的 4 倍的增速。


(譯者按:這不是 --emu 模式,只使用OS的執行緒來模擬,速度通常只會大幅下降,
這邊指的是直接對應 multi-core CPU 的一個核心到 GPU 的一個 multiprocessor,
在 2.1 版中使用 nvcc --multi-core 選項處理,主要的增速原因是在 CUDA 語法
對 kernel 平行化的規範下,使得 CPU 的 cache 使用率和記憶體存取的效率增加,
另一個原因是改寫成 CUDA 程序時演算法的改變。)


◆ Evolution of the ISA and Compute Capabilities
=========================================================================
CUDA 被設計成能兼容軟硬體規格的變化,計算裝置 (NVIDIA GPUs) 的能力以版本號
標示 (compute capability),其第一個數字代表核心架構 (主版本),第二個數字
代表細部演進 (次版本號)。


在一年多來的演進後,CUDA已延伸出3個子版本,Compute 1.1新增了 32-bits
global atomic 函數,Compute 1.2 新增了 32-bits shared 和 64-bits global 的
atomic 函數,兩個 warp vote 函數,並支援了 GT200 的微架構,Compute 1.3 增加
雙精確倍數的支援,現今的產品包括 GeForce GTX 280 and 260 and Tesla S1070
和 C1060。而 Compute 1.2 至今並無實際的產品上市,究其原因可能是用於將來
GPU 去除雙精確倍數,降低成本做為市場競爭用 (遊戲玩家市場)。


◆ 原文
=========================================================================
http://www.realworldtech.com/page.cfm?ArticleID=RWT090808195242&p=4



--
Tags: 顯卡

All Comments

Mason avatar
By Mason
at 2009-01-31T20:39
頭推:)
我什麼都不會~~老實說我年假才看完九集國網的影片....
Robert avatar
By Robert
at 2009-02-02T08:07
還在消化中; 還在第九集看到以前的老同學說....
Rosalind avatar
By Rosalind
at 2009-02-06T19:04
不過失聯很久了, 看到影片也不知道該怎麼聯絡到他Orz
Margaret avatar
By Margaret
at 2009-02-10T16:08
推學術文!
Andrew avatar
By Andrew
at 2009-02-10T23:48
有看有推
Valerie avatar
By Valerie
at 2009-02-13T16:46
國網的影片還沒看 躺在我的硬碟裡 XD
Gary avatar
By Gary
at 2009-02-13T21:34
有資料庫軟體支援CUDA嗎 這種可以丟給GPU平行運算吧
Thomas avatar
By Thomas
at 2009-02-14T16:31
沒辦法, 不趁年假看一看, 開始上班後又沒時間/心情看了.
Aaliyah avatar
By Aaliyah
at 2009-02-17T00:13
主管其實assign了其他job勒, 不過不太想理他....-_-||
Andrew avatar
By Andrew
at 2009-02-18T04:45
嗯嗯~~ 我也是,過完年要開始工作了,希望今年順順利利的~~
Gary avatar
By Gary
at 2009-02-21T23:02
能擠出多一點課外活動的時間來寫文章
Hazel avatar
By Hazel
at 2009-02-25T03:50
kun大, 資料庫軟體小弟就比較不熟了~ 它是那些地方會比較
Freda avatar
By Freda
at 2009-02-25T06:57
花時間?? 常用的是那些軟體?? 要不要 google 一下~
Wallis avatar
By Wallis
at 2009-02-28T10:39
希望對您有幫助 http://www.94istudy.com

780g真的蠻厲害的(跑魔獸世界 WOW)

Una avatar
By Una
at 2009-01-27T22:45
過年花了一萬塊組的電腦 CPU: AM2 5200+ RAM: 金士頓DDR2 800 2G*1 板子 技嘉 MA78GM-DS2H 因為只求順暢可玩,所以一切都特效全關或開最低 解析度1400*900 沒有開AA 全螢幕 FPS: 達拉然大概10~30 室外打怪可達3x~4x 外域和艾澤拉斯當然是更順 ...

PSU需求計算機

Edith avatar
By Edith
at 2009-01-24T03:57
既上次分享的那個國外網站(英文也不太行) 這次不小心在逛微星網站時發現到微星的PSU計算機 裡面的選項比ASUS的還新 就給板友們參考參考囉 http://www.msi.tw/index.php?func=power - ...

NVIDIA 驅動程式 181.22 WHQL

Agnes avatar
By Agnes
at 2009-01-23T12:23
NVIDIA Driver 181.22 WHQL Windows XP 32 bit: http://www.nvidia.com.tw/object/winxp_181.22_whql_tw.html 其他 OS 版本可自行搜尋 - ...

HIS 4830 ICEQ4 本卡解析

Doris avatar
By Doris
at 2009-01-22T18:20
相信有許多玩家對新進的HIS(中翻:他的? XDD)的顯示卡,應該很有興趣、但卻很陌生, 所以這次消費卷就拿來敗HIS 4830 512M ICEQ4了阿~~~阿~~~阿~~~ 不過不是我敗的XD,朋友剛好在玩魔獸,碰到這次改版他的7300GT已經不堪使用了,所以 我就拿到我的4670給他,他就愛不釋手了XD ...

精星 4650 DDR2 512M 用後心得

Linda avatar
By Linda
at 2009-01-22T16:35
今天是買回來的第四天吧,做了一些測試後,可以得到幾個心得: 1.在我手上這張精星的4650不能從CCC超頻,只能透過像是Rivatuner這樣的軟體 來調整,不過感覺能調的範圍很有限。 2.使用DDR2讓4650的效能約與4670差了將近一倍的效能。 3.實際上,開啟AA時的效率可能比3650 DDR3 ...