1 基礎介紹與NX環境配置

2021-10-12 12:51:45 字數 1672 閱讀 8498

乙個cuda程式包含了以下兩個部分的混合:

1、在cpu上執行的主機**

2、在gpu上執行的裝置**

nvidia的cuda nvcc編譯器在編譯過程中將裝置**從主機**中分離出來。主機**是標準的c**,使用c編譯器進行編譯。裝置**即核函式,是用擴充套件的帶有標記資料並行函式關鍵字的cuda c語言編寫的,通過nvcc進行編譯。

寫乙個cuda c程式,你需要以下幾個步驟:

1、用準用的副檔名.cu來建立乙個原始檔

2、使用cuda nvcc編譯器來編譯程式

3、從命令列執行可執行檔案,這個檔案有可在gpu上執行的核心**

使用gpu來編寫乙個"hello world"程式:

#include 

__global__ void helloworld()

int main()

修飾符__global__告訴編譯器這個函式將從cpu中呼叫,然後在gpu上執行。核函式必須有乙個void返回型別。

<<< >>>裡面的引數是執行配置,第乙個值是網格維度,也就是啟動塊的數目。第二個值說明每個塊使用多少執行緒來執行核心函式(塊維度),這裡表示有10個gpu執行緒會被呼叫。

同乙個塊中的執行緒可以互相協作。

有時候為了除錯程式,可以將執行引數設定為<<<1,1>>>,模擬序列執行,可以用於驗證結果是否正確。

cudadevicerest()用來顯示地釋放和清空當前程序中與當前裝置有關地所有資源。

編譯:

nvcc  hello.cu  -o hello

執行./hello

結果如下:

hello world from cpu

hello world from gpu

hello world from gpu

hello world from gpu

hello world from gpu

hello world from gpu

hello world from gpu

hello world from gpu

hello world from gpu

hello world from gpu

hello world from gpu

如果nx沒有設定過環境變數,那麼直接使用nvcc編譯會報錯誤,這裡需要設定環境變數:

開啟~/.bashrc ,新增環境變數如下:

export ld_library_path=/usr/local/cuda/lib

export path=$path:/usr/local/cuda/bin

cuda程式設計結構:

1、分配gpu記憶體。

2、從cpu記憶體中拷貝資料到gpu記憶體。

3、呼叫cuda核心函式來完成程式指定的運算。

4、將資料從gpu中拷回cpu記憶體。

5、釋放gpu記憶體空間。

從cuda6.0開始,nvidia提出了名為「統一定址」的程式設計模型的改進,它連線了主機記憶體核裝置記憶體空間,可使用單個指標訪問cpu和gpu記憶體,無須彼此之間手動拷貝資料。

TC環境下NX專案除錯環境配置

內容 tc環境下nx專案除錯環境配置 測試樣例環境 win7 x64,tc11 四層 nx12,vs2015,除錯方式 通過vs編譯器除錯,非附加到程序 附加程序有時除錯不上 步驟 1.得到啟動tc的批處理檔案tc nx.bat,通常tc實施負責,內容大致如下 2.通常使用批處理檔案啟動vs,所以在...

Scala介紹與環境配置

scala程式語言 1 語言基礎 2 物件導向 3 重點 函式式程式設計 和 高階特性 泛型 隱式類 隱式函式 隱式引數 官網 一 scala語言簡介 1 scala是乙個多正規化的程式語言 支援多種方式的程式設計 1 使用物件導向程式設計 封裝 繼承 多型 2 使用函式式程式設計 scala最大的...

nx二次開發 環境配置

以c 語言講解環境配置 1.安裝好nx和vs 一般來說nx和vs的版本要對應,如nx10.0對應vs2012 如果不對應則需要修改d program files siemens nx 10.0 ugopen vs files vc vcprojects nx10 nxopencpp.vsz該檔案中的...