有没有办法通过编程知道CUDA代码在哪个GPU上运行?

有没有办法通过编程知道CUDA代码在哪个GPU上运行?,cuda,gpu,Cuda,Gpu,我想知道我的CUDA内核将在哪个GPU上运行,这样我就可以通过编程来决定要使用的最佳块大小,以便最大限度地提高任何算法的GPU实现性能。是,示例代码演示了如何查询设备以获取信息,例如可用于优化内核启动配置的SMs数量 此外,CUDA还提供了一个示例,演示如何构造能够产生最高占用率的线程块大小。还有一个问题 如果您有3个GPU设备,并且您没有在代码中使用cudaSetDevice()API来选择特定的GPU,那么CUDA将在CUDA枚举的第一个GPU上运行您的代码,该GPU与deviceQuery

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

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

此外,CUDA还提供了一个示例,演示如何构造能够产生最高占用率的线程块大小。还有一个问题


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

Yes,看看
deviceQuery
示例代码。还有一些API可以帮您考虑块大小,您可能根本不需要做您想做的事情。您能告诉我哪一个是API吗?事实上,我对CUDA编程非常陌生,对很多事情都不太了解。让我们假设我有3个GPU设备,我的CPU与之相连,我实际上想通过编程知道默认情况下我的代码将在哪个GPU上运行。或者,如果我想根据输入的大小选择在哪个GPU上运行。如果能给我一些示例代码,让我理解同样的内容,这会有所帮助。