将多个内核放在单个程序中,或者为每个内核编译不同的程序(不包括源代码组织)的实际区别是什么?具体来说,寄存器压力是由程序的大小还是由程序中选择的实际内核决定的?是为任何内核的运行分配的所有内核的所有__local
存储的总和?是否还有其他与性能相关的观察(例如代码上传到设备的大小等)?
答案 0 :(得分:3)
这可能是特定于设备的,我说的是英特尔GPU体验。程序范围资源只对该程序中的内核可见。除了寄存器分配是每个内核;因此,K程序中的1个内核与1个程序中的K内核对寄存器压力没有影响。您确实构建并链接每个程序。因此,如果您不使用所有K内核,则在一个程序中编译K内核在启动时间方面效率较低。