gpt4 book ai didi

image-processing - 并行化代码的最快方法是什么?

转载 作者:行者123 更新时间:2023-12-04 08:29:23 29 4
gpt4 key购买 nike

我有一个图像处理例程,我相信它可以非常快速地并行化。每个像素需要以不依赖于对相邻像素执行的操作的方式对其执行大约 2k 次操作,因此将工作拆分为不同的单元非常简单。

我的问题是,处理此更改的最佳方法是什么,以便我获得最快的加速效果?

理想情况下,我正在寻找的库/方法应该满足这些标准:

  1. 5 年后仍然存在。在不久的将来,像 CUDA 或 ATI 的变体这样的东西可能会被硬件特定性较低的解决方案所取代,所以我想要一些更稳健的东西。如果我对CUDA的印象有误,欢迎指正。
  2. 快速实现。我已经编写了这段代码,它以串行模式工作,尽管速度很慢。理想情况下,我只是将我的代码重新编译为并行代码,但我认为这可能是一种幻想。如果我只是使用不同的范例(即着色器或其他东西)重写它,那也很好。
  3. 不需要太多硬件知识。我希望不必指定线程或操作单元的数量,而是让某些东西根据所使用的机器自动为我计算出所有这些。
  4. 可在廉价硬件上运行。这可能意味着 150 美元的图形卡,或其他任何东西。
  5. 可在 Windows 上运行。像 GCD 这样的东西可能是正确的选择,但我的目标客户群不会很快转向 Mac 或 Linux。请注意,这确实使对问题的回答与 this other question 有点不同。 .

我应该查看哪些库/方法/语言?我已经查看了 OpenMP、CUDA、GCD 等等,但我想知道是否还有其他我遗漏的东西。

我现在倾向于着色器和 opengl 2.0 之类的东西,但这可能不是正确的选择,因为我不确定我可以通过这种方式获得多少内存访问——那些 2k 操作需要访问所有以多种方式相邻像素。

最佳答案

最简单的方法可能是将您的图片分成您可以并行处理的部分数量(4、8、16,取决于内核)。然后为每个部分运行不同的过程。

关于具体执行此操作,请查看 OpenCL。它有望存在更长时间,因为它不是特定于供应商的,而且 NVidia 和 ATI 都希望支持它。

一般来说,由于您不需要共享太多数据,因此该过程非常简单。

关于image-processing - 并行化代码的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1718299/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com