看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__可以同時調用

















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章