这是一个相当简单的问题,但谷歌搜索似乎没有答案,所以。
我想知道的是,如果我有两 block 能够运行 cuda 的 gpu 卡(相同),我的内核是否可以跨越这些卡?或者它绑定(bind)到一张卡或另一张? IE。 cuda 是提供了整套可用的 gpu 内核,还是仅提供了运行它的卡上的内核。
如果是这样,为了实现它,我需要了解什么特别的东西吗?除了 cuda sdk 之外,还有什么值得了解的例子吗?
目标语言当然是C/C++。
最佳答案
单个 CUDA 内核启动绑定(bind)到单个 GPU。为了使用多个 GPU,需要启动多个内核。
cuda 设备运行时 API focuses on whichever device is selected .任何给定的内核启动都将在最近使用 cudaSetDevice()
选择的任何设备上启动。
cuda 示例中给出了多 GPU 编程的示例 simple multi-gpu with P2P和 simple multi-gpu
关于c++ - 是否可以在多个 gpus 上运行 cuda 内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4346909/