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