Используйте опции создания кода и оптимизации для повышения скорости выполнения созданного кода. Динамическое выделение памяти можно изменить или отключить, что может повлиять на скорость выполнения. Параллельный код может быть создан с помощью parfor петли. Если это доступно, воспользуйтесь преимуществами уже существующего оптимизированного кода C и специализированных библиотек для ускорения выполнения.
Дополнительные сведения об оптимизации кода для определенных условий см. в разделе Стратегии оптимизации.
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 в сгенерированном коде |
Минимизация динамического выделения памяти
Сокращение времени выполнения за счет минимизации динамического выделения памяти.
Максимальный размер массивов переменного размера
Используйте методы, чтобы помочь генератору кода определить верхнюю границу для массива переменного размера.
Отключить динамическое выделение памяти во время создания кода
Отключите динамическое выделение памяти в приложении или в командной строке.
Установить порог динамического выделения памяти
Отключите динамическое выделение памяти для массивов, размер которых меньше определенного.
Создание кода с параллельными контурами (parfor)
Создание цикла, который выполняется параллельно на многоядерных платформах с общей памятью.
Укажите максимальное количество потоков в контурах parfor-loops
Создайте функцию MEX, которая параллельно выполняет итерации цикла для определенного количества доступных ядер.
Управление компиляцией циклов parfor
Удовольствие parfor-закольцовывает как parfor- циклы, выполняемые в одном потоке.
Установка библиотеки OpenMP на платформе macOS
Установка библиотеки OpenMP для создания параллельных for-циклы на платформе macOS.
Минимизация избыточных операций в контурах
По возможности перемещайте операции за пределы цикла.
Разматывание контура управления.
Автоматическая параллелизация для циклов в сгенерированном коде
Итерации параллельных for петли могут выполняться одновременно на нескольких ядрах на целевом оборудовании.
Избегайте копирования данных входных данных функций в сгенерированном коде
Создать код, передающий входные аргументы по ссылке.
Встраивание устраняет накладные расходы на вызовы функций, но может создавать больший код C/C + + и снижать читаемость кода.
Вызовы функции сворачивания в константы
Сократите время выполнения, заменив выражение константой в созданном коде.
Отключить поддержку переполнения целых чисел или нефинитов
Повышение производительности за счет подавления генерации поддерживающего кода для обработки переполнения целых чисел или нефинитов.
Интеграция внешнего/пользовательского кода
Повысьте производительность за счет интеграции собственного оптимизированного кода.
Ускорение линейной алгебры в сгенерированном автономном коде с помощью вызовов LAPACK
Создание вызовов LAPACK для определенных функций линейной алгебры. Укажите библиотеку LAPACK для использования.
Ускорение операций матрицы в сгенерированном автономном коде с помощью вызовов BLAS
Создание вызовов BLAS для определенных операций матрицы низкого уровня. Укажите библиотеку BLAS для использования.
Создание вызовов библиотеки FFTW для быстрых преобразований Фурье. Укажите библиотеку FFTW.
Синхронизация многопоточного доступа к планированию FFTW в сгенерированном автономном коде
Реализуйте методы класса обратного вызова библиотеки FFT и предоставляйте поддерживающий код C для предотвращения параллельного доступа к планированию FFTW.
Оптимизируйте скорость выполнения или использование памяти сгенерированного кода.
Динамическое выделение памяти и производительность
Динамическое выделение памяти может замедлить скорость выполнения.
Ускорение алгоритма с использованием параллельных циклов (parfor)
Создание функций MEX для parfor-контуры.
Классификация переменных в пакетных контурах
Переменные внутри parfor-контуры классифицируются как петлевые, разрезанные, широковещательные, редуцированные или временные.
Назначения сокращения в петлях Parfor-Loops
Понижающая переменная накапливает значение, которое зависит от всех итераций цикла вместе.
Оптимизация кодера MATLAB в сгенерированном коде
Для повышения производительности генерируемого кода генератор кода использует оптимизации.
Генератор кода оптимизирует сгенерированный код с помощью memcpy.
Генератор кода оптимизирует сгенерированный код с помощью memset.
Вызовы LAPACK в сгенерированном коде
Вызовы функции LAPACK улучшают скорость выполнения кода, генерируемого для определенных функций линейной алгебры.
Вызовы BLAS в сгенерированном коде
Вызовы функции BLAS повышают скорость выполнения кода, генерируемого для определенных низкоуровневых векторных и матричных операций.
Создать код, использующий макет главного массива строк
Создайте код C/C + + с элементами строк, хранящимися непрерывно в памяти.
Устранение неполадок в петлях Parfor-Loops
Диагностика ошибок для генерации кода parfor-контуры.
MEX, генерируемый на платформе macOS, остается загруженным в память
Устранение неполадок, возникающих, когда исходный код MATLAB ® содержит глобальные или постоянные переменные, доступные из тела parfor-луп.
Решение проблемы: массив или шаблон переменного доступа не подходит для параллельного выполнения
Устранение неполадок автоматического распараллеливания, вызванных шаблоном доступа к памяти внутри for цикл.