gpt4 book ai didi

opencl - 编写多个内核或单个内核

转载 作者:行者123 更新时间:2023-12-03 03:58:13 25 4
gpt4 key购买 nike

假设我有两个大函数。是把它们写在一个单独的内核中并按顺序调用它们更好,还是只写一个内核更好? (我不想读回数据并在主机和设备之间强制形成)。如果我想多次调用内核,速度会怎样?

最佳答案

需要考虑的一件事是寄存器压力对硬件利用率和性能的影响。

作为一般规则,大内核具有大的寄存器占用空间。典型的 OpenCL 设备(即 GPU)的寄存器文件大小非常有限,而较大的内核可能会导致并发性较低(并发扭曲/波前较少)、延迟隐藏机会较少以及整体性能较差。另一方面,在大多数平台上,内核启动开销都非常低,因此,如果您的算法在执行“阶段”之间没有大量状态需要保存,那么使用多个内核的代价可能会相当低。 p>

使用多个内核还有另一个好处——您可以免费获得所有工作单元之间的隐式同步。通常,这可以消除对原子内存操作和同步原语的需求,这些操作和同步原语可能会对代码性能产生负面影响。

最终的指导应该是衡量性能。对于这类事情没有通用的经验法则。基准测试是唯一确定的方法。

关于opencl - 编写多个内核或单个内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9504828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com