OpenCL 速度和浮点精度

OpenCL speed and float point precision

本文关键字:精度 速度 OpenCL      更新时间:2023-10-16

我刚刚开始使用OpenCL。但是,我发现了OpenCl的一些奇怪的行为,我无法理解。我构建和测试的源代码是 http://www.codeproject.com/Articles/110685/Part-1-OpenCL-Portable-Parallelism .我有一个ATI Radeon HD 4770和一个AMD Fx 6200 3.8 GHz 6核CPU。

速度

首先速度与最大工作组项目数不成线性关系。我运行了应用程序分析器来分析内核执行期间花费的时间。结果有点令人震惊,我的 GPU 每组只能处理 256 个工作项,使用 2.23008 毫秒来计算5079040数字的平方。请注意,这是没有考虑内核加载时间...

但是,我的 CPU 可以处理每个组 1024 个工作项,使用 13.41895 毫秒来计算数字。我认为工作组中的工作项是同时运行的,换句话说,cpu 应该更快。我想知道的是,工作组是否同时运行?就像,在我的设置中,GPU 会比 CPU 同时运行更多的工作组。

另一个因素可能是 GPU 计算浮点算术的速度更快,但我的 CPU 时钟速度快 4 倍,所以仍然很奇怪。我知道通常 GPU 在屈服于 opencl 时应该更快,但我想要一个很好的解释为什么。

编辑:我试图计算1024,2048...5120个工作项,现在CPU比GPU快。所以我了解到 CPU 在很少的工作时间下工作得更好,而 GPU 在工作项很多时效果最好。

我还看到,我的CPU每三倍于工作组大小(4096,6144,8192)进行计算的速度要慢得多。所以看起来我的CPU同时需要三个工作组。

浮点精度

问题移至此处:OpenCL 浮点精度

提前感谢所有答案。

我想知道的是,工作组是否同时运行?就像,在我的设置中,GPU 会比 CPU 同时运行更多的工作组。

这个问题有一个很好的答案:OpenCL 工作项是否并行执行?