【发布时间】:2018-12-31 23:31:38
【问题描述】:
我和in this discussion 提出的问题基本相同。特别是我想参考这个最终回复:
我认为这里有两个不同的问题 线程:
使用输入或输出数据到线程的 2D 或 3D 映射是否有性能优势?答案是“绝对” 您和其他人描述的原因。如果数据或计算有 空间局部性,那么分配给线程的工作也应该如此 一条经线。
使用 CUDA 的多维网格来完成这项工作任务是否有性能优势?在这种情况下,我不这么认为,因为 您可以在顶部自己轻松地进行指数计算 核心。这会烧掉一些算术指令,但这应该是 与内核启动开销相比可以忽略不计。
这就是为什么我认为多维网格旨在作为 程序员的便利,而不是提高性能的一种方式。你 绝对需要考虑每个经纱的内存访问模式, 不过。
我想知道这种情况今天是否仍然存在。我想知道为什么需要多维“外部”网格的原因。
我想了解的是,这样做是否有重要目的(例如,从空间局部性中获得实际好处)还是为了方便而存在(例如,在图像处理环境中,是否存在只是为了我们可以让 CUDA 知道特定块正在处理的 x/y “补丁”,以便它可以将其报告给 CUDA Visual Profiler 或其他东西)?
第三种选择是,这只不过是早期版本 CUDA 的保留,它是硬件索引限制的解决方法。
【问题讨论】:
标签: cuda