1.CPU多线程调用GPU算法 并没有比单线程调用快,是因为CUDA内部有锁的原因吗?单张显卡内部其实还是顺序调用的?
2.如果使用TELSA或者GTX680显卡,CPU上多线程能有速度提升吗?还是只是速度加快了。
求各位高手,大侠给个回复啊,自己顶一下。
如果CPU上多线程,但只有一块显卡,GPU上是顺序执行的。除非有多个显卡的情况下,每个线程控制一个显卡才能并行执行。
楼主您好,多线程给GPU发布kernel, 需要足够小的kernel + 使用多个流, 才能体验到多个kernel并行的提速的。
如果只用了一个流,那么无论kernel大小,它们将串行执行,您无法感受到并行多个kernel的提速。
以及,无论您是否使用多个流,只要您的kernel启动规模较大,例如<<<10240, 1024>>>这种配置,一次启动就可以占满所有SM了。这时候其他流来的kernel将在等待SM被空闲。您也无法感受到多个kernel的并行的提升。
1.我开辟的是2维矩阵<<<720,576>>> <<<7,7>>> 显卡用的GT430 流处理器只有98个,估计是我一次就给占满了,所以CPU上多线程也没有什么效果了。
2.横扫千军版主说的多个流是什么意思呢?
感谢两位的帮助啊。
流是cuda里的stream概念。
这个涉及了定义,用法,效果,陷阱等各个方面,这里说不开的。
您可以直接阅读手册看看您是否需要它。
但简单的说一句,这个是给GPU发布命令的序列,将多个命令拆分成多个无关的序列,以便能让硬件尽量充分执行。
哦,文档里看到了,研究一下。非常感谢!