使用 MATLAB 编码器将 MATLAB 转换为 C++
Convert MATLAB to C++ using MATLAB coder
我要将 MATLAB 代码 "full of operations on matrices " 转换为 C++,我不确定 MATLAB 编码器是否会生成高效的 C++ code.Is 最好手动转换它,尽管它是如此耗时?
正如其他人所说,使用 MATLAB Coder 生成代码,使用编译器的优化对其进行编译,并进行测量是了解您的需求是否得到满足的唯一方法。
MATLAB Coder 直接为大多数算法生成代码,无需使用外部库。在某些情况下,可以使用库或用户可以请求库。您可能特别感兴趣的是 BLAS 和 LAPACK 集成。
如果您将线性代数作为矩阵运算的一部分,请考虑配置 MATLAB Coder 以调用您选择的高性能 BLAS 和 LAPACK 库:
https://www.mathworks.com/help/coder/ug/generate-code-that-calls-lapack-functions.html
这将导致 MATLAB Coder 将其算法替换为调用您为线性代数运算指定的库,例如 *, \, linsolve, lu, svd, eig
等
MATLAB Coder 提供了提高生成代码性能的建议:
https://www.mathworks.com/help/coder/optimize-speed-of-generated-code.html
在这种情况下,一种可能的方法是生成代码并使用 prof、VTune、AMD Codeanalyst、Visual Studio 性能工具等分析器对其进行分析。如果您发现一些昂贵的内核生成的代码可能无法满足您的性能需求,请使用类似 C 的界面手写这些部分的替换,并使用 coder.ceval
.
将它们与您生成的代码集成
我要将 MATLAB 代码 "full of operations on matrices " 转换为 C++,我不确定 MATLAB 编码器是否会生成高效的 C++ code.Is 最好手动转换它,尽管它是如此耗时?
正如其他人所说,使用 MATLAB Coder 生成代码,使用编译器的优化对其进行编译,并进行测量是了解您的需求是否得到满足的唯一方法。
MATLAB Coder 直接为大多数算法生成代码,无需使用外部库。在某些情况下,可以使用库或用户可以请求库。您可能特别感兴趣的是 BLAS 和 LAPACK 集成。
如果您将线性代数作为矩阵运算的一部分,请考虑配置 MATLAB Coder 以调用您选择的高性能 BLAS 和 LAPACK 库:
https://www.mathworks.com/help/coder/ug/generate-code-that-calls-lapack-functions.html
这将导致 MATLAB Coder 将其算法替换为调用您为线性代数运算指定的库,例如 *, \, linsolve, lu, svd, eig
等
MATLAB Coder 提供了提高生成代码性能的建议:
https://www.mathworks.com/help/coder/optimize-speed-of-generated-code.html
在这种情况下,一种可能的方法是生成代码并使用 prof、VTune、AMD Codeanalyst、Visual Studio 性能工具等分析器对其进行分析。如果您发现一些昂贵的内核生成的代码可能无法满足您的性能需求,请使用类似 C 的界面手写这些部分的替换,并使用 coder.ceval
.