多GPU内核启动

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

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

cudaLaunchCooperativeKernelMultiDevice绝对比循环少……

iCMS 回答:多GPU内核启动

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

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

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

本文链接:https://www.f2er.com/1673887.html

大家都在问