【问题标题】:CUDA processing imageCUDA处理图像
【发布时间】:2014-05-15 22:26:54
【问题描述】:

感谢您阅读我的帖子。

这是我想做的:

  • 我在硬盘上有很多图像,比如 100000 张。大多数情况下,它们的大小为 512X512。
  • 我想一张一张地加载,并计算每张图像的统计数据,比如平均强度、方差、最小值、最大值等。

我想知道,我可以在这里使用 CUDA 来加速这个过程吗?它会比CPU处理更快吗?

我是 CUDA 的新手,但我正在考虑使用 C++ 项目进行图像文件 I/O(例如 libtiff),然后使用 CUDA 进行计算。一般来说,实施这个项目的合理/最快/准最快的方式是什么?

非常感谢任何评论。非常感谢。

【问题讨论】:

  • 今天,对于这种类型的算法使用 GPU 是否会比使用 CPU 更快还不确定。减少/查找算法并不是真正为 GPU 设计的,如果您可以使用 AVX + openMP,您可能具有相同的性能,或者可能只是 2-3 倍(这非常好),但是需要时间在 CUDA 中对其进行编码以获得性能应该花费您一些时间(如果您是 CUDA 新手,则需要更多时间)。我宁愿推荐你用 C++ 编写代码。您可以在 CUDA、数学库中寻找推力
  • 那么如果我选择 GPU,您认为这个项目的最佳结构是什么?非常感谢您的意见。
  • 我认为学习 CUDA 确实是一件好事,但在我看来,C++ 应该更适合您的问题。

标签: c++ performance cuda parallel-processing


【解决方案1】:

我相信拥有 CUDA 对您没有帮助,因为:
1. 图像数据必须传输到图形控制器。
2. 结果必须从图形控制器传输到 CPU。

从 GPU 到 CPU 的数据路径并未针对速度进行优化,因为大部分流量都是从 CPU 到 GPU。

通过优化数据缓存的操作,您将获得更好的性能。在网上搜索“C++ 数据缓存优化”。

同时搜索“循环展开”和“双缓冲区读取”。

我预测您的瓶颈不是数据的图像分析,而是将数据读入内存。

还要考虑在 CPU 内核之间分配计算。例如,Core 1 处理奇数图像,Core 2 处理偶数图像。

【讨论】:

  • “从 GPU 到 CPU 的数据路径没有针对速度进行优化,因为大部分流量都是从 CPU 到 GPU。”那是不正确的。 PCIE 速度在两个方向上是相同的。此外,在这个用例中,您返回到 CPU 的数据量只有几个字节,因此将结果移回的成本基本上为零。如果您使用 cudaMemcopyAsync 将 DMA 从 CPU 重叠到 GPU 进行计算,您通常可以获得这些类型的图像处理查询的显着加速。查看 NPP 库,其中包含您需要的所有图像处理操作。
【解决方案2】:

人们是对的,但我会告诉你去做吧。对图像执行此类操作非常适合理解 CUDA 和并行编程,尽管作为多线程 CPU 效率不高。

我的建议使用 1-使用单个线程来执行操作并为每个操作计时。 2-然后使用 OpenMP 在 CPU 上执行操作(使用 2、4 和更多线程,具体取决于您拥有的内核数量。 3-尝试在Cuda中进行编程,您将在此过程中学习很多并行编程原语(最小并行化约和均值运算)

稍后当您要处理更复杂的东西时,例如直方图、可变形配准或平滑操作,您将开始欣赏并行编程速度。

提示:像读取图像这样的 IO 操作在所有程序中都有相同的代码。

【讨论】:

    【解决方案3】:

    CUDA 可能不会对您有太大帮助(假设统计评估如此便宜),因为主机到设备的复制指令非常昂贵。如果你想尝试一下:看看你的任务的并行减少。 我将首先实现一个简单的 CPU 线程版本并检查性能。只需使用一个线程用文件(输入)和一些工作人员(取决于您的机器的配置)填充缓冲区来进行计算。

    【讨论】:

    • 你的意思是一个线程填充缓冲区,其他线程启动 GPU 进行计算?统计数据可能会更难,我只是举一些我现在能想到的例子。
    • 正如 Thomas 还建议的那样,使用 CPU 线程版本。 CUDA 可能对你帮助不大,因为文件 I/O 将是最大的瓶颈。如果您可以将数据从主机内存复制到设备内存并执行一些非常昂贵且可并行化的任务,而无需在两者之间进行主机-设备复制操作,那么 CUDA 就会大放异彩。对于您的任务,我认为情况并非如此。
    猜你喜欢
    • 2015-08-09
    • 2016-07-20
    • 2012-03-20
    • 2012-06-26
    • 2016-08-04
    • 2014-12-09
    • 2012-05-06
    • 2013-07-03
    • 1970-01-01
    相关资源
    最近更新 更多