CUDA 總複習:CUDA 入門 - NVIDIA 台灣官方部落格-

文章推薦指數: 80 %
投票人數:10人

NVIDIA 發明了CUDA 程式設計模型並解決這些挑戰。

CUDA 是用於圖形處理單元(graphical ... 透過CUDA,您可以利用GPU 的運算能力加速應用程式。

Skiptocontent Share Email 這是 CUDA總複習系列的第二篇文章,目的是為初階或中階開發人員複習 CUDA、工具和最佳化的主要概念。

科學和商業的進步使對運算資源和工作負載加速的需求變得永無止境。

平行程式設計是一種深奧的方式,讓開發人員能加快應用程式。

然而,它有一些常見的挑戰。

第一個挑戰是簡化平行程式設計,使平行程式設計變得簡單。

簡易的程式設計可吸引更多開發人員,讓他們有動力在平行處理器上移植更多應用程式。

第二個挑戰是開發可簡易擴充的平行性的應用軟體,以利用越來越多的GPU處理器核心。

這篇文章探討CUDA如何應對這些挑戰。

其中也會說明如何開始安裝CUDA。

介紹CUDA NVIDIA發明了CUDA程式設計模型並解決這些挑戰。

CUDA是用於圖形處理單元(graphicalprocessingunits,GPU)的平行運算平台和程式設計模型。

透過CUDA,您可以利用GPU的運算能力加速應用程式。

NVIDIA於2006年11月推出CUDA的第一版,其軟體環境讓使用者使用C做為高階程式設計語言。

透過CUDA加快數以千計的應用程式,其中包括推動機器學習和深度學習的函式庫和框架。

易於設計 為了方便採用,CUDA提供了基於C/C++的介面。

CUDA程式設計模型的一大好處是可讓您編寫純量程式。

CUDA編譯器使用程式設計中的語意抽象化,以此來利用CUDA程式設計的平行性。

這可減輕程式設計的負擔。

以下是關於CUDA程式設計模型的一些基礎知識。

CUDA程式設計模型為程式設計師提供了三個主要程式語言延伸: CUDA區塊(block)–執行緒的集合或群組。

共用記憶體–所有執行緒(thread)在區塊中共用的記憶體。

同步屏障–讓多個執行緒能等到所有執行緒都到達特定執行點後再繼續。

以下程式碼範例所示為利用CUDA核心將A、B兩個向量相加。

並且輸出到另一個向量C。

核心程式碼在GPU上執行且屬於純量性質,因為它將兩個向量相加的方式如同將兩個純量數相加。

此程式碼在GPU上執行時,會以平行方式執行。

這是因為向量的每個元素都是由CUDA區塊中的執行緒執行,而所有執行緒皆平行且獨立運作。

這可減輕平行程式設計的負擔。

/**CUDA核心裝置程式碼–CUDA範例程式碼 *計算A和B的向量相加,輸出C。

三個向量的元素數量與numElements相同。

*/ __global__voidvectorAdd(float*A,float*B,float*C,intnumElements){   inti=blockDim.x*blockIdx.x+threadIdx.x;   if(i



請為這篇文章評分?