多GPU内核启动

问题描述

我想知道,与传统循环相比,在没有实际合作的情况下通过cudaLaunchCooperativeKernelMultiDevice在多个GPU上启动内核是否有任何优势/缺点:

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

cudaLaunchCooperativeKernelMultiDevice绝对比循环少……

解决方法

一个可能的缺点是,并非所有的多GPU系统都支持多网格协作启动机制,而循环中启动方法受支持。

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

在此暗示的各种限制中,不能在带有WDDM模式下的GPU的系统上运行,也不能在GPU的计算能力不完全相同的系统上运行。您可以在the programming guide中阅读其他一些限制。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...