GPU資源分配

2021-07-22 18:03:53 字數 1918 閱讀 2396

gpu

的計算核心是以一定數量的

streaming processor(sp)

組成的處理器陣列,

nv稱之為

texture processing clusters(tpc)

,每個tpc

中又包含一定數量的

streaming multi-processor(sm)

,每個sm包含8

個sp。sp

的主要結構為乙個

alu(邏輯運算單元),乙個

fpu(浮點運算單元)以及乙個

register file(

暫存器堆)。

sm內包含有乙個

instruction unit

、乙個constant memory

、乙個texture memory

,8192

個register

、乙個16kb

的share memory、8

個stream processor(sp)

和兩個special function units

(sfu

)。(geforce9300m gs

只擁有1個sm

) thread

是cuda

模型中最基本的執行單元,執行最基本的程式指令。

block

是一組協作

thread

,block

內部允許共享儲存,每個

block

最多包含

512個

thread

。grid

是一組block

,共享全域性記憶體。

kernel

是在gpu

上執行的核心程式,每乙個

grid

對應乙個

kernel

任務。 在程式執行的時候,實際上每32個

thread

組成乙個

warp

,每個 

warp 

塊都包含連續的執行緒,遞增執行緒 

id 。

warp是mp

的基本排程單位,每次執行的時候,由於

mp數量不同,所以乙個

block

內的所有

thread

不一定全部同時執行,但是每個

warp

內的所有

thread

一定同時執行。因此,我們在定義block size

的時候應使其為

warp size

的整數倍,也就是

block size

應為32

的整數倍。理論上

thread

越多,就越能彌補單個

thread

讀取資料的

latency 

,但是當

thread

越多,每個

thread

可用的暫存器也就越少,嚴重的時候甚至能造成

kernel

無法啟動。因此每個

block

最少應包含64個

thread

,一般選擇

128或者

256,具體視

mp數目而定。乙個

mp最多可以同時執行

768個

thread

,但每個

mp最多包含8個

block

,因此要保持

100%

利用率,

block

數目與其

size

有如下幾種設定方式: ø 2 blocks x 384 threads ø 3 blocks x 256 threads ø 4 blocks x 192 threads ø 6 blocks x 128 threads ø 8 blocks x 96 threads

TensorFlow指定GPU裝置 分配視訊記憶體

一 使用gpu加速運算 1.tensorflow程式中可以通過tf.device函式來指定執行的裝置。cpu名稱為 cpu 0 即使有多個cpu,所有的cpu都使用 cpu 0作為名稱。gpu則不同,是 gpu n n可替換。n 0,即是第乙個gpu,以此類推。2.觀察每個運算所用的裝置 使用log...

CPU對GPU的資源更新

一共有四個方法進行對資源進行更新 cpu呼叫 id3d11devicecontext map gpu呼叫 id3d11devicecontext copysubresourceregion id3d11devicecontext copyresource id3d11devicecontext up...

雲計算 資源分配

在雲計算系統中所有的儲存 網路 記憶體 計算 io都是資源,這些資源都應該可以細粒度化分配。即網路,可以限定某乙個程序所可以使用的頻寬,可以現在某乙個會話的總頻寬,或者可以限制某乙個使用者的總頻寬,其他資源依次類似。儲存 對於儲存資源,為使用者分配定量的儲存資源。構建分布式檔案系統,監控使用者使用檔...