多GPU内核启动

Multi-gpu kernel launch

我想知道是否有任何 advantages/drawbacks 在没有实际合作发生时通过 cudaLaunchCooperativeKernelMultiDevice 在多个 GPU 上启动内核与传统循环相比:

for loop over device ids
{
    cudaSetDevice(id);
    kernel<<<..., stream[i]>>>( ... );
}

cudaLaunchCooperativeKernelMultiDevice 绝对比循环少代码...

一个可能的缺点是并非所有 multi-GPU 系统都支持多网格协同启动机制,而 launch-in-a-loop 方法是。

因此,通过使用 cudaLaunchCooperativeKernelMultiDevice,您可以将代码可以 运行 正确设置为 cudaDevAttrCooperativeMultiDeviceLaunch 属性 设置的系统的占用空间限制在系统范围内。

在这隐含的各种限制中,不能 运行 在具有 WDDM 模式的 GPU 的系统上,并且不能 运行 在 GPU 不完全相同的系统上计算能力方面。您可以在 the programming guide.

中阅读其他一些限制