1. 程式人生 > >看cuda初級教程視訊筆記(周斌講的)--CUDA、GPU程式設計模型

看cuda初級教程視訊筆記(周斌講的)--CUDA、GPU程式設計模型

主要內容:cpu和gpu互動模式,gpu執行緒組織模型(不停強化),gpu儲存模型,基本的程式設計問題

cpu-gpu互動

有各自的實體記憶體空間,通過PCIE匯流排互連8GB/s~16GB/s,互動開銷很大

訪存速度,之所以有訪存速度的層次劃分是在價格上和效能上的一個折中,不得不考慮到成本問題

暫存器和共享儲存單元的速度是一個時鐘週期,非常快

local memory放在視訊記憶體晶片裡的片外記憶體和global memory 在視訊記憶體裡面的,對於整個處理器來說,慢的(不懂啊)

constant memory , texture memory, instruction memory(invisible) 都在DRAM立面

GPU的執行緒組織模型 

thread->block->grid(最大)執行緒的一些組合變成WARP,WARP在block裡

執行緒組織架構說明

一個Kernel具有大量執行緒,執行緒唄劃分成執行緒塊blocks,一個執行緒塊內部的執行緒共享記憶體Shared Memory可以同步‘_syncthread'

Kernel啟動一個grid,包含若干執行緒塊(使用者設定)。執行緒和執行緒塊都有唯一的標識

SM表示流動處理器,一個SM有32個cuda核

GPU執行緒對映關係

(沒聽懂,圖也看不清)

GPU記憶體和執行緒關係

一個thread有私有的local memory(還有私有的暫存器),一個block裡所有的執行緒有shared memory

整個裝置呢,有個共有的Global Memory ,共享的

主機端儲存器可以和很多裝置儲存器互動(就是多個顯示卡同時幹活)

程式設計模型

常規意義的GPU用於處理圖形影象,操作於畫素,每個畫素的操作都類似,可以應用於SIMD

SIMD也可以認為不僅是指令面上,也可以認為是資料並行分割的,就像陣列相加向量操作

SIMT單指令多執行緒

GPU版本的SIMD,大量執行緒模型獲得高度並行,執行緒切換獲得延遲隱藏,多個執行緒執行相同指令流,GPU上大量執行緒承載執行

CUDA程式設計模式:Extended C

是擴充套件的C語言,增加了一些修飾詞,關鍵詞

__device__執行位置是device,呼叫位置是device(就是顯示卡,哈哈)

__global__執行位置是device,呼叫位置是host(主機端,cpu)它定義了個Kernel函式,是入口函式,cpu上呼叫,gpu上執行,必須返回void

__host__執行位置是host,呼叫位置是host

__device__和__host__可以同時呼叫