英特尔用于图像处理的 OpenCL SDK

计算科学 显卡 图像处理 开放式
2021-12-12 20:03:44

我正在从事一个图像处理项目,并在 OpenCL 中编写了一些算法。目前我正在使用Cloo。

我现在正处于我想优化我的程序的阶段,因为它目前运行得太慢了。

我还认为可能值得研究 OpenCL 的其他一些实现。

我曾尝试安装Intel 的 SDK,但安装失败。(我想我可能需要进入 Intel GPU 才能使用 SDK,我目前使用的是 NVIDIA Quadro K4000)。

我发现这个网站推荐英特尔 SDK,因为它的实现很成熟。

是否值得为英特尔 SDK 购买英特尔显卡?

2个回答

简短的回答:没有。

您在这里有很多选择。

对于您的 NVIDIA GPU,您将通过切换到 CUDA 而不是 OpenCL 获得最佳性能。您还可以将您的卡升级到 Geforce Titan 之类的东西,它的 GPU 计算性能明显优于 Quadro 卡。

我个人的看法是 CUDA 更好用,有更好的库支持等,但也有一些缺点。这包括无法使用 AMD GPU,当然您必须重新实现所有内容。然而,CUDA 和 OpenCL 非常相似,从 OpenCL 转换到 CUDA 相对容易。情况并非总是相反。NVIDIA 还拥有 Performance Primitives (NVPP) 库,它实现了许多基本的图像处理步骤。

获得 Intel GPU 不会提高性能,也不会使编程更容易。英特尔 GPU 通常是为了节省电力而不是为了性能而构建的。您可以考虑使用 Intel Xeon Phi,但据我了解,您仍然需要大幅修改代码以获得良好的性能(免责声明:我从未编写过 Xeon Phi,所以它的工作量可能比我想象的要少)。

另一种选择是获得 AMD 卡,并使用用于 OpenCL 的 AMD 库。由于 OpenCL 是在 AMD 卡上进行 GPU 计算的默认方式(与 Xeon Phi 和 NVIDIA 卡不同),它们有一些不错的库。

如果不了解更多关于您的问题,很难说出您应该做什么。NVIDIA 卡在浮点运算方面更快,AMD 卡在整数方面更好。我会考虑放弃 Cloo,因为它已经有几年没有更新了。

如果您对 CUDA 和 OpenCL 所需的低级编程不满意,您还可以尝试ArrayFire库之类的东西,这似乎可以大大简化实现。

最后,如果您发布更多关于您的问题以及如何解决它的信息,也许这里的某人将能够帮助优化代码。

根据您需要的灵活性,高级内核制作工具(例如 Blurate)也可能起作用。这样您就不必处理 SDK