与一般的单处理器内核相比,CUDA 或 OpenCL 代码上的算法运行速度有多快? (考虑到算法是针对 CPU 和 GPU 目标编写和优化的)。
我知道这取决于显卡和 CPU,但是说,NVIDIA 最快的 GPU 之一和英特尔 i7 处理器的(单核)?
而且我知道这也取决于算法的类型。
我不需要一个严格的答案,但有经验的例子如下:对于使用 double 浮点和每个像素 10 次操作的图像处理算法,前 5 分钟花费了前 5 分钟,现在使用此硬件运行 x 秒。
最佳答案
您的问题过于宽泛,很难回答。此外,只有一小部分算法(处理没有太多共享状态的算法)适用于 GPU。
但我确实想敦促您对声明持批评态度。我在图像处理领域,阅读了很多关于该主题的文章,但在 GPU 的情况下,将输入数据上传到 GPU 并将结果下载回主内存的时间不是包含在因子的计算中。
虽然在少数情况下这无关紧要(两者都很小,或者有第二阶段的计算进一步减小了结果的大小),但通常确实需要传输结果和初始数据。
我已经看到这会将声称的正数变成负数,因为仅上传/下载时间就比主 CPU 进行计算所需的时间要长。
几乎相同的事情适用于组合不同 GPU 卡的结果。
更新 较新的 GPU 似乎能够使用乒乓缓冲区同时上传/下载和计算。但彻底检查边境状况的建议仍然有效。那里有很多旋转。
更新 2 为此,经常使用与视频输出共享的 GPU 并不是最佳选择。考虑例如为视频添加低预算卡,并将板载视频用于 GPGPU 任务
关于我们能否将 CUDA 或 OpenCL 的速度与 CPU 性能进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4268181/