簡體   English   中英

cuda中每個塊一個線程

[英]one thread per block in cuda

如果我有一個2D向量序列(或流),並且想為每個2D向量使用一個線程,我可以為每個向量分配一個塊,為每個塊分配一個線程嗎? 我必須先將其轉換為一維數組嗎? 還是唯一的線程可以通過blockIdx.x和blockIdx.y訪問向量元素?

內核啟動參數是什么?

假設vsize = 2D向量的數量(我想將其用作塊數)

這是正確的嗎:

mykernel<<vsize,1>>()

每個向量的計算都是獨立的。 我的設備計算能力是2.1

是的,您可以使用CUDA在每個塊中啟動一個線程。 通常,這不是您如何從計算機中獲得性能的方法,因為當一個線程正在運行時,它將使約97%的執行資源閑置。

如果要為每個塊啟動一個線程,這是正確的語法:

mykernel<<<gridsize, 1>>>(...);

其中gridsize是您要啟動的每個網格的塊數。 每塊使用一個線程通常被用來向新程序員介紹CUDA,但通常不應用於面向性能的代碼。

在上述情況下,每個塊都將使用單個線程啟動,並且該線程將具有全為零的線程索引( threadIdx.xthreadIdx.ythreadIdx.z )。 塊索引( blockIdx.x等)將由您的gridsize變量確定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM