簡體   English   中英

CUDA塊的最大數量?

[英]Maximum number of CUDA blocks?

我想在CUDA中實現一個算法,該算法接受大小為N的輸入,並使用N ^ 2個線程來執行它(這是特定算法單詞的方式)。 我被要求制作一個程序,最多可以處理N = 2 ^ 10。 我認為,對於我的系統,給定的線程塊最多可以具有512個線程,但是對於N = 2 ^ 10,擁有N ^ 2線程將意味着擁有N ^ 2/1 512 = 2 ^ 20/512塊。 我在此鏈接( http://www.ce.jhu.edu/dalrymple/classes/602/Class10.pdf )上看到,您的塊數“可以高達65,535(或更大的2 ^ 31-1) ”。

我的問題是:

1)如何找到實際的最大塊數? 我不確定引號^^表示“ 65,535(或更大的2 ^ 31-1)”的含義,因為它們顯然是完全不同的數字。

2)是否可以運行需要2 ^ 20/512個線程的算法?

3)如果我需要的線程數(2 ^ 20/512)大於CUDA可以提供的線程數,會發生什么? 它只是填充所有可用線程,然后在完成計算后將這些線程重新分配給其他等待的任務嗎?

4)如果要在每個塊中使用最大線程數,是否應該將線程數設置為512,例如<<<number, 512>>> ,還是使用dim3dim3

如果您能對這些^^問題中的任何一個提供任何見解,我們將不勝感激。

  1. 如何找到實際的最大塊數? 我不確定引號^^表示“ 65,535(或更大的2 ^ 31-1)”的含義,因為它們顯然是完全不同的數字。

閱讀相關文檔 ,或構建並運行devicequery實用程序。 但無論哪種情況,限制都遠大於2048(2 ^ 20/512等於2048)。 還請注意,當前所有受支持的硬件上的塊大小限制為每個塊1024個線程,而不是512個線程,因此您可能需要少至1024個塊。

  1. 是否可以運行需要2 ^ 20/512個線程的算法?

  1. 如果我需要的線程數量大於CUDA可以提供的數量,那會發生什么?

沒有。 發出運行時錯誤。

  1. 它只是填充所有可用線程,然后在完成計算后將這些線程重新分配給其他等待的任務嗎?

否。您必須自己明確實現這種方案。

  1. 如果要在每個塊中使用最大線程數,是否應該將線程數設置為512,例如<<<number, 512>>> ,還是使用dim3值有好處?

沒有區別。

暫無
暫無

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

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