- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只需要澄清一些非常基本的东西 - 大多数计算示例都使用以下内容:
ID = blockIdx.x*blockDim.x+threadIdx.x;
//...然后对数组[ID]进行计算
我的问题是,如果我想在一个块中使用最大线程数(1024),那么我是否真的需要考虑所有( threadIdx.x
、 threadIdx.y
、 threadIdx.z
)来“构建”我的“线程ID”? ) ?
如果是这样,将它散列成单个值的推荐方法是什么?
如果不是这样,为什么有人可以在与图像处理相关的操作中以类似的方式使用它,例如在这篇文章中:
https://stackoverflow.com/questions/11503406/cuda-addressing-a-matrix
怎么样blockidx.x
和 blockidx.y
,他们和threaIdx
是同款鞋吗?在这方面?
最佳答案
通常会创建 2D 或 3D 线程块,因为问题本身会导致数据的 2D 或 3D 解释,而使用 2D 或 3D 线程块处理它可能会使代码更具可读性。但是没有具体的原因为什么它不能用具有适当索引的一维线程块来完成。
创建 2D 或 3D 网格(块的)通常是出于上述原因和/或为了绕过在网格的任何一个维度中的块数量(任何维度中的最大块数为 65535)的预 CC 3.0 设备的限制)。
对于线程块情况,您可以在单个维度的单个块中使用 1024 个线程,因此您无需使用 threadIdx.y
构造 ID 变量。或 threadIdx.z
如果你不想。
如果您有 CC 3.0 之前的设备,并且您的问题在块方面足够大,您可能仍想构建一个 2D 网格。您仍然可以在该网格中使用一维线程块。在这种情况下,可以创建一个唯一的 ID 变量,如:
int idx = threadIdx.x + (((gridDim.x * blockIdx.y) + blockIdx.x)*blockDim.x);
关于CUDA 线程寻址((threadIdx.x, threadIdx.y, threadIdx.z)和 block 寻址(blockidx.x, blockidx.y),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16403972/
我只需要澄清一些非常基本的东西 - 大多数计算示例都使用以下内容: ID = blockIdx.x*blockDim.x+threadIdx.x; //...然后对数组[ID]进行计算 我的问题是,如
这是一个概念性问题。在 CUDA 中,gridDim、blockDim 和 threadIdx 可以是 1D、2D 或 3D。我想知道他们的2D和3D版本是如何解释的? 更详细地说,CUDA是否将多维
我正在进入 C++/Cuda 并在“MortalityTable.obj”中遇到编译错误“未解析的外部符号 threadIdx”。 我创建了一个新的 C++ Cuda Runtime 项目,然后编译并
这个问题在这里已经有了答案: How to get VS 2010 to recognize certain CUDA functions (2 个答案) 关闭 9 年前。 Visual Studi
通过 cub::LaneId() 或类似以下的函数来解释是最简单的: inline __device__ unsigned get_lane_id() { unsigned ret; asm
通过 cub::LaneId() 或类似以下的函数来解释是最简单的: inline __device__ unsigned get_lane_id() { unsigned ret; asm
如何强制 GCC 使用代码中的 threadIdx 行进行编译? 我正在尝试使用 c 包装器编译我的 cuda 应用程序。 为了生成 .so 文件,我运行:nvcc -arch=sm_11 -o li
您好,您正在尝试在 CUDA 上并行化格子玻尔兹曼求解器。不知何故,我在将目标文件链接在一起时遇到错误。对象编译没有错误。 LBMSolver.o: In function >LBMSolver::c
我是 OpenCL 的初学者,试图将一个简单的 CUDA 函数转换为 OpenCL。在 CUDA 函数中,他们使用以下代码段来获取操作索引, int id = (blockIdx.x + blockI
我是一名优秀的程序员,十分优秀!