【问题标题】:Good Performance on Octave or Matlab / Bad Performance on gcc在 Octave 或 Matlab 上表现良好/在 gcc 上表现不佳
【发布时间】:2010-10-14 19:06:25
【问题描述】:

大家好,

我实际上是在讨论机器人拾取和放置应用程序的 3D 扫描。

首先,我使用 ICP 算法来匹配参考对象相对于实际对象的位置。为此,我使用带有以下代码的 Octave/Matlab: http://www.mathworks.com/matlabcentral/fileexchange/12627-iterative-closest-point-method

经过一些尝试,该算法似乎在适当的时间产生了令人满意的准确性。大约 6000 到 6000 个数据点的匹配需要花费 100 次迭代循环大约 15 秒的计算时间。

实际上,我正在尝试提取此 matlab/octave 代码以将其放入我的应用程序中,以尝试算法的并行性。当我从我自己的 c 应用程序运行未更改的代码时,计算时间增加了大约 10 到 20 倍。 (相同的数据集!)

如果开启了函数内联和优化级别 -O3。生成 .oct 文件时,octave 是否还有其他优化?我实际上不知道为什么会有如此大的性能差异。

大规模的ICP算法做双重加法,乘法和除法!

感谢您的帮助!

您好, 乔德尔

【问题讨论】:

    标签: performance gcc matlab octave


    【解决方案1】:

    我希望 Octave 与 Matlab 一样,使用 BLAS 的实现,该实现针对您使用的硬件进行了调整。你 ?如果不是,这可能是速度差异的原因。

    【讨论】:

    • Octave/Matlab 内部使用 BLAS 来加速某些操作似乎很合乎逻辑。实际上我正在使用一些 C 代码,从 Matlab Envoriment 中提取它,计算时间增加了大约 20 倍。你认为 gcc/g++ 通过 BLAS 加速了外部 c 代码吗?我没有使用硬件加速。
    • @jodel:GCC(以及我听说过的大多数其他编译器)只有在你告诉它时才会使用 BLAS——你可以通过调用 BLAS 函数和链接到 libblas(或其他它在您的系统上调用)。是的,我希望一个过程的 BLAS 实现比您自己实现的相同过程更快,除非您花费大量时间优化自己的实现,特别是优化它以使用内存层次结构。
    • 使用的代码不会通过外部库进行任何加速。因此,我认为如果不使用八度音程,性能会那么差,可能还有另一个原因。
    猜你喜欢
    • 1970-01-01
    • 2021-12-16
    • 2020-02-22
    • 1970-01-01
    • 2023-01-20
    • 1970-01-01
    • 2017-12-17
    • 2023-01-26
    • 2017-10-01
    相关资源
    最近更新 更多