当您在GPU上的主要内核中启动辅助内核时,会产生一些开销。导致或影响此开销数量的因素有哪些?例如内核代码的大小,启动内核的SM的占用情况,内核参数的大小等。
为了这个问题,让我们包容,并将“开销”定义为以下时间间隔的总和:
开始:SM看到启动指令
结束:SM开始执行子内核的指令
加
开始:上一个SM执行子内核的任何指令(或者可能由子内核指令最后写入提交给相关的内存空间)
结束:在子内核启动后执行父代的下一条指令。
答案 0 :(得分:1)
这个答案不是基于设备的实验或知识 - 侧运行时实现,而是基于对执行操作需要做什么的思考。
我认为启动的网格配置和寄存器使用有一定的效果,因为状态需要保存在某处以使SM移动到另一个内核。 此外,启动的块数可能会产生一些影响,因为我没有看到设备运行时如何处理所有配置。 另一方面,我不明白为什么被调用者注册用法/代码大小会产生巨大影响。
同样,这里没有任何测试/实验证明以上任何一项。