【发布时间】:2020-08-26 21:54:15
【问题描述】:
我想知道在没有实际合作的情况下通过cudaLaunchCooperativeKernelMultiDevice 在多个 GPU 上启动内核与传统循环相比是否有任何优点/缺点:
for loop over device ids
{
cudaSetDevice(id);
kernel<<<..., stream[i]>>>( ... );
}
cudaLaunchCooperativeKernelMultiDevice 的代码肯定比循环少...
【问题讨论】:
-
我想您会发现
cudaLaunchCooperativeKernelMultiDevice最终的源代码行数比您在此处显示的循环要多。此外,在启动多设备内核之前,最好检查所有设备是否支持该功能。这是设备以及您正在运行的操作系统的功能。当您这样做时,您还通过您的源代码进行交流,表明需要它。如果实际上不需要它,那对于可能维护您的工作的人来说是一件令人困惑的事情。