一块GPU可以同时执行多少个Kernel?这个多任务数量是由流多处理的个数决定的吗?
假设我部署了一个站点,一次用户访问出发一次kernel的执行,那如果瞬间有100个用户并发访问站点,那这100次的kernel执行流程大概是什么?
求大神解惑,或者给个权威链接。
一块GPU可以同时执行多少个Kernel?这个多任务数量是由流多处理的个数决定的吗?
假设我部署了一个站点,一次用户访问出发一次kernel的执行,那如果瞬间有100个用户并发访问站点,那这100次的kernel执行流程大概是什么?
求大神解惑,或者给个权威链接。
LZ您好:
1:fermi之前的GPU只能同时执行一个kernel,Fermi和Kepler可以同时执行多个kernel,需要写在不同的stream里面,以及印象中数量大致是16个还是32个,具体数量请参考官方手册。
以及此数量和SM的个数无直接关系,能并行跑的一般都是较小规模的kernel,假定有两个小的kernel需要并行,那么10个SM的某GPU和8个SM的某GPU或许都可以同时运行,但是1个SM的某GPU可能不行。
因为多个kernel本身就是在不同的stream里面运行的,多个stream之间一般不保证顺序性,所以在SM多的GPU上可能是一起运行的,但是在SM少的GPU上可能变成是串行执行。
2:不懂网站开发,无法回答您的问题。
以及一般地您需要权衡您的计算量和kernel规模以及传递数据的开销,看看是否值得上GPU;以及是否考虑上多个流以便让多个小kernel同时运行。
大致如上,祝您好运~
十分感谢,基本明白了~
一个小kernel是大概是什么量级的?
我现在的kernel是1000个block,每个block128线程
您这个kernel算比较大了,我觉得可能无法实现多grid并行。1000个block足以铺满GPU上所有的SM了。
(以及顺便说一下,每个block里面128个线程可能有点少,或许会影响您的效率)
以及需要说明一下,上文中说的“一个小的kernel”指的是grid规模比较小,不是kernel自身指令数较少。特此说明,以免混淆。
大致如此,供您参考,未尽事宜欢迎继续讨论,欢迎其他版主/网友补充。
祝您好运~
:)多些指导
LZ您好,只能说这么多了,其他都是不明觉厉的内容了。:3_48: