gpt4 book ai didi

wpf - 在 WPF 中显示 CUDA 处理的图像

转载 作者:行者123 更新时间:2023-12-02 04:56:47 25 4
gpt4 key购买 nike

我有一个 WPF 应用程序,它从相机获取图像、处理这些图像并显示它们。处理部分已经成为 CPU 的负担,因此我考虑将此处理转移到 GPU 并针对它们运行自定义 CUDA 内核。基本流程如下:

1) 从相机获取图像2)将图像加载到GPU上3)调用CUDA内核处理图像4)显示处理后的图像

我正在尝试找出 WPF 到 CUDA 到显示控制的策略。看起来很自然,一旦图像加载到 GPU 上,就无需卸载即可显示。我读到这可以通过 OpenGL 来完成,但是我真的需要学习 OpenGL 并将其包含在我的项目中才能快速显示 CUDA 处理的图像吗?

我理解(我认为)从 C# 调用 CUDA 内核的问题。我的计划是围绕我的 CUDA 调用构建一个非托管库,稍后我将其包装为 C# - 或者 - 尝试决定尝试使用哪一个托管包装器(托管CUDA、Cudafy 等)。我担心使用其中一个预构建的包装器,因为它们似乎都受到轻微支持......但也许我有错误的印象。

无论如何,经过几天的研究可能的选择后,我感到有点不知所措。任何建议将不胜感激。

最佳答案

获取 CUDA 计算结果并将其直接在设备上用于图形事件的过程称为“互操作”。有OpenGL“互操作”和DirectX“互操作”。有很多CUDA sample codes演示如何与计算图像交互。

要直接从设备上的计算数据进行显示,而无需访问主机,您将需要使用这 2 个 API(OpenGL 或 DirectX)之一。

您提到了我听说过的两个托管接口(interface),因此您似乎了解其中的选项。

如果与将图像从主机传输到设备所需的时间相比,处理时间很长(远大于),您可以考虑先将图像从主机传输到设备,处理它,然后传输它返回,然后您可以使用与显示它相同的管道。然后您可以决定是否值得为互操作付出额外的努力。

如果您可以分析代码以了解图像处理在主机上花费的时间,然后在设备上进行原型(prototype)设计以了解其速度有多快,这将具有指导意义。

您可能会发现处理时间很长,您甚至可以从双份安排中受益。或者您可能会发现主机上的处理时间非常短(与传输到设备的成本相比),以至于 CUDA 加速没有用处。

关于wpf - 在 WPF 中显示 CUDA 处理的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22230457/

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