c++ - CUDA - 如果我选择了太多 block 怎么办?

标签 c++ matrix cuda

我仍然对这些未知大小的矩阵很生气,每个维度可能在 10-20.000 之间变化。

我正在查看 CUDA SDK 并想知道:如果我选择的 block 数太高怎么办?

类似于在 X 和 Y 维度上由 9999 x 9999 block 组成的网格,如果我的硬件具有无法容纳所有这些 block 的 SM,内核是否会出现问题或者性能会崩溃?

我不知道如何在 block /线程中标注可能变化很大的东西。我正在考虑使用我的硬件支持的最大块数,然后使它们内部的线程在所有矩阵中工作,这是正确的方法吗?

最佳答案

线程 block 与核心没有一对一的映射。 block 在可用时被安排到核心,这意味着您可以请求任意数量(可能达到限制)。请求大量 block 只会减慢系统速度,因为它会向内核加载和卸载不执行任何操作的线程 block 。

您可以在运行时指定网格和 block 的尺寸。

编辑:这是文档中对网格和 block 尺寸的限制。

enter image description here

关于c++ - CUDA - 如果我选择了太多 block 怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5476152/

相关文章:

c++ - 获取流程描述

r - 在 r 中查找点积

opencv - 无法在Opencv GPU中检测启用CUDA的设备

c++ - CUDA:巨大的性能影响调用成员函数

c++ - 状态机问题

c++ - 单元格阴影轮廓 : edge mesh writer does not define all desired edges

如果行/列名称出现在列表中,则用 NA 替换矩阵中的值

cuda - 用于 GPU 编程的 DirectCompute 与 OpenCL?

c++ - 锁定设计模式的名称(具有 `internal' 方法的那个)

r - 在 matlab 函数中处理 NaN