流中的计算如何映射到硬件

看书上说,通过stream可以实现多个kernel的并发执行,流可以被认为是一个工作队列。我的问题是:在kepler架构下,流和SMX之间有什么样的联系?假设有3个流,流1,流2,流3,每个流中的kernel有都是有4个block,计算卡有13个SMX,不同流中的block和SMX是怎么映射的呢?小弟在此先谢谢了!

流与SMX之间并无一定的对应关系,一个是硬件概念一个是逻辑概念。同一个流可能会运行在多个SMX上,一个SMX上也肯能运行多个流,具体哪个SMX运行哪个流不一定看硬件的运行时的空闲情况。固定的是一个block一定会运行在同一个SMX上。运行过程中不会迁移。

LZ您好,stream里面的kernel在执行的时候是被发射到SMX上执行的,但是stream和SMX之间似乎没有直接的联系。

按照您的例子,每个流流里面的kernel是如何发射到各个SMX上,这个应该取决于硬件的调度,但是调度原则似乎是不公开的。

另外,一般似乎无需考虑具体映射到哪个SMX执行,无论哪个架构上如何映射,程序编写的逻辑总是能被正确实现的,而硬件调度一般也是优化的,比作者自己想会更好。

大致如上,供您参考。如您确实需要具体细节,请联系NV原厂支持,看看能否透露一二。

祝您编码顺利!

谢谢你的指导

谢谢你的指导

不客气的,感谢您的莅临,祝您编码顺利!