我有一个处理RGB图像的内核。目前, 我逐个采用每个通道,并在该通道上运行相同的内核
内核输入是全局内存缓冲区:数据从全局移动到块中 缓冲区进入本地内存进行处理,然后存入另一个全局内存 缓冲作为输出。
我正在考虑重构这个以将所有三个频道存储在RGBA中 缓冲区,并使用向量同时在所有三个通道上操作 操作。我知道图像具有更好的空间缓存。
这个重构有什么不利之处吗?我意识到我必须减少 每块的像素数,因为我现在有三倍的量 数据。
谢谢!
答案 0 :(得分:0)
通常,现代GPU正在很好地处理图像,因为最初它们是为这样做而设计的。除非你使用某些特定的硬件,这对于图像数据结构不好,否则这种重构是一个好主意(IMO)。
更改每个WI或WG流程的数据量并不强制导致性能下降 - 算法更改可能会以不可预测的方式影响性能。因此,要得出结论,需要仔细的基准测试。
如果您要定位特定硬件,使用SDK工具总是一个好主意。性能分析器可以提供有用的统计数据和优化提示(例如寄存器溢出,缓存命中率,利用率百分比等)