c++ - 是否可以在多个 gpus 上运行 cuda 内核

标签 c++ c cuda multiple-gpu

这是一个相当简单的问题,但谷歌搜索似乎没有答案,所以。

我想知道的是,如果我有两 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 P2Psimple multi-gpu

关于c++ - 是否可以在多个 gpus 上运行 cuda 内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4346909/

相关文章:

C++搜索MAX的 vector ,并从第二个 vector 中获得相同的位置

c - GLib-GObject-创建 gobject 时发出警告

c++ - 两个补数的减法

c++ - 尝试 x 秒,然后离开?

c++ - 生成数独谜题所需的时间

c++ - 推力结构 vector 的迭代器

cuda - 为什么我的 CUDA warp shuffle sum 在一个洗牌步骤中使用了错误的偏移量?

c - C中结构中的指针指向的自由数组

c - 从 C api 访问用户数据中的 Lua 变量

c++ - 如何在cuda中获取cutil64D.lib文件