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

首頁 > 學院 > 開發設計 > 正文

CUDA軟件架構—網格(Grid)、線程塊(Block)和線程(Thread)的組織關系以及線程索引的計算公式

2019-11-14 09:11:46
字體:
來源:轉載
供稿:網友

網格(Grid)、線程塊(Block)和線程(Thread)的組織關系

CUDA的軟件架構由網格(Grid)、線程塊(Block)和線程(Thread)組成,相當于把GPU上的計算單元分為若干(2~3)個網格,每個網格內包含若干(65535)個線程塊,每個線程塊包含若干(512)個線程,三者的關系如下圖:

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

thread:一個CUDA的并行程序會被以許多個threads來執行。block:數個threads會被群組成一個block,同一個block中的threads可以同步,也可以通過shared memory通信。grid:多個blocks則會再構成grid。

網格(Grid)、線程塊(Block)和線程(Thread)的最大數量

CUDA中可以創建的網格數量跟GPU的計算能力有關,可創建的Grid、Block和Thread的最大數量參看以下表格:在單一維度上,程序的執行可以由多達3*65535*512=100661760(一億)個線程并行執行,這對在CPU上創建并行線程來說是不可想象的。

線程索引的計算公式

一個Grid可以包含多個Blocks,Blocks的組織方式可以是一維的,二維或者三維的。block包含多個Threads,這些Threads的組織方式也可以是一維,二維或者三維的。CUDA中每一個線程都有一個唯一的標識ID—ThreadIdx,這個ID隨著Grid和Block的劃分方式的不同而變化,這里給出Grid和Block不同劃分方式下線程索引ID的計算公式。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;     


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产噜噜噜噜久久久久久久久 | 国产精品久久久久久久久久iiiii | 91性视频 | 亚洲天堂成人在线 | 在线视频 欧美日韩 | 亚洲一区久久 | 国产成人午夜高潮毛片 | 国产成人高潮免费观看精品 | 欧美一级毛片美99毛片 | 国产成人小视频在线观看 | 青青草成人免费视频在线 | 欧产日产国产精品v | 国产精品毛片无码 | 欧美成在人线a免费 | 91午夜视频| 日本网站在线播放 | 欧美一级毛片特黄黄 | 国产精品一区在线看 | 91麻豆精品国产91久久久更新资源速度超快 | www.91在线观看 | 色婷婷一区二区三区 | 91久久久久久亚洲精品禁果 | 欧美日本在线播放 | china对白普通话xxxx | 国产影视 | 青青草成人影视 | 在线成人一区 | 久久久久久久久久性 | 成人短视频在线观看免费 | 国产欧美在线一区二区三区 | 久久久久久久久久久久久久国产 | 亚洲性综合网 | 九九热九九爱 | 黄色大片在线观看 | 亚洲性在线视频 | 欧美三级一级 | 成人福利在线免费观看 | 久久99亚洲精品久久99果 | 国产91一区二区三区 | 男人午夜小视频 | 91短视频在线播放 |