【问题标题】:Is there a way to know programmatically on which GPU our CUDA code is running?有没有办法以编程方式知道我们的 CUDA 代码在哪个 GPU 上运行?
【发布时间】:2018-10-31 15:47:30
【问题描述】:

我想知道我的 CUDA 内核将在哪个 GPU 上运行,以便我可以通过编程方式决定要使用的最佳块大小,从而最大限度地提高任何算法的 GPU 实现的性能。

【问题讨论】:

  • 是的,看deviceQuery示例代码。
  • 还有一些 API 可以为您考虑块大小您可能根本不需要做您想做的事情。
  • 你能告诉我那个API是什么吗?我实际上对 CUDA 编程很陌生,所以对很多事情一无所知。

标签: cuda gpu


【解决方案1】:

是的,deviceQuery 示例代码演示了如何查询设备以获取可用于优化内核启动配置的 SM 数量等信息。

此外,CUDA 提供了一个occupancy API,它演示了如何构造可以产生最高占用率的线程块大小。还有一个sample code

如果您有 3 个 GPU 设备,并且您没有在代码中使用 cudaSetDevice() API 来选择特定的 GPU,那么 CUDA 将在 CUDA 枚举的第一个 GPU 上运行您的代码,这是相同的作为deviceQuery 示例代码显示的第一个GPU。

【讨论】:

  • 假设我的 CPU 连接到 3 个 GPU 设备,我实际上想以编程方式知道我的代码默认运行在哪个 GPU 上。或者在我想根据输入的大小选择在哪个 GPU 上运行的情况下。如果给我一些示例代码来理解相同的内容会有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
  • 2010-11-10
  • 2011-06-25
  • 2023-04-04
  • 1970-01-01
  • 2011-09-12
相关资源
最近更新 更多