多GPU并行加速问题
xmzzp 2014-04-29 04:21:09 用4个GPU计算的时间是1个GPU计算时间的4倍左右,每个GPU的计算量设置的都是相同的,所以不明白是我程序调用的问题还是多个GPU计算时本身就是串行的?
如果多GPU可以并行计算的话,该怎么调用呢?
我调用的方式如下:
for (int i=0;i<GPU_N;i++)
{
CUDA_SAFE_CALL(cudaSetDevice(i));
CUDA_SAFE_CALL(cudaStreamCreate(&plan[i].stream));
CUDA_SAFE_CALL(cudaMalloc((void**)&plan[i].d_O,sizeof(float)*(sizeMat)));
CUDA_SAFE_CALL(cudaMallocHost((void**)&plan[i].h,sizeof(float)*(sizeMat)));
}
for(int i=0;i<GPU_N;i++)
{
CUDA_SAFE_CALL(cudaSetDevice(i));
holo<<<grid,threads,0, plan[i].stream>>>(plan[i].d_O);
CUDA_SAFE_CALL(cudaThreadSynchronize());
CUDA_SAFE_CALL(cudaMemcpyAsync(plan[i].h,plan[i].d_O,sizeof(float)*sizeMat,cudaMemcpyDeviceToHost));
}