多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.
中阅读其他一些限制
我想知道是否有任何 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.
中阅读其他一些限制