刚接触cuda,有个问题,cuda可以多任务执行吗?就是比如说某些线程在做矩阵乘法,一些线程在做矩阵加法
肯定不能的!
[
您这样说是不负责任了…
无论是从1.x开始就有了多context来实现任务并行, 或者是2.x开始有的同一个context内的通过多个流来进行的多任务并行, 都是可以的.
SDK中的例子可以试验:
如果您是1.x的卡: 您可以并行运行oceanFFT的那个例子+particles的那个例子. 或者您还可以使用driver api在您的一个process里面创建两个context, 看看它们是否可以独立运行kernel而不干扰. (当然, 1.x无法实现真正的并行)
如果您是2.x的卡: 您还可以运行concurrentKernels的例子.
[
这里我理解楼主的意思是,他想在一个kernel 中执行多个任务。
不过 悠闲的小猫 你的想法是一个kernel中执行呢还是多个kernel中执行?cuda中一次只能发送一个kernel函数,何来同时执行不同的任务?
[
无论是通过driver api的Launch/LaunchGrid等, 还是通过runtime api的<<<>>>形式的最后一个的可选的参数, 我们都是可以发送多个kernel给GPU的, 然后一并等它们结束.