exponenta event banner

кодер. MexCodeConfig

Параметры конфигурации для генерации функции MEX из кода MATLAB

Описание

A coder.MexCodeConfig объект содержит параметры конфигурации, которые codegen используется при генерации функции MEX. Передать объект в codegen с помощью функции -config вариант.

Создание

Описание

пример

cfg = coder.config('mex') создает coder.MexCodeConfig объект.

cfg = coder.config создает coder.MexCodeConfig объект.

Свойства

развернуть все

Параметры форматирования кода для созданного кода, указанные как одно из значений в таблице.

СтоимостьОписание
'Clang-format'

Генератор кода форматирует сгенерированный код в соответствии с clang-format файл.

'Auto'

Использует внутреннюю эвристику для определения, имеет ли созданный код формат clang-format или инструмент форматирования MathWorks ®.

Чтобы определить, отформатирован ли сгенерированный код clang-format, в coder.config объект, установите Verbosity опция для 'Verbose'.

'MathWorks'

Вызывает возврат генератора кода к инструменту форматирования MathWorks.

Максимальное число специализаций функций для рекурсии во время компиляции, указанное как положительное целое число. Чтобы запретить рекурсию в коде MATLAB ®, установитеCompileTimeRecursionLimit в 0. Предел времени компиляции по умолчанию достаточно велик для большинства рекурсивных функций, требующих такого типа рекурсии. Если не удалось создать код из-за предела рекурсии времени компиляции и требуется рекурсия времени компиляции, попробуйте увеличить предел. Либо измените код MATLAB таким образом, чтобы генератор кода использовал рекурсию во время выполнения. См. раздел Достигнут предел рекурсии во время компиляции.

Максимальное количество инструкций, выполняемых в постоянной папке. В некоторых ситуациях создание кода требует, чтобы конкретные команды были постоянными. Если постоянное сворачивание прекращается до того, как эти команды будут постоянно свернуты, создание кода завершается неудачей. В этом случае увеличить значение ConstantFoldingTimeout.

См. раздел Оптимизация кодера MATLAB в разделе Сгенерированный код.

Режим постоянной проверки ввода, указанный как одно из значений в этой таблице.

СтоимостьОписание
'CheckValues'

Это значение является значением по умолчанию.

При вызове функции MEX проверяется, что значение, указанное для постоянного входного аргумента, является значением, указанным во время генерации кода.

Функцию MEX и исходную функцию MATLAB можно вызвать с одинаковыми аргументами. Поэтому для обеих функций можно использовать один и тот же тестовый файл.

Проверка значений может замедлить выполнение функции MEX.

'IgnoreValues'

При вызове функции MEX она игнорирует значение, обеспечиваемое для постоянного входного аргумента. Используется значение, указанное во время генерации кода.

Можно использовать один и тот же тестовый файл без дополнительных затрат на проверку значений постоянных аргументов.

'Remove'

Генератор кода удаляет постоянные входные аргументы из сигнатуры функции MEX. При вызове функции MEX значение для постоянного входного аргумента не указывается.

Этот параметр обеспечивает обратную совместимость.

См. раздел Постоянная проверка ввода в функциях MEX.

Нужно ли создавать пространства имен C++ для пакетов в коде MATLAB, указанном как одно из значений в этой таблице.

СтоимостьОписание
true

Это значение является значением по умолчанию.

Генератор кода создает пространства имен C++ для пакетов в коде MATLAB. См. раздел Организация сгенерированного кода C++ в пространства имен.

false

Генератор кода не создает пространства имен C++ для пакетов в коде MATLAB.

Зависимость:

  • Настройка TargetLang кому 'C++' включает этот параметр.

Типы данных: logical

Пространство имен для созданного кода C++. Генератор кода не создает код в пространстве имен, если не указан непустой символьный вектор.

См. раздел Организация сгенерированного кода C++ в пространства имен.

Зависимость:

  • Настройка TargetLang кому 'C++' включает этот параметр.

Пространство имен для кода C++, созданного для кода MathWorks. Если это свойство указано как пустой символьный вектор, генератор кода не создает такое пространство имен.

См. раздел Организация сгенерированного кода C++ в пространства имен.

Зависимость:

  • Настройка TargetLang кому 'C++' включает этот параметр.

Типы данных: char

Следует ли создавать классы C++ или структуры стилей C для классов MATLAB, указанных как одно из значений в этой таблице.

СтоимостьОписание
true

Это значение является значением по умолчанию.

Генератор кода создает классы C++ для классов MATLAB. См. раздел Создание классов C++ для классов MATLAB.

false

Генератор кода создает структуры стилей C для классов MATLAB.

Зависимость:

  • Настройка TargetLang кому 'C++' включает этот параметр.

Типы данных: logical

Пользовательский код, который отображается в верхней части каждого файла заголовка C/C + +, созданного из кода MATLAB, за исключениемrtwtypes.h и rtwhalf.h, задается как символьный вектор.

Включить папки для добавления к пути включения при компиляции созданного кода. Укажите список папок включения в качестве строкового массива, массива ячеек символьного вектора или символьного вектора.

Несколько имен папок, указанных как одно из значений в этой таблице.

СтоимостьОписание
Строковый массив

Строковый массив в CustomInclude. Например, cfg.CustomInclude = ["C:\Project","C:\Custom Files"];

Массив ячеек символьных векторов

Массив ячеек символьных векторов в CustomInclude. Например, cfg.CustomInclude = {'C:\Project','C:\Custom Files'};

Символьный вектор

Отдельные папки включения по pathsep символ в CustomInclude. Например, cfg.CustomInclude = ['C:\Project' pathsep 'C:\Custom Files'];

Примечание

Указание нескольких записей в объектах конфигурации кода с использованием символьных векторов будет удалено в следующей версии. Используйте строковый массив и массив ячеек символьного вектора. Дополнительные сведения см. в разделе Вопросы совместимости.

Пользовательский код для включения в создаваемую функцию инициализации, заданный как символьный вектор.

Файлы статической библиотеки для связи с сгенерированным кодом, указанным как строковый массив, массив ячеек символьного вектора или символьный вектор.

Несколько статических имен файлов библиотек, указанных как одно из значений в этой таблице.

СтоимостьОписание
Строковый массив

Строковый массив в CustomLibrary. Например, cfg.CustomLibrary = ["myLib1.lib","myLib2.lib"];

Массив ячеек символьных векторов

Массив ячеек символьных векторов в CustomLibrary. Например, cfg.CustomLibrary = {'myLib1.lib','myLib2.lib'};

Символьный вектор

Разделять имена файлов статической библиотеки на pathsep символ в CustomLibrary. Например, cfg.CustomLibrary = ['myLib1.lib' pathsep 'myLib2.lib'];

Примечание

Указание нескольких записей в объектах конфигурации кода с использованием символьных векторов будет удалено в следующей версии. Используйте строковый массив и массив ячеек символьного вектора. Дополнительные сведения см. в разделе Вопросы совместимости.

Исходные файлы для компиляции и связи с сгенерированным кодом, указанным как строковый массив, массив ячеек символьного вектора или символьный вектор.

Процесс построения выполняет поиск исходных файлов сначала в текущей папке, а затем в папках включения, указанных в CustomInclude. Если исходные файлы с одинаковым именем находятся в нескольких папках на пути поиска, процесс построения может использовать файл, отличный от указанного.

Предположим, что вы указали foo.cpp в качестве исходного файла. Если foo.c и foo.cpp находятся в пути поиска, вы не можете быть уверены, использует ли процесс построения foo.c или foo.cpp.

Несколько имен исходных файлов, указанных как одно из значений в этой таблице.

СтоимостьОписание
Строковый массив

Строковый массив в CustomSource. Например, cfg.CustomSource = ["mySrc1.c","mySrc2.c"];

Массив ячеек символьных векторов

Массив ячеек символьных векторов в CustomSource. Например, cfg.CustomSource = {'mySrc1.c','mySrc2.c'};

Символьный вектор

Разделять имена исходных файлов по pathsep символ в CustomSource. Например, cfg.CustomSource = ['mySrc1.c' pathsep 'mySrc2.c'];

Примечание

Указание нескольких записей в объектах конфигурации кода с использованием символьных векторов будет удалено в следующей версии. Используйте строковый массив и массив ячеек символьного вектора. Дополнительные сведения см. в разделе Вопросы совместимости.

Укажите код, который будет отображаться рядом с верхней частью каждого созданного .c или .cpp файл (за исключением rtwhalf.c или rtwhalf.cpp), вне любой функции. Укажите код в качестве символьного вектора.

Не указывайте определение статической функции C.

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

Объект конфигурации для создания кода для сетей глубокого обучения, указанный как coder.MklDNNConfig объект.

A coder.MklDNNConfig содержит параметры, специфичные для генерации кода C++ для глубокого обучения с помощью Intel ® MKL-DNN. Создание coder.MklDNNConfig объект, использование coder.DeepLearningConfig. Например:

cfg = coder.config('mex');
cfg.TargetLang = 'C++';
cfg.DeepLearningConfig = coder.DeepLearningConfig('mkldnn');

Для создания кода для сетей глубокого обучения требуется пакет поддержки Deep Learning Toolbox™ и MATLAB Coder™ Interface for Deep Learning Libraries.

См. раздел Создание кода для сетей глубокого обучения с MKL-DNN.

Примечание

Генерация кода MEX не поддерживается для глубокого обучения с помощью вычислительной библиотеки ARM ®.

Зависимость: Если DeepLearningConfig установлен, codegen наборы TargetLang кому C++.

Динамический режим выделения памяти, указанный как одно из значений в этой таблице.

СтоимостьОписание
'Threshold'

Это значение является значением по умолчанию.

Генератор кода динамически выделяет память в куче для массивов переменного размера, размер которых (в байтах) больше или равен DynamicMemoryAllocationThreshold.

'AllVariableSizeArrays'Генератор кода динамически распределяет память для всех массивов переменного размера в куче.
'Off'

Генератор кода статически распределяет память для массивов переменного размера в стеке.

Неограниченные массивы переменного размера требуют динамического выделения памяти.

Зависимости:

  • EnableVariableSizing включает этот параметр.

  • Установка этого параметра DynamicMemoryAllocation кому 'Threshold' включает DynamicMemoryAllocationThreshold параметр.

См. раздел Создание кода для данных переменного размера.

Реализация динамически выделенного массива на интерфейсе сгенерированной функции C/C + +, указанной как одно из значений в этой таблице.

СтоимостьОписание
'Auto'

Это значение по умолчанию. Если установить TargetLang параметр для 'C++' или 'C', это значение соответственно ведет себя как один и тот же флаг.

'C'

Созданный код использует стиль C emxArray структура данных для реализации динамически распределенных массивов. См. раздел Использование массивов C в генерируемых функциональных интерфейсах.

'C++'

Если установить TargetLang параметр для 'C', это значение отключено.

Созданный код использует coder::array шаблон класса для реализации динамически распределенных массивов. См. раздел Использование динамически распределенных массивов C++ в генерируемых функциональных интерфейсах.

Зависимость:

  • EnableVariableSizing включает этот параметр.

Порог размера для динамического выделения памяти массивам переменного размера, заданный как положительное целое число. Генератор кода использует динамическое выделение памяти для массивов переменного размера, размер которых (в байтах) больше или равен порогу.

Зависимость:

  • Настройка DynamicMemoryAllocation кому 'Threshold' включает этот параметр.

См. раздел Создание кода для данных переменного размера.

Автоматическое распараллеливание for петли, как указано в качестве одного из значений в этой таблице.

СтоимостьОписание
false

Это значение является значением по умолчанию.

Генератор кода не выполняет автоматическое распараллеливание for петли.

true

Генератор кода автоматически распараллеливает for петли в сгенерированном коде. Автоматическое распараллеливание может значительно повысить скорость выполнения генерируемого кода. См. раздел Автоматический параллелизм для циклов в сгенерированном коде.

Типы данных: logical

Выражение, эхо, указанное как одно из значений в этой таблице.

СтоимостьОписание
true

Это значение является значением по умолчанию.

Функция MEX отображает выходные данные операторов, которые не заканчиваются точкой с запятой.

false

Функция MEX не отображает выходные данные операторов, которые не заканчиваются точкой с запятой.

Это свойство не применяется к общим функциям визуализации, таким как disp, plot, или figure когда они называются как внешняя функция. Функции MEX отображают выходные данные этих функций независимо от наличия точки с запятой или значения EchoExpressions.

Автоматические вызовы внешних функций, указанные как одно из значений в этой таблице.

СтоимостьОписание
true

Это значение является значением по умолчанию.

Генератор кода рассматривает некоторые общие функции визуализации как внешние функции. Эти функции не должны объявляться как внешние с помощью coder.extrinsic. Эта возможность сокращает время, затрачиваемое на создание кода.

falseГенератор кода не рассматривает общие функции визуализации как внешние функции, если только вы не объявите их как внешние с помощью coder.extrinsic.

Некоторые общие функции визуализации plot, disp, и figure. См. раздел Использование механизма MATLAB для выполнения вызова функции в сгенерированном коде.

Режим отладки компилятора C, указанный как одно из значений в этой таблице.

СтоимостьОписание
false

Это значение является значением по умолчанию.

Генератор кода не включает режим отладки компилятора Си.

true

Генератор кода включает режим отладки компилятора Си. Если включен режим отладки, компилятор Си не оптимизирует код. Компиляция выполняется быстрее, но выполнение - медленнее.

Режим компиляции JIT, указанный как одно из значений в этой таблице.

СтоимостьОписание
false

Это значение является значением по умолчанию.

Генератор кода создает функцию C/C + + MEX, генерируя и компилируя код C/C + +.

true

Генератор кода использует технологию компиляции JIT для генерации функции MEX. Генератор кода создает функцию JIT MEX, которая содержит абстрактное представление кода MATLAB. При запуске функции JIT MEX MATLAB генерирует исполняемый код в памяти.

Для ускорения создания функций MEX установите EnableJIT кому true.

Компиляция JIT несовместима с определенными функциями и параметрами генерации кода, такими как пользовательский код или использование библиотеки OpenMP. Если вы указываете компиляцию JIT и генератор кода не может ее использовать, он генерирует функцию C/C + + MEX с предупреждением. ЕслиEnableJIT и EnableOpenMP являются true, и ваш код использует parfor, генератор кода использует компиляцию JIT и обрабатывает parfor-закольцовывает как for-контуры.

См. раздел Ускорение генерации MEX с помощью JIT-компиляции.

memcpy оптимизация, указанная как одно из значений в этой таблице.

СтоимостьОписание
true

Это значение является значением по умолчанию.

Если возможно, генератор кода использует memcpy оптимизация. Чтобы оптимизировать код, копирующий последовательные элементы массива, memcpy оптимизация заменяет код на memcpy звоните. Когда число копируемых элементов известно во время компиляции, генератор кода использует MemcpyThreshold для определения необходимости использования оптимизации. См. раздел Оптимизация memcpy.

false

Генератор кода не использует memcpy оптимизация.

Включение профилирования сгенерированной функции MEX, указанной как одно из значений в этой таблице.

СтоимостьОписание
false

Это значение является значением по умолчанию.

Генератор кода не включает инструментарий для профилирования в создаваемую функцию MEX.

true

Генератор кода включает в себя инструментарий для профилирования в сгенерированной функции MEX. Затем для профилирования MEX можно использовать профилировщик MATLAB. См. раздел Функции профиля MEX с помощью профилировщика MATLAB.

Параллелизация parfor-циклы, указанные как одно из значений в этой таблице.

СтоимостьОписание
true

Это значение является значением по умолчанию.

Если возможно, генератор кода использует библиотеку OpenMP для создания итераций цикла, которые выполняются параллельно.

false

Генератор кода обрабатывает parfor-закольцовывает как for-контуры.

Посмотрите parfor.

Использование библиотеки OpenMP несовместимо с компиляцией JIT. Если EnableJIT и EnableOpenMP являются true, генератор кода использует компиляцию JIT и обрабатывает parfor-закольцовывает как for-контуры.

Поддержка рекурсии во время выполнения, указанная как одно из значений в этой таблице.

СтоимостьОписание
true

Это значение является значением по умолчанию.

Рекурсивные функции разрешены в сгенерированном коде.

false

Рекурсивные функции не допускаются в созданном коде.

Некоторые стандарты кодирования, такие как MISRA ®, не допускают рекурсию. Чтобы увеличить вероятность создания кода, соответствующего MISRA C ®, установитеEnableRuntimeRecursion кому false.

Если код MATLAB требует рекурсии во время выполнения и EnableRuntimeRecursion является false, не удалось создать код.

См. раздел Создание кода рекурсивных функций.

Поддержка массива переменного размера, указанного как одно из значений в этой таблице.

СтоимостьОписание
true

Это значение является значением по умолчанию.

Массивы переменного размера разрешены для генерации кода.

false

Массивы переменного размера не разрешены для создания кода.

Зависимость:

  • Позволяет Dynamic memory allocation.

См. раздел Создание кода для массивов переменного размера.

Поддержка вызова внешней функции, указанная как одно из значений в этой таблице.

СтоимостьОписание
true

Это значение является значением по умолчанию.

Для внешней функции генератор кода создает вызов функции MATLAB. Генератор кода не генерирует внутренний код для функции.

false

Генератор кода игнорирует внешнюю функцию. Он не генерирует код для вызова функции MATLAB. Если внешняя функция влияет на выход функции MATLAB, генератор кода выдает ошибку компиляции.

Если установить ExtrinsicCalls кому false, сгенерированная функция MEX не может отображать сообщения времени выполнения от error или assert операторов в коде MATLAB. Функция MEX сообщает, что не может вывести сообщение об ошибке. Для просмотра сообщения об ошибке установите ExtrinsicCalls кому true и снова создайте функцию MEX.

Значение ExtrinsicCalls влияет на то, как функция MEX генерирует случайные числа для rand, randi, и randn. Если ExtrinsicCalls является trueфункция MEX использует поток глобальных случайных чисел MATLAB для генерации случайных чисел. В противном случае функция MEX использует автономный генератор случайных чисел.

См. раздел Использование механизма MATLAB для выполнения вызова функции в сгенерированном коде.

Режим секционирования файлов указан как одно из значений в этой таблице.

СтоимостьОписание
'MapMFileToCFile'

Это значение является значением по умолчанию.

Генератор кода создает отдельные файлы C/C + + для каждого файла языка MATLAB.

'SingleFile'Генератор кода создает один файл для функций C/C + +, которые сопоставляются с функциями точки входа MATLAB. Генератор кода создает отдельные файлы C/C + + для служебных функций.

См. раздел Как генерируется код разделов кодера MATLAB.

Создание только исходного кода, указанного как одно из значений в этой таблице.

СтоимостьОписание
false

Это значение является значением по умолчанию.

Генератор кода создает исходный код C/C + + и создает объектный код.

true

Генератор кода создает исходный код C/C + +, но не вызывает команду make или код объекта построения. При итерации между изменением кода MATLAB и созданием кода C/C + + только создание кода может сэкономить время.

Комментарии в сгенерированном коде, указанном как одно из значений в этой таблице.

СтоимостьОписание
true

Это значение является значением по умолчанию.

Генератор кода помещает комментарии в созданный код.

falseГенератор кода не помещает комментарии в созданный код.

Отчет о создании кода, указанный как одно из значений в этой таблице.

СтоимостьОписание
false

Это значение является значением по умолчанию.

Генератор кода создает отчет только в случае появления сообщений об ошибках или предупреждений, а также при установке LaunchReport кому true.

trueГенератор кода создает отчет о создании кода.

Режим глобальной синхронизации данных, указанный как одно из значений в этой таблице.

СтоимостьОписание глобальных данныхОписание постоянных глобальных данных

'SyncAlways' (по умолчанию)

Это значение является значением по умолчанию.

Синхронизация глобальных данных при вводе и выходе функции MEX и для внешних вызовов для обеспечения максимальной согласованности между MATLAB и созданной функцией MEX. Чтобы повысить производительность, если внешние вызовы не изменяют глобальные данные, используйте эту опцию с coder.extrinsic -sync:off для отключения синхронизации этих вызовов.

Проверка непротиворечивости постоянных глобальных данных при вводе функции MEX и после внешних вызовов. Если значения глобальных данных в глобальной рабочей области MATLAB несовместимы с глобальными значениями констант времени компиляции в функции MEX, функция MEX завершается ошибкой. Используйте coder.extrinsic -sync:off для отключения проверок непротиворечивости после определенных внешних вызовов.

'SyncAtEntryAndExits'

Синхронизация глобальных данных только при вводе и выходе функции MEX. Чтобы максимизировать производительность, если только несколько внешних вызовов изменяют глобальные данные, используйте эту опцию с coder.extrinsic -sync:on для включения синхронизации этих вызовов.

Проверка постоянных глобальных данных только при вводе функции MEX. Если значения глобальных данных в глобальной рабочей области MATLAB несовместимы с глобальными значениями констант времени компиляции в функции MEX, функция MEX завершается ошибкой. Используйте coder.extrinsic -sync:on параметр для включения проверок согласованности после определенных внешних вызовов.

'NoSync'

Отключает синхронизацию. Перед отключением синхронизации убедитесь, что функция MEX не взаимодействует с глобальными данными MATLAB. В противном случае могут возникнуть несоответствия между MATLAB и функцией MEX.

Отключает проверки непротиворечивости.

См. раздел Создание кода для глобальных данных.

Отображение потенциальных основных проблем с эффективностью компоновки строк, указанных как одно из значений в этой таблице.

СтоимостьОписание
true

В отчете о создании кода отображаются потенциальные проблемы с эффективностью, связанные с компоновкой основных строк. (Это значение является значением по умолчанию.)

falseВ отчете о создании кода не отображаются проблемы, связанные с компоновкой массива.

См. раздел Разработка кода для компоновки основного массива строк.

Назначение плавающего и двойного нуля с memset, указано в качестве одного из значений в этой таблице.

СтоимостьОписание
true

Это значение является значением по умолчанию.

Если возможно, генератор кода использует memset оптимизация для назначения нуля с плавающей запятой последовательным элементам массива. Чтобы назначить последовательные элементы массива, memset оптимизация использует memset звоните. Если в момент компиляции известно количество назначаемых элементов, генератор кода использует MemcpyThreshold для определения необходимости использования оптимизации. См. раздел Оптимизация memset.

false

Генератор кода не использует memset оптимизация для назначения плавающего и двойного нуля последовательным элементам массива.

Встроенное поведение на всех узлах вызова, где MathWorks вызывает другую функцию MathWorks, заданную как одно из значений в этой таблице.

СтоимостьОписание
'Speed'

Это значение является значением по умолчанию.

Использует внутреннюю эвристику для определения необходимости включения в узел вызова. Этот параметр обычно приводит к высокооптимизированному коду.

'Always'

Всегда выполняет встраивание на узле обработки вызовов.

'Readability'

Практически никогда не выполняет встроенные вызовы функций, за исключением вызовов очень небольших функций. Сохраняет модульность кода, не жертвуя слишком большой скоростью, когда это возможно. В результате получается хорошо читаемый код.

'Never'

Никогда не вставляет вызовы функций. Обеспечивает максимальную читаемость. Этот параметр может значительно снизить производительность созданного кода.

Даже если выбрать 'Always' или 'Never' для установки, в некоторых случаях генератор кода может не строго следовать этой инструкции. Например, при наличии конфликта coder.inline('always') или coder.inline('never') директива, размещенная внутри тела функции, переопределяет эту опцию. Дополнительные сведения см. в разделе Взаимодействие между различными элементами управления вложением.

См. раздел Управление встроением для точной настройки производительности и читаемости сгенерированного кода.

Встроенное поведение на всех узлах вызова, где написанная функция вызывает функцию MathWorks, или функция MathWorks вызывает написанную функцию. Указано как одно из значений в этой таблице.

СтоимостьОписание
'Speed'

Это значение является значением по умолчанию.

Использует внутреннюю эвристику для определения необходимости включения в узел вызова. Этот параметр обычно приводит к высокооптимизированному коду.

'Always'

Всегда выполняет встраивание на узле обработки вызовов.

'Readability'

Практически никогда не выполняет встроенные вызовы функций, за исключением вызовов очень небольших функций. Сохраняет модульность кода, не жертвуя слишком большой скоростью, когда это возможно. В результате получается хорошо читаемый код.

'Never'

Никогда не вставляет вызовы функций. Обеспечивает максимальную читаемость. Этот параметр может значительно снизить производительность созданного кода.

Даже если выбрать 'Always' или 'Never' для установки, в некоторых случаях генератор кода может не строго следовать этой инструкции. Например, при наличии конфликта coder.inline('always') или coder.inline('never') директива, размещенная внутри тела функции, переопределяет эту опцию. Дополнительные сведения см. в разделе Взаимодействие между различными элементами управления вложением.

См. раздел Управление встроением для точной настройки производительности и читаемости сгенерированного кода.

Встроенное поведение на всех узлах вызова, где написанная функция вызывает другую записанную функцию, заданную как одно из значений в этой таблице.

СтоимостьОписание
'Speed'

Это значение является значением по умолчанию.

Использует внутреннюю эвристику для определения необходимости включения в узел вызова. Этот параметр обычно приводит к высокооптимизированному коду.

'Always'

Всегда выполняет встраивание на узле обработки вызовов.

'Readability'

Практически никогда не выполняет встроенные вызовы функций, за исключением вызовов очень небольших функций. Сохраняет модульность кода, не жертвуя слишком большой скоростью, когда это возможно. В результате получается хорошо читаемый код.

'Never'

Никогда не вставляет вызовы функций. Обеспечивает максимальную читаемость. Этот параметр может значительно снизить производительность созданного кода.

Даже если выбрать 'Always' или 'Never' для установки, в некоторых случаях генератор кода может не строго следовать этой инструкции. Например, при наличии конфликта coder.inline('always') или coder.inline('never') директива, размещенная внутри тела функции, переопределяет эту опцию. Дополнительные сведения см. в разделе Взаимодействие между различными элементами управления вложением.

См. раздел Управление встроением для точной настройки производительности и читаемости сгенерированного кода.

Проверка целостности памяти, указанная как одно из значений в этой таблице.

СтоимостьОписание
true

Это значение является значением по умолчанию.

Созданный код обнаруживает нарушения целостности памяти и останавливает выполнение с помощью диагностического сообщения.

false

Созданный код не обнаруживает нарушений целостности памяти.

Настройка IntegrityChecks кому false может повысить производительность. Однако без проверки целостности памяти нарушения приводят к непредсказуемому поведению. Набор IntegrityChecks кому false только если проверена необходимость проверки границ массива и проверки размеров. Настройка IntegrityChecks кому false также отключает стек времени выполнения.

См. раздел Контрольные проверки времени выполнения.

Автоматическое открытие отчета о создании кода, указанного как одно из значений в этой таблице.

СтоимостьОписание
false

Это значение является значением по умолчанию.

Если возникают ошибки или предупреждения, или если GenerateReport является trueгенератор кода создает отчет, но не открывает его.

trueГенератор кода создает и открывает отчет о создании кода.

Включение исходного кода MATLAB в качестве комментариев в созданный код, указанный как одно из значений в этой таблице.

СтоимостьОписание
false

Это значение является значением по умолчанию.

Генератор кода не вставляет исходный код MATLAB в качестве комментариев в созданный код. Генератор кода не включает сигнатуру функции MATLAB в баннер функции.

true

Генератор кода вставляет исходный код MATLAB в качестве комментариев в созданный код. Тег отслеживания непосредственно предшествует каждой строке исходного кода. Тег отслеживания помогает найти соответствующий исходный код MATLAB. См. раздел Трассировка сгенерированного кода C/C + + к исходному коду MATLAB.

Генератор кода также включает сигнатуру функции MATLAB в баннер функции.

Зависимость:

  • GenerateComments включает этот параметр.

См. раздел Трассировка сгенерированного кода C/C + + к исходному коду MATLAB.

Минимальный размер (в байтах) для оптимизации memcpy или memset, заданный как положительное целое число.

Чтобы оптимизировать сгенерированный код, копирующий последовательные элементы массива, генератор кода пытается заменить код на memcpy звоните. Чтобы оптимизировать сгенерированный код, который присваивает литеральную константу последовательным элементам массива, генератор кода пытается заменить код на memset звоните.

Число байтов - это количество элементов массива для копирования или назначения, умноженное на количество байтов, необходимых для типа данных C/C + +.

Если число элементов для копирования или назначения является переменным (не известно во время компиляции), генератор кода игнорирует MemcpyThreshold собственность.

См. раздел Оптимизация memcpy и оптимизация memset.

Имя объекта, указанное как символьный вектор.

Команда для настройки обработки построения после создания функции MEX с помощью codegen, задается как символьный вектор.

См. раздел Настройка процесса построения.

Создание кода, использующего N-мерное индексирование, указанное как одно из значений в этой таблице.

СтоимостьОписание
false

Создание кода, использующего одномерную индексацию. (Это значение является значением по умолчанию.)

trueСоздание кода, использующего N-мерную индексацию.

См. раздел Создание кода, использующего N-мерное индексирование.

Имена переменных для сохранения в созданном коде, указанные как одно из значений в этой таблице.

СтоимостьОписание
'None'

Это значение является значением по умолчанию.

Генератору кода не требуется сохранять имена переменных. Он может повторно использовать любые переменные, удовлетворяющие требованиям к повторному использованию переменных.

Если в коде используются большие структуры или массивы, установка PreserveVariableNames кому 'None' может уменьшить использование памяти или повысить скорость выполнения.

'UserNames'

Генератор кода сохраняет имена, соответствующие переменным, определенным в коде MATLAB. Оно не заменяет имя переменной другим именем и не использует имя другой переменной. Чтобы улучшить удобочитаемость, установите PreserveVariableNames кому 'UserNames'. Затем можно легче отслеживать переменные в сгенерированном коде по переменным в коде MATLAB.

Настройка PreserveVariableNames кому 'UserNames' не мешает оптимизации удалить переменные из сгенерированного кода или не позволяет компилятору C/C + + повторно использовать переменные в сгенерированном двоичном коде.

'All'

Сохранить все имена переменных. Это значение параметра отключает повторное использование переменной. Используйте его только для тестирования или отладки, а не для производственного кода.

См. раздел Сохранение имен переменных в сгенерированном коде.

Имя переменной, в которую экспортируется информация о создании кода, указанное как символьный вектор. Генератор кода создает эту переменную в базовой рабочей области MATLAB. Эта переменная содержит информацию о параметрах генерации кода, входных файлах, созданных файлах и сообщениях генерации кода.

См. раздел Программно и кодировщик информации о создании отчетов по коду доступа. Свойства EventInfo.

Отчет о потенциальных различиях, указанный как одно из значений в этой таблице:

СтоимостьОписание
trueГенератор кода сообщает о потенциальных различиях поведения между сгенерированным кодом и кодом MATLAB. Возможные различия перечислены на закладке отчета о создании кода. Разность потенциалов - это разница, которая возникает во время выполнения только при определенных условиях.
falseГенератор кода не сообщает о потенциальных различиях.

См. раздел Отчеты о потенциальных различиях.

Список имен, которые генератор кода не должен использовать для функций или переменных, указанных как строковые массивы, массивы ячеек символьных векторов или символьные векторы.

Несколько зарезервированных имен, указанных как одно из значений в этой таблице.

СтоимостьОписание
Массивы строк

Строковый массив в ReservedNameArray. Например, cfg.ReservedNameArray = ["reserve1","reserve2","reserve3"].

Массив ячеек символьных векторов

Массив ячеек символьных векторов в ReservedNameArray. Например, cfg.ReservedNameArray = {'reserve1','reserve2','reserve3'}.

Векторы символов

Разделенный точкой с запятой список зарезервированных имен в ReservedNameArray. Например, cfg.ReservedNameArray = 'reserve1;reserve2;reserve3'.

Примечание

Указание нескольких записей в объектах конфигурации кода с использованием символьных векторов будет удалено в следующей версии. Используйте строковый массив и массив ячеек символьного вектора. Дополнительные сведения см. в разделе Вопросы совместимости.

Проверки быстродействия, указанные как одно из значений в этой таблице.

СтоимостьОписание
true

Это значение является значением по умолчанию.

Для остановки выполнения сгенерированной функции MEX можно использовать клавиши Ctrl + C.

false

Для завершения длительной работы функции MEX может потребоваться завершение MATLAB.

См. раздел Контрольные проверки времени выполнения.

Создание кода, использующего макет основного массива строк, указанный как одно из значений в этой таблице.

СтоимостьОписание
false

Создание кода, использующего макет массива «основной столбец». (Это значение является значением по умолчанию.)

trueСоздание кода, использующего макет массива «строка-большая».

См. раздел Создание кода, использующего макет главного массива строк.

Поддержка переполнения целых чисел, указанная как одно из значений в этой таблице.

СтоимостьОписание
true

Это значение является значением по умолчанию.

Генератор кода создает код для обработки переполнения целого числа. Переполнения насыщаются минимальным или максимальным значением, которое может представлять тип данных.

false

Генератор кода не создает код для обработки переполнения целых чисел. Не устанавливать SaturateOnIntegerOverflow кому false если вы не уверены, что ваш код не зависит от поддержки переполнения целых чисел. Если отключить поддержку переполнения целых чисел и включить проверку целостности, сгенерированный код приведет к ошибке переполнения. При отключении поддержки целочисленного переполнения и проверке целостности поведение переполнения зависит от целевого компилятора C. В стандарте C поведение для целочисленного переполнения не определено. Однако большинство компиляторов C переносятся при переполнении.

Этот параметр применяется только к встроенным целочисленным типам MATLAB. Он не применяется к двойным, одиночным или фиксированным типам данных.

См. раздел Отключение поддержки переполнения целых чисел или нефинитов.

Максимальное использование стека приложением в байтах, указанное как положительное целое число. Установите предел, который меньше доступного размера стека. В противном случае может произойти переполнение стека во время выполнения. Компилятор C обнаруживает переполнения стека и сообщает о них.

См. раздел Использование пространства в стеке управления.

Язык для использования в сгенерированном коде, указанный как 'C' или 'C++'. При указании C++ генератор кода переносит код C в файлы .cpp, чтобы можно было использовать компилятор C++ и интерфейс с внешними приложениями C++. Он не генерирует классы C++.

Зависимость: Если DeepLearningConfig установлен, codegen наборы TargetLang кому C++.

Отображение состояния процесса создания кода в командной строке MATLAB, указанного в качестве одного из значений в этой таблице.

СтоимостьОписание
'Silent'

При успешном создании кода без предупреждения все сообщения подавляются, в том числе при создании отчета.

Отображаются предупреждения и сообщения об ошибках.

'Info'

Это значение является значением по умолчанию.

По сравнению с 'Silent' при успешном создании кода отображаются следующие дополнительные сообщения:

  • Code generation successful

  • Ссылка на созданный отчет, если таковой имеется

'Verbose'

В дополнение к сообщениям, показанным в 'Info' режим, состояние генерации кода и сообщения целевого журнала построения.

Примеры

свернуть все

Напишите функцию MATLAB, из которой можно создать код. В этом примере используется функция myadd возвращает сумму его входных данных.

function c = myadd(a,b)
c = a + b;
end

Создайте объект конфигурации для создания функции MEX.

cfg = coder.config('mex');

Измените значения свойств, для которых не требуется использовать значения по умолчанию. Например, включить компиляцию JIT.

cfg.EnableJIT = true;

Создание кода с помощью codegen. Передать объект конфигурации в codegen с помощью -config вариант. Укажите, что входные аргументы являются скалярными двойными.

codegen myadd -config cfg -args {1 1} -report

Альтернативная функциональность

Чтобы использовать значения параметров конфигурации по умолчанию для генерации функции MEX, вместо создания объекта конфигурации можно вызвать codegen без указания объекта конфигурации или с помощью -config:mex вариант.

Вопросы совместимости

развернуть все

Изменение поведения в будущем выпуске

Представлен в R2011a