我已经有一个基于GPU CUDA C ++的代码,可以在单个NVIDIA显卡上运行良好。是否可以通过添加新的NVIDIA卡并在2张GPU卡(旧的和新的)上运行代码来加速计算?我的意思是我是否需要编写任何新代码以使当前代码可以在两个GPU卡上运行,或者它可以在没有任何新实现的情况下工作?
不,它不能。大多数设备控制代码如内核启动,cudaMalloc,cudaMemcpy都针对一个特定的设备,你需要使用cudaSetDevice来指定你想要执行的设备,例如:
for (i = 0; i < gpuCount; i++)
{
cudaSetDevice(i);
cudaMemcpy(...)
some_kernel_func<<...>>> (...)
}