如果多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
#5
学习中……&
#6
学习中。。。
#7
hao a a a a a
#8
看不懂的人请问怎么破
#9
求解答```````````````````````````````````
#10
学习了,以后会常来
#11
#12
黑给力啊,顶了啊
#13
讲的很好,学习中哦
#14
#15
学习了,以后会常来
#16
#17
xiexielouzhu
#18
学习中,刚接触ANDROID
#19
#20
长见识,努力学习
#21
长见识,努力学习
#22
看不懂的人请问怎么破。。。。
#23
#24
#25
共同学习
#26
求解答啊啊啊
#27
谢谢1楼,指出了我的问题
#28
#29
这些调用函数怎么学的啊?谢谢
#30
#31
作为一名新手,请问有没有中文书籍可以介绍下如何使用CUDA,以及利用库函数进行相应计算?谢谢
#32
#33
#34
#35
同问中·····
#36
#37
要用它的编程接口建几个线程
#38
哦 原来是这样
#39
#40
这个很难呢,我也不会,求解
#41
#42
学习中,刚接触ANDROID
#43
#44
#45
新手,从中学习了不少
#46
新手,从中学习了不少
#47
#48
啊啊啊啊 学习中
#49
新手学习.................
#50
新手学习.
#1
cudaThreadSynchronize()这个函数是线程同步,等待核函数结束,cpu才进行下一个语句,也就是说cpu在分配任务的时候就已经是分配一个,等待一个运算结束,再分配第二个。这样当然和只用一个GPU时间一样了。
#2
谢谢1楼,指出了我的问题
#3
同问。。。。。。。。。。
#4
#5
学习中……&
#6
学习中。。。
#7
hao a a a a a
#8
看不懂的人请问怎么破
#9
求解答```````````````````````````````````
#10
学习了,以后会常来
#11
#12
黑给力啊,顶了啊
#13
讲的很好,学习中哦
#14
#15
学习了,以后会常来
#16
#17
xiexielouzhu
#18
学习中,刚接触ANDROID
#19
#20
长见识,努力学习
#21
长见识,努力学习
#22
看不懂的人请问怎么破。。。。
#23
#24
#25
共同学习
#26
求解答啊啊啊
#27
谢谢1楼,指出了我的问题
#28
#29
这些调用函数怎么学的啊?谢谢
#30
#31
作为一名新手,请问有没有中文书籍可以介绍下如何使用CUDA,以及利用库函数进行相应计算?谢谢
#32
#33
#34
#35
同问中·····
#36
#37
要用它的编程接口建几个线程
#38
哦 原来是这样
#39
#40
这个很难呢,我也不会,求解
#41
#42
学习中,刚接触ANDROID
#43
#44
#45
新手,从中学习了不少
#46
新手,从中学习了不少
#47
#48
啊啊啊啊 学习中
#49
新手学习.................
#50
新手学习.