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都是資源,這些資源都應該可以細粒度化分配。即網路,可以限定某乙個程序所可以使用的頻寬,可以現在某乙個會話的總頻寬,或者可以限制某乙個使用者的總頻寬,其他資源依次類似。儲存 對於儲存資源,為使用者分配定量的儲存資源。構建分布式檔案系統,監控使用者使用檔...