繁体   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