【问题标题】:Can you programmatically know the max blocks and threads per block in a GPU?你能以编程方式知道 GPU 中每个块的最大块数和线程数吗?
【发布时间】:2021-08-09 02:57:36
【问题描述】:

我正在编写一个可能会在许多不同 GPU 上运行的 CUDA 程序。我想知道 CUDA 是否提供某种方式从代码中读取(运行时或编译时)当前 GPU 的功能,这意味着单个块可以包含的线程数以及最大块数,所以我可以定制启动内核以优化使用所有资源。

我知道这听起来像是一个愚蠢的问题,但我在网上找不到任何答案。

如果不可能的话,还有一个额外的问题:我看到 here 有人说他们知道 Jetson TX1 有

2 个 SM - 每个有 128 个内核。 我读到每个 SM(我知道有 2 个)最多可以有 16 个活动块和 64 个活动扭曲(或 2048 个活动线程)。

如何找到给定 GPU 的此信息?

【问题讨论】:

  • 恕我直言,我会说不,因为所有不同的图形处理器和显示器之间没有标准。如有疑问,请查看目标 GPU 的数据表或程序员指南。
  • @ThomasMatthews:你的观点明显是错误的。自第一个 CUDA 测试版以来,已经有 API 向程序员公开了这些确切的硬件特性。
  • 你能解释一下为什么我们店的显示器,使用I2C通信,不符合CUDA标准吗?我们的显示器有自己的内存和“显示列表”。我们必须发送命令,而不是直接访问寄存器和内存。是的,这是在嵌入式系统上。
  • 整个问题是关于在 CUDA 中获取 NVIDIA GPU 的硬件特性,这适用于 NVIDIA 自 2007 年左右以来生产的所有 GPU。您的嵌入式系统是否使用 CUDA 兼容的 GPU?我猜不是……

标签: c++ cuda gpu nvidia


【解决方案1】:

我猜cudaGetDeviceProperties 似乎就是您要找的东西。

【讨论】:

    猜你喜欢
    • 2014-04-26
    • 2013-07-13
    • 2011-07-01
    • 2015-12-27
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 2018-07-31
    相关资源
    最近更新 更多