一个程序采用两个cuda计算,总是一个cuda线完成后另一个在计算,如何实现并行

bitwjf 2012-08-20 11:10:32
最近参考CUDA事例程序中的simpleMultiGPU程序把握的程序采用两个显卡来计算,但是总是一个显卡线运行完再运行另一个显卡,两个显卡并不是同时运行的,所以效率和一个显卡没什么区别,如何让两个显卡同时运行?
事例程序的simpleMultiGPU大概代码如下:
//Copy data to GPU, launch the kernel and copy data back. All asynchronously
for(i = 0; i < GPU_N; i++)
{
//Set device
checkCudaErrors( cudaSetDevice(i) );

//Copy input data from CPU
checkCudaErrors( cudaMemcpyAsync(plan[i].d_Data, plan[i].h_Data, plan[i].dataN * sizeof(float), cudaMemcpyHostToDevice, plan[i].stream) );

//Perform GPU computations
launch_reduceKernel(plan[i].d_Sum, plan[i].d_Data, plan[i].dataN, BLOCK_N, THREAD_N, plan[i].stream);
getLastCudaError("reduceKernel() execution failed.\n");

//Read back GPU results
checkCudaErrors( cudaMemcpyAsync(plan[i].h_Sum_from_device, plan[i].d_Sum, ACCUM_N * sizeof(float), cudaMemcpyDeviceToHost, plan[i].stream) );
}
他是采用的for循环,我是不是应该开来两个线程来处理?
...全文
139 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

231

社区成员

发帖
与我相关
我的任务
社区描述
CUDA on Windows XP
社区管理员
  • CUDA on Windows XP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧