C/C++ Matlab compiler vs MKL

C/C++ Matlab compiler vs MKL

本文关键字:vs MKL compiler Matlab C++      更新时间:2023-10-16

通过Matlab mcc与数学内核库中发现的等效例程,作为C/c++ dll暴露的Matlab数值例程之间是否存在显着的性能差异?

我对线性最小二乘解的性能特别感兴趣,例如?gel和傅立叶变换例程。

Matlab为它调用的任何东西添加了一个层,fftw, lapack, mkl。

如果你编译一个特殊的版本,无论代码,它总是运行得更快,没有matlab开销。

如果你不知道你在做什么,使用内置库,如果你是一个老的f77黑客像我一样,我写我自己的例程,只有当我觉得懒惰或原型算法使用内置库。

对于傅里叶变换例程,我会根据使用场景推荐FFTW。FFTW针对一次准备、经常重用的场景进行了优化。因此,如果您需要计算相同类型的变换,例如在循环中进行1024 × 2000(非2的幂)变换,FFTW将更快。如果您需要计算不同的转换类型(每次都更改维度),那么MKL将更快。

FFTW的工作方式是你的软件首先调用准备例程,这可能需要几毫秒到几秒钟(你可以配置这个)来检查你的特定平台并选择最优化的例程。然后,您可以反复调用具有优化参数的转换例程。

所有其他已知的库都有固定优化,这可能对您的平台来说是最佳的,也可能不是。