麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

CUDA軟件架構(gòu)—網(wǎng)格(Grid)、線程塊(Block)和線程(Thread)的組織關(guān)系以及線程索引的計(jì)算公式

2019-11-14 09:39:11
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

網(wǎng)格(Grid)、線程塊(Block)和線程(Thread)的組織關(guān)系

CUDA的軟件架構(gòu)由網(wǎng)格(Grid)、線程塊(Block)和線程(Thread)組成,相當(dāng)于把GPU上的計(jì)算單元分為若干(2~3)個(gè)網(wǎng)格,每個(gè)網(wǎng)格內(nèi)包含若干(65535)個(gè)線程塊,每個(gè)線程塊包含若干(512)個(gè)線程,三者的關(guān)系如下圖:

Thread,block,grid是CUDA編程上的概念,為了方便程序員軟件設(shè)計(jì),組織線程。

thread:一個(gè)CUDA的并行程序會(huì)被以許多個(gè)threads來(lái)執(zhí)行。block:數(shù)個(gè)threads會(huì)被群組成一個(gè)block,同一個(gè)block中的threads可以同步,也可以通過(guò)shared memory通信。grid:多個(gè)blocks則會(huì)再構(gòu)成grid。

網(wǎng)格(Grid)、線程塊(Block)和線程(Thread)的最大數(shù)量

CUDA中可以創(chuàng)建的網(wǎng)格數(shù)量跟GPU的計(jì)算能力有關(guān),可創(chuàng)建的Grid、Block和Thread的最大數(shù)量參看以下表格:在單一維度上,程序的執(zhí)行可以由多達(dá)3*65535*512=100661760(一億)個(gè)線程并行執(zhí)行,這對(duì)在CPU上創(chuàng)建并行線程來(lái)說(shuō)是不可想象的。

線程索引的計(jì)算公式

一個(gè)Grid可以包含多個(gè)Blocks,Blocks的組織方式可以是一維的,二維或者三維的。block包含多個(gè)Threads,這些Threads的組織方式也可以是一維,二維或者三維的。CUDA中每一個(gè)線程都有一個(gè)唯一的標(biāo)識(shí)ID—ThreadIdx,這個(gè)ID隨著Grid和Block的劃分方式的不同而變化,這里給出Grid和Block不同劃分方式下線程索引ID的計(jì)算公式。1、 grid劃分成1維,block劃分為1維    int threadId = blockIdx.x *blockDim.x + threadIdx.x;        2、 grid劃分成1維,block劃分為2維      int threadId = blockIdx.x * blockDim.x * blockDim.y+ threadIdx.y * blockDim.x + threadIdx.x;      3、 grid劃分成1維,block劃分為3維      int threadId = blockIdx.x * blockDim.x * blockDim.y * blockDim.z                         + threadIdx.z * blockDim.y * blockDim.x                         + threadIdx.y * blockDim.x + threadIdx.x;    4、 grid劃分成2維,block劃分為1維      int blockId = blockIdx.y * gridDim.x + blockIdx.x;      int threadId = blockId * blockDim.x + threadIdx.x;       5、 grid劃分成2維,block劃分為2維     int blockId = blockIdx.x + blockIdx.y * gridDim.x;      int threadId = blockId * (blockDim.x * blockDim.y)                         + (threadIdx.y * blockDim.x) + threadIdx.x;        6、 grid劃分成2維,block劃分為3維    int blockId = blockIdx.x + blockIdx.y * gridDim.x;      int threadId = blockId * (blockDim.x * blockDim.y * blockDim.z)                         + (threadIdx.z * (blockDim.x * blockDim.y))                         + (threadIdx.y * blockDim.x) + threadIdx.x;       7、 grid劃分成3維,block劃分為1維     int blockId = blockIdx.x + blockIdx.y * gridDim.x                       + gridDim.x * gridDim.y * blockIdx.z;      int threadId = blockId * blockDim.x + threadIdx.x;       8、 grid劃分成3維,block劃分為2維      int blockId = blockIdx.x + blockIdx.y * gridDim.x                       + gridDim.x * gridDim.y * blockIdx.z;      int threadId = blockId * (blockDim.x * blockDim.y)                         + (threadIdx.y * blockDim.x) + threadIdx.x;       9、 grid劃分成3維,block劃分為3維    int blockId = blockIdx.x + blockIdx.y * gridDim.x                       + gridDim.x * gridDim.y * blockIdx.z;      int threadId = blockId * (blockDim.x * blockDim.y * blockDim.z)                         + (threadIdx.z * (blockDim.x * blockDim.y))                         + (threadIdx.y * blockDim.x) + threadIdx.x;     


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 电影一级毛片 | 91成人久久 | 久久av免费| 日韩视频在线观看免费视频 | 中文字幕在线免费看 | 久久久久久69 | 国产午夜精品一区二区三区四区 | 国产精品久久久久久久四虎电影 | 毛片一级网站 | 第四色成人网 | 免费专区 - 91爱爱 | 成人毛片视频在线观看 | 欧美视频在线观看一区 | 天天操很很操 | 欧美a∨一区二区三区久久黄 | 国产精品福利一区 | 国产羞羞网站 | 国产一区日韩精品 | 羞羞视频免费观看入口 | 免费久久久久久 | 欧美第1页| av在线免费观看不卡 | 久久国产精 | 国产一级毛片视频在线! | 91午夜视频| 国产99视频精品免视看9 | 免费在线观看成年人视频 | 日韩视频精品一区 | 三级xxxx| 亚洲小视频网站 | 国产精品v片在线观看不卡 成人一区二区三区在线 | 欧美日韩在线视频一区 | 成年人高清视频在线观看 | 国产一区免费 | 欧美日韩亚洲一区二区三区 | 欧美无限资源 | 爱唯侦察 国产合集 亚洲 | 男女牲高爱潮免费视频男女 | 国产交换3p国产精品 | 亚洲免费视 | 韩国草草影院 |