Cuda 螺纹及;块配置要求
我正在开发一个程序,在这个程序中我调用一个输入随机二进制数的函数。 总数量将在运行时提供,例如:1000或10,00000。。 在生成随机数之后,我需要使用计数器计算0的总数和1的总数。 我有以下疑问:Cuda 螺纹及;块配置要求,cuda,Cuda,我正在开发一个程序,在这个程序中我调用一个输入随机二进制数的函数。 总数量将在运行时提供,例如:1000或10,00000。。 在生成随机数之后,我需要使用计数器计算0的总数和1的总数。 我有以下疑问: 我应该分配多少线程、块和网格 我需要2D线程,还是只能使用1D线程 函数线程将在其中执行什么操作,我觉得它应该检查特定值是1还是0这听起来正确吗 我应该如何使用扭曲或平铺方法 我猜这可能是一个家庭作业问题,尤其是基于你发布的唯一一个问题 有多少线程/块/网格?这个问题的答案取决于你的线程策略。每
我猜这可能是一个家庭作业问题,尤其是基于你发布的唯一一个问题
如果您可以抽出时间,那么这是一个非常可读的文档,它将向您介绍好的GPU编程所需的基本概念。英伟达网站上也有2小时内可以覆盖的重要材料。此外,它可以用最少的编码工作(在C++中)方便地处理类似的问题,但我猜这超出了您现在尝试的范围。当使用(3)中描述的循环技术时,您可能需要特别注意获得(4)中描述的合并内存访问。1)@robert,我很理解这一部分。我将以一种形成更多扭曲的方式获取线程,并将线程与块相乘,以获得比我输入的值更大的值。2) 实际上我不明白,大约65535*1024*512?3) 对于结果的中间保存,_syncthreads()可以吗?但还是不懂,用线循环??我很困惑,我只想使用1D,那么我应该如何处理这个问题;我应该为1D中的256个线程配置blockDim(256,1)的blocksize吗?我读过这本书,但没有找到解决这个问题的方法,…请帮助我..65535*1024是1D网格中的最大线程数,至少对于某些GPU是这样。如果每个线程包含一个循环,例如while(not_done){process other input element},并且如果您的循环最多可以处理512个点,那么每个线程可以处理512个点和512个点