哪些因素会影响动态并行内核启动的开销



当您从 GPU 上的主内核中启动辅助内核时,会产生一些开销。导致或影响此间接费用金额的因素有哪些?例如内核代码的大小、启动内核的 SM 的占用情况、内核参数的大小等。

为了解决这个问题,让我们包容,并将"开销"定义为以下时间间隔的总和:

开始:SM 看到启动指令
结束:SM开始执行子内核的指令

开始:最后一个SM执行子内核的任何指令(或者可能是子内核指令的最后写入被提交到相关的内存空间(
结束:子内核启动后执行父级的下一条指令。

这个答案不是基于实验或设备的知识 - 端运行时实现,而是关于需要做什么来执行操作的想法。

我假设启动的网格配置和寄存器使用具有一些影响,因为需要将状态保存在某个地方才能让 SM 移动到另一个内核。此外,启动的块数可能会产生一些影响,因为我看不到设备运行时如何处理所有配置。另一方面,我不明白为什么被调用方寄存器的使用/代码大小会产生巨大影响。

同样,这里没有测试/实验可以证明上述任何一项。

最新更新