Конвертировать MATLAB в C ++, используя кодер MATLAB

Я собираюсь преобразовать код MATLAB, «полный операций над матрицами», в C ++, я не уверен, что кодер MATLAB сгенерирует эффективный код C ++. Лучше ли конвертировать его вручную, хотя это отнимает много времени?

0

Решение

Как уже говорили другие, генерация кода с помощью MATLAB Coder, компиляция его с оптимизацией вашего компилятора и измерение — это единственный способ узнать, будут ли удовлетворены ваши потребности.

MATLAB Coder генерирует код напрямую для большинства алгоритмов без использования внешних библиотек. В некоторых случаях библиотеки могут использоваться или могут быть запрошены пользователем. Особый интерес для вас может представлять интеграция BLAS и LAPACK.

Если вы выполняете линейную алгебру как часть ваших операций с матрицами, рассмотрите возможность настройки MATLAB Coder для вызова высокопроизводительных библиотек BLAS и LAPACK по вашему выбору:

https://www.mathworks.com/help/coder/ug/speed-up-matrix-operations-in-generated-standalone-code-by-using-blas-calls.html

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,

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]