- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我明白了 blockDim
是什么,但我对 gridDim 有问题。 Blockdim
给出了 block 的大小,但是什么是gridDim
?在互联网上,它说 gridDim.x
给出了 x 坐标中的 block 数。
我如何知道blockDim.x * gridDim.x
给出了什么?
我如何知道 x 行中有多少个 gridDim.x
值?
例如,考虑下面的代码:
int tid = threadIdx.x + blockIdx.x * blockDim.x;
double temp = a[tid];
tid += blockDim.x * gridDim.x;
while (tid < count)
{
if (a[tid] > temp)
{
temp = a[tid];
}
tid += blockDim.x * gridDim.x;
}
我知道 tid
以 0 开头。代码中有 tid+=blockDim.x * gridDim.x
。执行此操作后,现在的 tid
是什么?
最佳答案
blockDim.x,y,z
给出 block 中的线程数,在特定方向gridDim.x,y,z
给出网格中的 block 数,在特定方向blockDim.x * gridDim.x
给出网格中的线程数(在本例中为 x 方向)block 和网格变量可以是 1、2 或 3 维。处理一维数据时,通常的做法是仅创建一维 block 和网格。
在 CUDA 文档中,这些变量定义为 here
特别是,当 x 维度 (gridDim.x*blockDim.x
) 中的线程总数小于我希望处理的数组的大小时,那么通常的做法是创建一个循环并使线程网格在整个数组中移动。在这种情况下,在处理一次循环迭代后,每个线程必须移动到下一个未处理的位置,该位置由 tid+=blockDim.x*gridDim.x;
给出。正在跳过一维数据数组,一次一个网格宽度。这个主题有时被称为“网格跨步循环”,在 blog article 中进一步讨论。 .
您可能需要考虑采取 introductory CUDA webinars例如,前 4 个单元。如果您想更好地理解这些概念,这 4 个小时是值得的。
关于Cuda gridDim 和 blockDim,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16619274/
我明白了 blockDim 是什么,但我对 gridDim 有问题。 Blockdim给出了 block 的大小,但是什么是gridDim?在互联网上,它说 gridDim.x 给出了 x 坐标中的
这是一个概念性问题。在 CUDA 中,gridDim、blockDim 和 threadIdx 可以是 1D、2D 或 3D。我想知道他们的2D和3D版本是如何解释的? 更详细地说,CUDA是否将多维
当我在内核调用中传递网格大小和线程数时,这些值是否会始终完全按照我传递的那样放置在 gridDim 和 blockDim 中? 此外,blockIdx 和 threadIdx 是否始终遵守这些限制?
我是 Angular 的新手,我尝试在 costroller 的函数中为 ng-grid 声明 gridOption。 它会导致错误: TypeError: 无法设置未定义的属性 'gridDim'
更新#1:在我评论过的修复之后,现在我的应用程序启动了,但是除了它的边界框和过滤器按钮和弹出窗口之外,没有渲染网格。然而,我没有从控制台得到任何错误,并且就我可以使用调试器到达的情况而言,我可以看到从
我是 OpenCL 的初学者,试图将一个简单的 CUDA 函数转换为 OpenCL。在 CUDA 函数中,他们使用以下代码段来获取操作索引, int id = (blockIdx.x + blockI
我是一名优秀的程序员,十分优秀!