多维CUDA块网格的动因
我的问题基本上与刚才提出的相同。我特别想提及这一最后答复: 我认为这里面有两个不同的问题 线程:多维CUDA块网格的动因,cuda,Cuda,我的问题基本上与刚才提出的相同。我特别想提及这一最后答复: 我认为这里面有两个不同的问题 线程: 使用输入或输出数据到线程的2D或3D映射是否有性能优势?答案是“绝对”的 您和其他人描述的原因。如果数据或计算结果 空间局部性,那么将工作分配给 扭曲 使用CUDA的多维网格执行此工作任务是否有性能优势?在这种情况下,我不这么认为,因为 您可以自己在列表顶部进行索引计算 内核这会烧掉一些算术指令,但应该是这样 与内核启动开销相比可以忽略不计 这就是为什么我认为多维网格是作为 程序员的方便,而不是一种
第三种选择是,这只不过是CUDA早期版本的保留,在早期版本中,它是硬件索引限制的一种解决方法。使用多维网格肯定有好处。不同的条目(tid、ctaid)是只读变量,作为特殊寄存器可见。看 PTX包括许多预定义的只读变量,这些变量作为特殊寄存器可见,并通过mov或cvt指令访问。 特别登记册包括:
%tid
%ntid
%laneid
%warpid
%nwarpid
%ctaid
%nctaid
如果这些数据中的一部分可以在无需进一步处理的情况下使用,那么您不仅可以获得算术指令(可能在多维数据的每个索引步骤中),而且更重要的是,您正在保存寄存器,这在任何硬件上都是一种非常稀缺的资源