【发布时间】:2014-08-05 23:54:34
【问题描述】:
在 OpenCL 内核中使用 (u)int16 而不是 float 的预期性能提升是多少?如果有的话? 我希望内存传输大致除以 2,但设备负载是多少?
奇怪的是,我几乎找不到任何关于该主题的长凳或文档。 (或者也许我的 google fu 让我失望了……)
我正在研究图像处理(主要是过滤)。精度不是那么关键,实际上几个内核操作的结果被转换成一个字符。我们缩小了几个可以使用较短数据类型的操作。所以我想知道是否可以通过使用更短的数据来加速这些操作,而这些数据的精度并不重要。
感谢您的帮助。
【问题讨论】:
-
OpenCL 与平台无关,无法有意义地回答这个问题。这个内核运行在什么样的加速器上? GPU 风格还是 CPU 风格?
-
目前,CPU 和 GPU 都有,但我们的目标是入门级专业 GPU(例如:ati firepro scale)。
-
您必须在相关硬件上进行测量。无法说出 {C,G}PU 和编译器对您的源代码执行了什么魔法,因此无法说。请注意,至少有时,代码大小也会对结果产生影响,因此,例如,如果浮点指令更长,尽管理论上一样快,那么这可能会因代码增长而失去宝贵的性能。
-
这也取决于你的代码是计算还是内存限制。
-
@delnan 好的 thx,我只是对简单的卷积做了一点测试,确实 float 比 int16 (~20%) 快,bw 使用量除以 ~1.9。所以我想我会坚持浮动
标签: c++ c image-processing opencl