多GPU并行加速问题

时间:2022-06-14 05:55:17
用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));
        }

66 个解决方案

#1


cudaThreadSynchronize()这个函数是线程同步,等待核函数结束,cpu才进行下一个语句,也就是说cpu在分配任务的时候就已经是分配一个,等待一个运算结束,再分配第二个。这样当然和只用一个GPU时间一样了。

#2


谢谢1楼,指出了我的问题

#3


同问。。。。。。。。。。

#4


该回复于2014-06-14 13:53:22被管理员删除

#5


学习中……&    

#6


学习中。。。

#7


hao a  a  a a a

#8


看不懂的人请问怎么破

#9


求解答```````````````````````````````````

#10


学习了,以后会常来

#11


该回复于2014-06-16 09:22:46被管理员删除

#12


黑给力啊,顶了啊

#13


讲的很好,学习中哦

#14


该回复于2014-06-16 09:25:34被管理员删除

#15


学习了,以后会常来

#16


该回复于2014-06-16 13:05:07被管理员删除

#17


xiexielouzhu 

#18


学习中,刚接触ANDROID

#19


该回复于2014-06-16 16:56:50被管理员删除

#20


长见识,努力学习

#21


长见识,努力学习

#22


看不懂的人请问怎么破。。。。

#23


该回复于2014-06-16 17:45:20被管理员删除

#24


该回复于2014-06-16 17:48:02被管理员删除

#25


共同学习 多GPU并行加速问题

#26


求解答啊啊啊

#27


谢谢1楼,指出了我的问题

#28


该回复于2014-06-17 10:55:23被管理员删除

#29


这些调用函数怎么学的啊?谢谢

#30


该回复于2014-06-17 10:56:29被管理员删除

#31


作为一名新手,请问有没有中文书籍可以介绍下如何使用CUDA,以及利用库函数进行相应计算?谢谢

#32


该回复于2014-06-17 15:15:38被管理员删除

#33


该回复于2014-06-18 09:30:59被管理员删除

#34


该回复于2014-06-18 09:30:59被管理员删除

#35


同问中·····

#36


该回复于2014-06-18 09:10:39被管理员删除

#37


要用它的编程接口建几个线程

#38


哦  原来是这样

#39


该回复于2014-06-18 11:08:08被管理员删除

#40


这个很难呢,我也不会,求解

#41


该回复于2014-06-18 16:30:09被管理员删除

#42


学习中,刚接触ANDROID

#43


该回复于2014-06-18 17:35:47被管理员删除

#44


该回复于2014-06-18 17:37:02被管理员删除

#45


新手,从中学习了不少

#46


新手,从中学习了不少

#47


多GPU并行加速问题

#48


                  啊啊啊啊                学习中

#49


新手学习................. 

#50


新手学习. 多GPU并行加速问题

#1


cudaThreadSynchronize()这个函数是线程同步,等待核函数结束,cpu才进行下一个语句,也就是说cpu在分配任务的时候就已经是分配一个,等待一个运算结束,再分配第二个。这样当然和只用一个GPU时间一样了。

#2


谢谢1楼,指出了我的问题

#3


同问。。。。。。。。。。

#4


该回复于2014-06-14 13:53:22被管理员删除

#5


学习中……&    

#6


学习中。。。

#7


hao a  a  a a a

#8


看不懂的人请问怎么破

#9


求解答```````````````````````````````````

#10


学习了,以后会常来

#11


该回复于2014-06-16 09:22:46被管理员删除

#12


黑给力啊,顶了啊

#13


讲的很好,学习中哦

#14


该回复于2014-06-16 09:25:34被管理员删除

#15


学习了,以后会常来

#16


该回复于2014-06-16 13:05:07被管理员删除

#17


xiexielouzhu 

#18


学习中,刚接触ANDROID

#19


该回复于2014-06-16 16:56:50被管理员删除

#20


长见识,努力学习

#21


长见识,努力学习

#22


看不懂的人请问怎么破。。。。

#23


该回复于2014-06-16 17:45:20被管理员删除

#24


该回复于2014-06-16 17:48:02被管理员删除

#25


共同学习 多GPU并行加速问题

#26


求解答啊啊啊

#27


谢谢1楼,指出了我的问题

#28


该回复于2014-06-17 10:55:23被管理员删除

#29


这些调用函数怎么学的啊?谢谢

#30


该回复于2014-06-17 10:56:29被管理员删除

#31


作为一名新手,请问有没有中文书籍可以介绍下如何使用CUDA,以及利用库函数进行相应计算?谢谢

#32


该回复于2014-06-17 15:15:38被管理员删除

#33


该回复于2014-06-18 09:30:59被管理员删除

#34


该回复于2014-06-18 09:30:59被管理员删除

#35


同问中·····

#36


该回复于2014-06-18 09:10:39被管理员删除

#37


要用它的编程接口建几个线程

#38


哦  原来是这样

#39


该回复于2014-06-18 11:08:08被管理员删除

#40


这个很难呢,我也不会,求解

#41


该回复于2014-06-18 16:30:09被管理员删除

#42


学习中,刚接触ANDROID

#43


该回复于2014-06-18 17:35:47被管理员删除

#44


该回复于2014-06-18 17:37:02被管理员删除

#45


新手,从中学习了不少

#46


新手,从中学习了不少

#47


多GPU并行加速问题

#48


                  啊啊啊啊                学习中

#49


新手学习................. 

#50


新手学习. 多GPU并行加速问题