cuda是基于標準c語(yǔ)言的,你先把c語(yǔ)言的基礎學(xué)好,然后動(dòng)手自己寫(xiě)一些c語(yǔ)言的程序,等對c語(yǔ)言有一定的功底之后,再看cuda,cuda與c語(yǔ)言的不同之處我覺(jué)得在于那個(gè)內核函數,以及如何劃分線(xiàn)程塊和柵格的緯度和大小,以及如何實(shí)現對于線(xiàn)程的索引的搜索,讓每一個(gè)線(xiàn)程處理對應的一個(gè)變量或者幾個(gè)變量。
然后是cuda的一些基礎的語(yǔ)法,這些你可以看一些簡(jiǎn)單的cuda的例子,例如矩陣相加的例子,通過(guò)這些程序的例子可以很好的理解這些語(yǔ)法。最好自己動(dòng)手寫(xiě)寫(xiě)才會(huì )保證不出錯誤,因為寫(xiě)cuda比寫(xiě)c確實(shí)要麻煩很多。
希望可以對你有所幫助。祝你好運。
CUDA CUDA(Compute Unified Device Architecture),顯卡廠(chǎng)商NVidia推出的運算平臺。
CUDA是一種由NVIDIA推出的通用并行計算架構,該架構使GPU能夠解決復雜的計算問(wèn)題。 它包含了CUDA指令集架構(ISA)以及GPU內部的并行計算引擎。
開(kāi)發(fā)人員現在可以使用C語(yǔ)言來(lái)為CUDA架構編寫(xiě)程序,C語(yǔ)言是應用最廣泛的一種高級編程語(yǔ)言。所編寫(xiě)出的程序于是就可以在支持CUDA的處理器上以超高性能運行。
將來(lái)還會(huì )支持其它語(yǔ)言,包括FORTRAN以及C++。 隨著(zhù)顯卡的發(fā)展,GPU越來(lái)越強大,而且GPU為顯示圖像做了優(yōu)化。
在計算上已經(jīng)超越了通用的CPU。如此強大的芯片如果只是作為顯卡就太浪費了,因此NVidia推出CUDA,讓顯卡可以用于圖像計算以外的目的。
目前只有G80、G92、G94和GT200平臺的NVidia顯卡才能使用CUDA,工具集的核心是一個(gè)C語(yǔ)言編譯器。G80中擁有128個(gè)單獨的ALU,因此非常適合并行計算,而且數值計算的速度遠遠優(yōu)于CPU。
CUDA的SDK中的編譯器和開(kāi)發(fā)平臺支持Windows、Linux系統,可以與Visual Studio2005集成在一起。 Geforce8CUDA(Compute Unified Device Architecture)是一個(gè)新的基礎架構,這個(gè)架構可以使用GPU來(lái)解決商業(yè)、工業(yè)以及科學(xué)方面的復雜計算問(wèn)題。
它是一個(gè)完整的GPGPU解決方案,提供了硬件的直接訪(fǎng)問(wèn)接口,而不必像傳統方式一樣必須依賴(lài)圖形API接口來(lái)實(shí)現GPU的訪(fǎng)問(wèn)。在架構上采用了一種全新的計算體系結構來(lái)使用GPU提供的硬件資源,從而給大規模的數據計算應用提供了一種比CPU更加強大的計算能力。
CUDA采用C語(yǔ)言作為編程語(yǔ)言提供大量的高性能計算指令開(kāi)發(fā)能力,使開(kāi)發(fā)者能夠在GPU的強大計算能力的基礎上建立起一種效率更高的密集數據計算解決方案。 從CUDA體系結構的組成來(lái)說(shuō),包含了三個(gè)部分:開(kāi)發(fā)庫、運行期環(huán)境和驅動(dòng)(表2)。
開(kāi)發(fā)庫是基于CUDA技術(shù)所提供的應用開(kāi)發(fā)庫。目前CUDA的1.1版提供了兩個(gè)標準的數學(xué)運算庫——CUFFT(離散快速傅立葉變換)和CUBLAS(離散基本線(xiàn)性計算)的實(shí)現。
這兩個(gè)數學(xué)運算庫所解決的是典型的大規模的并行計算問(wèn)題,也是在密集數據計算中非常常見(jiàn)的計算類(lèi)型。開(kāi)發(fā)人員在開(kāi)發(fā)庫的基礎上可以快速、方便的建立起自己的計算應用。
此外,開(kāi)發(fā)人員也可以在CUDA的技術(shù)基礎上實(shí)現出更多的開(kāi)發(fā)庫。 運行期環(huán)境提供了應用開(kāi)發(fā)接口和運行期組件,包括基本數據類(lèi)型的定義和各類(lèi)計算、類(lèi)型轉換、內存管理、設備訪(fǎng)問(wèn)和執行調度等函數。
基于CUDA開(kāi)發(fā)的程序代碼在實(shí)際執行中分為兩種,一種是運行在CPU上的宿主代碼(Host Code),一種是運行在GPU上的設備代碼(Device Code)。不同類(lèi)型的代碼由于其運行的物理位置不同,能夠訪(fǎng)問(wèn)到的資源不同,因此對應的運行期組件也分為公共組件、宿主組件和設備組件三個(gè)部分,基本上囊括了所有在GPGPU開(kāi)發(fā)中所需要的功能和能夠使用到的資源接口,開(kāi)發(fā)人員可以通過(guò)運行期環(huán)境的編程接口實(shí)現各種類(lèi)型的計算。
由于目前存在著(zhù)多種GPU版本的NVidia顯卡,不同版本的GPU之間都有不同的差異,因此驅動(dòng)部分基本上可以理解為是CUDA-enable的GPU的設備抽象層,提供硬件設備的抽象訪(fǎng)問(wèn)接口。CUDA提供運行期環(huán)境也是通過(guò)這一層來(lái)實(shí)現各種功能的。
目前基于CUDA開(kāi)發(fā)的應用必須有NVIDIA CUDA-enable的硬件支持,NVidia公司GPU運算事業(yè)部總經(jīng)理Andy Keane在一次活動(dòng)中表示:一個(gè)充滿(mǎn)生命力的技術(shù)平臺應該是開(kāi)放的,CUDA未來(lái)也會(huì )向這個(gè)方向發(fā)展。由于CUDA的體系結構中有硬件抽象層的存在,因此今后也有可能發(fā)展成為一個(gè)通用的GPGPU標準接口,兼容不同廠(chǎng)商的GPU產(chǎn)品 CUDA 工具包是一種針對支持CUDA功能的GPU(圖形處理器)的C語(yǔ)言開(kāi)發(fā)環(huán)境。
CUDA開(kāi)發(fā)環(huán)境包括: · nvcc C語(yǔ)言編譯器 · 適用于GPU(圖形處理器)的CUDA FFT和BLAS庫 · 分析器 · 適用于GPU(圖形處理器)的gdb調試器(在2008年3月推出alpha版) · CUDA運行時(shí)(CUDA runtime)驅動(dòng)程序(目前在標準的NVIDIA GPU驅動(dòng)中也提供) · CUDA編程手冊 CUDA開(kāi)發(fā)者軟件開(kāi)發(fā)包(SDK)提供了一些范例(附有源代碼),以幫助使用者開(kāi)始CUDA編程。這些范例包括: · 并行雙調排序 · 矩陣乘法 · 矩陣轉置 · 利用計時(shí)器進(jìn)行性能評價(jià) · 并行大數組的前綴和(掃描) · 圖像卷積 · 使用Haar小波的一維DWT · OpenGL和Direct3D圖形互操作示例 · CUDA BLAS和FFT庫的使用示例 · CPU-GPU C—和C++—代碼集成 · 二項式期權定價(jià)模型 · Black-Scholes期權定價(jià)模型 · Monte-Carlo期權定價(jià)模型 · 并行Mersenne Twister(隨機數生成) · 并行直方圖 · 圖像去噪 · Sobel邊緣檢測濾波器 · MathWorks MATLAB? 新的基于1.1版CUDA的SDK 范例現在也已經(jīng)發(fā)布了。
技術(shù)功能 ·在GPU(圖形處理器)上提供標準C編程語(yǔ)言 · 為在支持CUDA的NVIDIA GPU(圖形處理器)上進(jìn)行并行計算而提供了統一的軟硬件解決方案 · CUDA兼容的GPU(圖形處理器)包括很多:從低功耗的筆記本上用的GPU到高性能的,多GPU的系統。 · 支持CUDA的。
CPU相當于大腦,我們可以將顯卡比喻為一名畫(huà)家,CPU(相當于先大腦構思)先需要告訴顯卡需要畫(huà)什么,這時(shí)顯卡就會(huì )按照CPU的要求畫(huà)出一張一張的圖片,一張一張的圖片我們可以稱(chēng)之為幀數,接著(zhù)顯示器會(huì )將這些圖片進(jìn)行連貫高速播放,我們在顯示器中即可看到連貫的畫(huà)面。
性能好的顯卡(好的畫(huà)家)能夠畫(huà)出更多更好看的圖片,使得我們能夠通過(guò)顯示器看到的畫(huà)面就更加流暢,更加清晰。 顯卡架構:越新越好所謂的架構就是顯卡使用的技術(shù),每一代的顯卡架構越新,技術(shù)就越成熟,計算能力越強,比方說(shuō),老式的汽車(chē)發(fā)動(dòng)機與新型的發(fā)動(dòng)機,新型的發(fā)動(dòng)機可能會(huì )在老式的汽車(chē)發(fā)動(dòng)機的基礎上出現新的改進(jìn),讓它更加性能更優(yōu)越,并且更加省油。
顯卡流處理器:越多越好我們每次在顯卡參數看見(jiàn)CUDA核心,就是所謂的顯卡的流處理器,簡(jiǎn)稱(chēng)SP,也可以稱(chēng)之為渲染管,這也是顯卡重要的核心參數之一。流處理器的數量越多,那么顯卡的畫(huà)圖的能力就越強,速度也越快,可以理解為一個(gè)老畫(huà)家在畫(huà)圖。
(如果比較顯卡之間的流處理器數量,必須同一代的顯卡進(jìn)行比較才有意義。 ) 核心頻率:越高越好如果核心頻率越高,那么顯卡的性能無(wú)疑也越強,性能強了那么就會(huì )造成功耗越高,反之,核心頻率低,性能就會(huì )弱,發(fā)熱量自然越小。
獨立顯卡顯存帶寬:顯存位寬*顯存頻率=顯存帶寬顯卡的顯存位寬可以比喻為馬路,馬路造的越寬,那么能夠通過(guò)的汽車(chē)就會(huì )越多,而顯存頻率可以比喻為汽車(chē)的速度,顯存頻率越快,數據傳輸速度就越快。 因此顯卡的位寬和頻率的性能影響較大。
顯存容量:顯存是顯卡臨時(shí)存儲的功能,顯存的重要性不及架構、流處理器、核心頻率、顯存帶寬,但是對于小白來(lái)說(shuō),基本都是以顯卡的顯存大小,來(lái)判斷顯卡的好壞,這是一個(gè)錯誤的觀(guān)念,導致了一些奸商會(huì )使用顯存的賣(mài)點(diǎn)來(lái)忽悠小白。 比方說(shuō),GTX1060 3G顯存顯卡,雖然只有3GB顯存,但是性能無(wú)疑比GTX1050Ti 4G顯存顯卡強。
大顯存也絕對有用,但是重要性不大,有一些大型游戲比較吃顯存,如果顯存不夠,性能再強,也會(huì )爆顯存。顯卡的顯存可以比喻為是一個(gè)停車(chē)場(chǎng),若是停車(chē)場(chǎng)的馬路不夠寬(位寬),那么汽車(chē)的速度也不夠快(顯存頻率),那么停車(chē)場(chǎng)的吞吐量就會(huì )很小,即使超大停車(chē)場(chǎng)(大顯存)純屬浪費資源。
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:4.420秒