Используйте опции генерации кода и оптимизацию, чтобы улучшить скорость выполнения сгенерированного кода. Можно изменить или отключить динамическое выделение памяти, которое может влиять на скорость выполнения. Параллелизированный код может быть сгенерирован при помощи циклов parfor
. Когда доступно, используйте в своих интересах существующий ранее оптимизированный код С и специализированные библиотеки, чтобы ускорить выполнение.
Для получения дополнительной информации о том, как оптимизировать ваш код для особых условий, см. Стратегии Оптимизации.
parfor | Параллельный цикл for |
coder.varsize | Объявите данные переменного размера |
coder.const | Сверните выражения в константы в сгенерированном коде |
coder.inline | Управляйте встраиванием в сгенерированном коде |
coder.unroll | Разверните цикл for путем создания копии тела цикла для каждой итерации цикла |
coder.ceval | Вызовите внешнюю функцию C/C++ |
coder.LAPACKCallback | Абстрактный класс для определения библиотеки LAPACK и заголовочного файла LAPACKE для LAPACK вызывает в сгенерированном коде |
coder.BLASCallback | Абстрактный класс для определения библиотеки BLAS и заголовка CBLAS и информации о типе данных для BLAS вызывает в сгенерированном коде |
coder.fftw.StandaloneFFTW3Interface | Абстрактный класс для определения библиотеки FFTW для FFTW вызывает в сгенерированном коде |
Минимизируйте динамическое выделение памяти
Улучшите время выполнения путем минимизации динамического выделения памяти.
Обеспечьте максимальный размер для массивов Переменного Размера
Используйте методы, чтобы помочь генератору кода определить верхнюю границу для массива переменного размера.
Отключите динамическое выделение памяти во время генерации кода
Отключите динамическое выделение памяти в приложении или в командной строке.
Установите порог динамического выделения памяти
Отключите динамическое выделение памяти для массивов меньше, чем определенный размер.
Сгенерируйте код с параллельными циклами for (parfor)
Сгенерируйте цикл, который запускает параллельно на общей памяти многожильные платформы.
Задайте Максимальное количество Потоков в циклах parfor
Сгенерируйте MEX-функцию, которая выполняет итерации цикла параллельно на определенном количестве доступных ядер.
Управляйте Компиляцией циклов parfor
Обработайте parfor
- циклы как parfor
- циклы, которые работают на одном потоке.
Установите Библиотеку OpenMP по macOS Платформе
Установите библиотеку OpenMP, чтобы сгенерировать параллельный for
- циклы на macOS платформе.
Минимизируйте избыточные операции в циклах
Операции пересылки за пределами цикла, если это возможно.
Разворачивающий цикл управления.
Устраните избыточные копии входных параметров функции
Используйте ту же переменную в качестве входного параметра функции и выведите.
Встраивание устраняет издержки вызова функции, заменяя вызов функции на тело функции.
Ограничьте встраивание, чтобы уменьшать размер сгенерированного кода и использования памяти.
Сверните вызовы функции в константы
Уменьшайте время выполнения, заменяя выражение на константу в сгенерированном коде.
Отключите поддержку Integer Overflow или Nonfinites
Улучшайте производительность путем подавления генерации поддержки кода, чтобы обработать целочисленное переполнение или nonfinites.
Объединяйтесь Внешний / Пользовательский код
Улучшайте производительность путем интеграции собственного оптимизированного кода.
Ускорьте линейную алгебру в сгенерированном автономном коде при помощи вызовов LAPACK
Сгенерируйте призывы LAPACK к определенным функциям линейной алгебры. Задайте библиотеку LAPACK, чтобы использовать.
Ускорьте Матричные операции в сгенерированном автономном коде при помощи вызовов BLAS
Сгенерируйте призывы BLAS к определенным низкоуровневым операциям над матрицей. Задайте библиотеку BLAS, чтобы использовать.
Сгенерируйте библиотеку FFTW, призывает к быстрым преобразованиям Фурье. Задайте библиотеку FFTW.
Синхронизируйте многопоточный доступ к FFTW, планирующему в сгенерированном автономном коде
Реализуйте методы класса коллбэка библиотеки FFT и обеспечьте код С поддержки, чтобы предотвратить параллельный доступ к планированию FFTW.
Оптимизируйте скорость выполнения или использование памяти сгенерированного кода.
Динамическое выделение памяти и производительность
Динамическое выделение памяти может замедлить скорости выполнения.
Ускорение алгоритма Используя параллельные циклы for (parfor)
Сгенерируйте MEX-функции для parfor
- циклы.
Классификация Переменных в циклах parfor
Переменные в parfor
- циклы классифицируются как цикл, нарезанный, широковещательная передача, сокращение, или временные.
Присвоения сокращения в циклах parfor
Переменная сокращения накапливает значение, которое зависит от всех итераций цикла вместе.
Оптимизация MATLAB Coder в сгенерированном коде
Чтобы улучшать производительность сгенерированного кода, генератор кода использует оптимизацию.
Генератор кода оптимизирует сгенерированный код при помощи memcpy
.
Генератор кода оптимизирует сгенерированный код при помощи memset
.
Вызовы LAPACK в сгенерированном коде
Вызовы функции LAPACK улучшают скорость выполнения кода, сгенерированного для определенных функций линейной алгебры.
Вызовы BLAS в сгенерированном коде
Вызовы функции BLAS улучшают скорость выполнения кода, сгенерированного для определенного низкоуровневого вектора и операций над матрицей.
Сгенерируйте код, который использует размещение главного массива строки
Сгенерируйте код C/C++ с элементами строки, сохраненными непрерывно в памяти.
Циклы parfor Поиска и устранения проблем
Диагностируйте ошибки для генерации кода parfor
- циклы.
MEX, Сгенерированный на macOS Платформе, Остается Загруженным в Памяти
Диагностируйте проблемы, которые происходят, когда источник, код MATLAB® содержит глобальные или персистентные переменные, которые достижимы от тела parfor
- цикл.