3

当您从 GPU 上的主内核中启动辅助内核时,会产生一些开销。造成或影响此开销金额的因素是什么?例如,内核代码的大小、正在启动内核的 SM 的占用率、内核参数的大小等。

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

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

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

4

1 回答 1

1

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

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

同样,这里没有测试/实验来证明上述任何内容。

于 2017-03-22T20:25:13.110 回答