[英]CUDA threads and blocks explanation
我在這里一直在關注教程http://www.nvidia.com/docs/IO/116711/sc11-cuda-c-basics.pdf
嘗試自學基本的GPU編程。 我仍然不太了解塊和線程的拓撲。 在第42頁上,代碼定義尺寸數據如下:
#define N (2048*2048)
#define THREADS_PER_BLOCK 512
本教程是否在做假設? 我目前正在使用配備Nvidia 520m GPU的筆記本電腦。 使用cudaDeviceProp結構,我能夠確定我能夠在每個塊上運行1024個線程。 2048x2048確切地量化了什么? 多少塊? 我怎么知道那是正確的?
N
(2048 * 2048)數量是數據集的整體大小。 該問題是向量相加問題,因此要相加的向量的總大小為N
元素。
每個塊的線程數已在512定義。
塊的數量可以從內核啟動中確定:
add<<<N/THREADS_PER_BLOCK,THREADS_PER_BLOCK>>>(d_a, d_b, d_c);
^ ^
number of blocks number of threads in each block
因此,正在啟動的網格中的塊總數為2048 * 2048/512 = 8192
這些特定的參數(每塊512個線程,總共8192個塊)應該與任何當前可用的CUDA GPU兼容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.