gpt4 book ai didi

c++ - 加速 Matlab 到 C++ 的转换

转载 作者:可可西里 更新时间:2023-11-01 17:15:19 24 4
gpt4 key购买 nike

我有一些运行速度很慢的 Matlab 图像处理代码,我准备将其转换为 C/C++。我不太了解 matlab 的工作原理以及代码的执行方式,但我只是想听听我期望得到什么样的加速。显然,有许多变量会对此产生影响,但我只是想从您自己的经验中寻找指导。

谢谢

珍娜

最佳答案

这主要取决于您在 Matlab 中循环的紧密程度。如果您只是简单地调用一系列内置的 Matlab 图像处理函数,您很可能无法提高性能(很可能会伤害它)。如果您正在遍历图像像素或进行某种 block 处理,您可能会看到很大的改进。如果您正在做一些循环,但每次迭代中的处理量很大,您可能只会看到很少或没有改进。

我看待 Matlab 的方式是,每条执行的行都有一定的开销。如果您可以将您的解决方案转化为矩阵乘法或其他一些 vector/矩阵运算的形式,那么您只会承受一次这种开销并且可以忽略不计。但是,对于循环,每次循环迭代时您都会承受这种开销。此外,大多数 Matlab 的图像处理函数只是调用优化库,所以不要尝试重新创建它们,除非您确定它们可以改进的地方。

我发现最好的方法是结合使用 C 和 Matlab。当操作可以很容易地矢量化时(根据 vector/矩阵操作),我使用 Matlab。这可能意味着从一个不同于看起来最直接的角度来解决问题。此外,很难击败 Matlab 的绘图和可视化,所以我绝对不会转向全 C/C++ 解决方案,除非你有一个如何使用 C/C++ 显示的计划(如果这是你项目的一部分)。

如果我不能想出一个相对简单的矢量化方法,我只是在可以从 Matlab 调用的 C mex 函数中实现需要紧密循环的处理部分。在这种情况下,我倾向于使用 C 而不是 C++,因为该过程应该相对较小并且不需要大量复杂的数据抽象,但 C++ 也可以正常工作。确保以列优先顺序访问图像数据以最大限度地提高缓存命中率,因为这是 Matlab 组织其矩阵的方式。

关于c++ - 加速 Matlab 到 C++ 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1230065/

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