多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));
}
...全文
1365 66 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
66 条回复
切换为时间正序
请发表友善的回复…
发表回复
stellarman 2014-08-30
  • 打赏
  • 举报
回复
数据完全并行开了没有.从你贴的code很难发现问题,你应该运行10次,看看第三次以后的时间。 cudaThreadSynchronize() 我觉得应该用cudaDeviceSynchronize()。
ycth8 2014-08-20
  • 打赏
  • 举报
回复
可以并行,需要设置不同的线程,每个线程设置一个GPU,线程并行,多个GPU自然也并行处理了。
chishilaoda1 2014-06-21
  • 打赏
  • 举报
回复
应该是切换关系吧.
sinat_16745593 2014-06-21
  • 打赏
  • 举报
回复
好高深。。没看懂
Online-7年 2014-06-21
  • 打赏
  • 举报
回复
cudaThreadSynchronize()这个函数是线程同步,等待核函数结束,cpu才进行下一个语句,也就是说cpu在分配任务的时候就已经是分配一个,等待一个运算结束,再分配第二个。这样当然和只用一个GPU时间一样了
qq_16709685 2014-06-20
  • 打赏
  • 举报
回复
非常不错 呵呵
yool123 2014-06-20
  • 打赏
  • 举报
回复
学习了,以后会常来
wudayingxiaoxue 2014-06-19
  • 打赏
  • 举报
回复
新手学习.
qq_16689805 2014-06-19
  • 打赏
  • 举报
回复
新手学习.................
晓旭sky 2014-06-19
  • 打赏
  • 举报
回复
啊啊啊啊 学习中
zaq110022 2014-06-18
  • 打赏
  • 举报
回复
这个很难呢,我也不会,求解
baidu_16640649 2014-06-18
  • 打赏
  • 举报
回复
哦 原来是这样
leejunokokok 2014-06-18
  • 打赏
  • 举报
回复
Nancy_boy 2014-06-18
  • 打赏
  • 举报
回复
新手,从中学习了不少
qq_15222805 2014-06-18
  • 打赏
  • 举报
回复
新手,从中学习了不少
qq_16655289 2014-06-18
  • 打赏
  • 举报
回复
学习中,刚接触ANDROID
austwl 2014-06-17
  • 打赏
  • 举报
回复
作为一名新手,请问有没有中文书籍可以介绍下如何使用CUDA,以及利用库函数进行相应计算?谢谢
hongjun3 2014-06-17
  • 打赏
  • 举报
回复
要用它的编程接口建几个线程
austwl 2014-06-17
  • 打赏
  • 举报
回复
这些调用函数怎么学的啊?谢谢
baidu_16632839 2014-06-17
  • 打赏
  • 举报
回复
同问中·····
加载更多回复(20)

589

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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