dspunfold

Генерирует многопоточный файл MEX от функции MATLAB

Синтаксис

dspunfold file
dspunfold options file

Описание

dspunfold file генерирует многопоточный файл MEX от точки входа функция MATLAB®, заданная file, с помощью разворачивающейся технологии. Разворачивание является методом, чтобы улучшить пропускную способность посредством распараллеливания. Многопоточный файл MEX усиливает многожильную архитектуру ЦП хоста - компьютера и может значительно улучшить скорость. В дополнение к многопоточному файлу MEX функция генерирует однопоточный файл MEX, самодиагностическую функцию анализатора и соответствующие справочные файлы.

dspunfold options file генерирует многопоточный файл MEX от функции MATLAB точки входа, заданной file, с помощью аргументов функции, заданных options.

Примечание

Эта функция требует лицензии MATLAB Coder™.

Входные параметры

свернуть все

Опция

Значения

Описание

Примеры

-args arguments

CellArray

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

Массив ячеек принимает числовые элементы, функцию coder.typeof и функцию coder.Constant.

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

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

  • dspunfold fcn -args {ones(10,1), 5}

    dspunfold извлекает тип (размер, класс и сложность) информация от элементов в массиве ячеек arguments.

    fcn является функция MATLAB точки входа.

  • dspunfold fcn -args {coder.typeof(ones(10,1)), coder.typeof(5)}

    coder.typeof используется, чтобы задать типы аргументов fcn.

  • dspunfold fcn -args {coder.Constant(ones(10,1)), coder.Constant(5)}

  • dspunfold fcn -args {}

    По умолчанию arguments является {}. {} пустой ячейки массивов указывает, что fcn не принимает входных параметров.

-o output

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

Имя вывода многопоточный файл MEX, заданный как вектор символов. Если никакое имя output не задано, имя сгенерированного многопоточного файла MEX наследовано от входной функции MATLAB с суффиксом '_mt'. dspunfold также добавляет специфичное для платформы расширение этого имени. Кроме того, dspunfold генерирует однопоточный файл MEX с суффиксом '_st' и файл испытательного стенда с суффиксом '_analyzer'.

  • Никакое имя output не задано

    dspunfold fcn

    Файлы сгенерировали: fcn_mt.mexw64, fcn_st.mexw64, fcn_analyzer.p

  • Имя output задано

    dspunfold fcn -o foo

    Файлы сгенерировали: foo.mexw64, foo_st.mexw64, foo_analyzer.p

-s statelength

Скалярное целое число, больше, чем или равный нулю

auto

Длина состояния алгоритма в функции MATLAB точки входа, заданной как скалярное целое число, больше, чем или равный нулю, или auto. По умолчанию statelength является кадрами zero, указывая, что алгоритм является не сохраняющим состояние.

Если по крайней мере одной записью frameinputs является true, statelength рассматривается в выборках.

Для получения информации о кадрах и выборках, смотрите Выборку - и Основанные на кадре Концепции

-s auto инициировал автоматическое обнаружение длины состояния. В этом режиме необходимо предоставить числовые входные параметры массиву ячеек arguments. Эти входные параметры обнаруживают длину состояния алгоритма. Можно ввести coder.Constant, но не coder.typeof. Когда автоматическое обнаружение длины состояния вызывается, рекомендуется, чтобы вы предоставили случайные входные параметры массиву arguments. Смотрите Автоматическое Обнаружение Длины состояния

  • dspunfold fcn -args {randn(10,1), randn(10,1), randn(10,1)} -s 3 -f [false, false, false]

    Длина состояния является кадрами three.

  • dspunfold fcn -args {randn(10,1), randn(10,1), randn(10,1)} -s 3 -f [true, false, false]

    Длина состояния является выборками three. Длина состояния рассматривается в выборках, потому что по крайней мере одной записью опции -f является true.

  • dspunfold fcn -args {randn(10,1), randn(10,1), randn(10,1)} -s auto

    Автоматическое обнаружение длины состояния вызывается.

  • dspunfold fcn -args {coder.typeof (randn(10,1)), coder.typeof(randn(10,1)), coder.typeof(randn(10,1))} -s auto генерирует это сообщение об ошибке: The input argument 1 is of type coder.PrimitiveType which is not supported when using -s auto

-f frameinputs

логический скаляр

вектор логических значений

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

  • tRUE Вход находится в кадрах и может быть подразделен на выборки, не изменяя поведение системы.

  • ложь Введите не может быть подразделен на выборки, не изменяя поведение системы. Например, вы не можете подразделить коэффициенты фильтра, не изменяя характеристики фильтра.

По умолчанию frameinputs является false.

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

Чтобы задать statelength в выборках, установите по крайней мере одну запись frameinputs к true.

Если frameinputs не задан, модуль statelength является кадрами.

  • dspunfold fcn -args {randn(10,1), randn(10,1), randn(10,1)} -s 3 -f true

    Все входные параметры отмечены как кадры. Длина состояния является выборками three.

  • dspunfold fcn -args {randn(10,1), randn(10,1), randn(10,1)} -s 3 -f [true, false, false]

    Длина состояния является выборками three.

  • dspunfold fcn -args {randn(10,1), randn(10,1), randn(10,1)} -s 3

    Значением по умолчанию frameinputs является false. Длина состояния является кадрами three.

-r repetition

Положительное целое число

Фактор повторения раньше генерировал многопоточный файл MEX, заданный как положительное целое число. Значением по умолчанию repetition является 1. Смотрите Фактор Повторения.

dspunfold fcn -args {randn(10,2), randn(20,2), randn(30,3)} -r 2

-t threads

Положительное целое число

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

dspunfold fcn -args {randn(10,1), randn(20,2), randn(30,3)} -t 4

-v verbose

Логический скаляр

Опция, чтобы показать многословный вывод во время генерации кода, заданной как true или false. Значением по умолчанию является true.

  • dspunfold fcn -args {randn(10,1), randn(20,2), randn(30,3)} -v true

  • dspunfold fcn -args {randn(10,1), randn(20,2), randn(30,3)} -v false

Функция MATLAB точки входа, от которой dspunfold генерирует многопоточный файл MEX. Функция должна поддержать генерацию кода.

Пример: dspunfold fcn -args {randn(10,1),randn(10,2),randn(20,1)}

fcn является функция MATLAB точки входа, и {randn(10,1),randn(10,2),randn(20,1)} его входные параметры.

Выходные файлы

Когда вы вызываете dspunfold на функцию MATLAB точки входа, dspunfold генерирует следующие файлы.

Файл

Значение

Описание

Примеры

Многопоточный файл MEX

Файл MEX

Многопоточный файл MEX сгенерирован от функции MATLAB точки входа. Файл MEX наследовал имя output. Если никакое имя output не задано, имя этого файла наследовано от функции MATLAB с суффиксом '_mt'. Специфичное для платформы расширение также добавляется к имени.

  • dspunfold fcn -o foo генерирует foo.mexw64

  • dspunfold fcn генерирует fcn_mt.mexw64

Справочный файл для многопоточного файла MEX

Файл MATLAB

Справочный файл MATLAB для многопоточного файла MEX. Справочный файл имеет то же имя как файл MEX, но с '.m' расширение. Чтобы вызвать справочный файл, введите help <MEX filename> в подсказке команды MATLAB.

Этот справочный файл отображает информацию о том, как вызвать файл MEX, его синтаксис, latency и типы (размер, класс и сложность) входных параметров к файлу MEX. Кроме того, справочный файл документирует параметры, используемые dspunfoldThreads, Repetition и State length. Эта информация полезна, когда вы вызываете файл MEX. Синтаксис, чтобы вызвать файл MEX должен совпасть с синтаксисом, показанным в справочном файле.

  • help foo

  • help fcn_mt

Однопоточный файл MEX

Файл MEX

Однопоточный файл MEX сгенерирован от функции MATLAB точки входа. Файл MEX наследовал имя output с суффиксом '_st'. Если никакое имя output не задано, имя этого файла наследовано от функции MATLAB с суффиксом '_st'. Специфичное для платформы расширение также добавляется к имени. Используйте этот файл в качестве сравнительного теста, чтобы выдержать сравнение со скоростью многопоточного файла MEX.

  • dspunfold fcn -o foo генерирует foo_st.mexw64

  • dspunfold fcn генерирует fcn_st.mexw64

Справочный файл для однопоточного файла MEX

Файл MATLAB

Справочный файл MATLAB для однопоточного файла MEX. Справочный файл имеет то же имя как файл MEX, но с '.m' расширение. Чтобы вызвать справочный файл, введите help <MEX filename> в подсказке команды MATLAB.

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

  • help foo_st

  • help fcn_st

Самодиагностическая функция анализатора

Файл P-coded

report = function_analyzer (input 1, input 2,...input n) измеряет различие в скорости между многопоточным файлом MEX и однопоточным файлом MEX. Этот файл проверяет, что выходные значения соответствуют.

report = function_analyzer('latency') сообщает о задержке многопоточного файла MEX, введенного путем разворачивания.

report содержит следующие поля:

  • Задержка — значение задержки (в кадрах)

  • Ускорение — различие в ускорении между многопоточным файлом MEX и однопоточным файлом MEX. Если вы задали опцию latency, значением этого поля является пустой [].

  • Передача — Логическое значение, которое показывает, соответствуют ли выходные параметры между сгенерированным многопоточным файлом MEX и однопоточным файлом MEX. Если вы задали опцию latency, значением этого поля является пустой [].

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

Анализатор наследовал имя output с суффиксом '_analyzer'. Если никакое имя output не задано, имя этого файла наследовано от функции MATLAB с суффиксом '_analyzer'.

  • Несколько кадров с различными значениями заданы по первому измерению

    Пример 1: report = foo_analyzer(randn(10*2,1), randn(20*2,2), randn(30*3,3))

    Пример 2: report = foo_analyzer([randn(10,1);randn(10,1)],[randn(20,1);randn(20,1)],[randn(30,1);randn(30,1);randn(30,1)])

  • report = foo_analyzer('latency')

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

Файл MATLAB

Справочный файл для самодиагностической функции анализатора. Справочный файл имеет то же имя как файл MEX, но с '.m' расширение. Чтобы вызвать справочный файл, введите help <function_analyzer> в MATLAB.

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

help foo_analyzer

Ограничения

Общие ограничения:

  • На Windows и Linux, необходимо использовать компилятор, который поддерживает интерфейс приложения Open Multiprocessing (OpenMP). См. Поддерживаемые Компиляторы.

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

  • Если сгенерированный код использует большой объем памяти, чтобы сохранить локальные переменные вокруг 4 MB на платформе Windows, сгенерированный многопоточный файл MEX может иметь неожиданное поведение. Этот предел меняется в зависимости от каждой платформы. Как обходное решение, уменьшайте размер входных сигналов или реструктурируйте функцию MATLAB, чтобы использовать меньше локальной памяти.

  • dspunfold не поддерживает:

    • varargin и varargout в функции MATLAB

    • вводы и выводы переменного размера

    • Функции MATLAB точки входа P-coded

    • массивы ячеек как вводы и выводы

Ограничения анализатора:

Следующие ограничения применяются к функции анализатора, сгенерированной функцией dspunfold. Для получения дополнительной информации о функции анализатора см. 'Самодиагностику Анализатор’ в разделе 'More About' dspunfold.

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

  • Если алгоритм в функции MATLAB точки входа выбирает свою длину состояния на основе входных значений, анализатор может обеспечить различные результаты pass для различных входных значений. Для примера смотрите, что FIR_Mean функционирует в том, Почему Анализатор Выбирает Wrong State Length?.

  • Если вход к функции MATLAB точки входа действительно сразу влияет на вывод, анализатор может выдать ложные положительные результаты pass. Для примера смотрите, что Input_Output функционирует в том, Почему Анализатор Выбирает Zero State Length?.

  • Если выходные результаты многопоточного файла MEX и однопоточного файла MEX соответствуют статистически, но не соответствуют численно, анализатор не передает. Рассмотрите функцию FilterNoise, которая следует, который фильтрует случайный шумовой сигнал с КИХ-фильтром. Вызовы функции randn из себя, чтобы сгенерировать случайный шум. Следовательно, выходные результаты функции FilterNoise соответствуют статистически, но не соответствуют численно.

    function Output = FilterNoise(x)
    
    persistent FIRFilter
    if isempty(FIRFilter)
        FIRFilter = dsp.FIRFilter('Numerator',fir1(12,0.4));
    end
    Output = FIRFilter(x+randn(1000,1));
    
    end
    
    Когда вы запускаетесь, автоматический инструмент обнаружения длины состояния работает на FilterNoise, инструмент обнаруживает бесконечную длину состояния. Поскольку инструмент не может найти числовое соответствие для длины конечного состояния, он выбирает бесконечную длину состояния.

    dspunfold FilterNoise -args {randn(1000,1)} -s auto 
    Analyzing input MATLAB function FilterNoise
    Creating single-threaded MEX file FilterNoise_st.mexw64
    Searching for minimal state length (this might take a while)
    Checking stateless ... Insufficient
    Checking 1 ... Insufficient
    Checking Infinite ... Sufficient
    Checking 2 ... Insufficient
    Minimal state length is Inf
    Creating multi-threaded MEX file FilterNoise_mt.mexw64
    Warning: The multi-threading was disabled due to performance considerations. 
    This happens when the state length is greater than or
    equal to (Threads-1)*Repetition frames (3 frames in this case). 
    > In coder.internal.warning (line 8)
      In unfoldingEngine/BuildParallelSolution (line 25)
      In unfoldingEngine/generate (line 207)
      In dspunfold (line 234) 
    Creating analyzer file FilterNoise_analyzer

    Для алгоритма не нужно бесконечное состояние. Длина состояния КИХ-фильтра, следовательно алгоритмом является 12.

    Вызовите dspunfold с набором длины состояния к 12.

    dspunfold FilterNoise -args {randn(1000,1)} -s 12 -f true
    Analyzing input MATLAB function FilterNoise
    Creating single-threaded MEX file FilterNoise_st.mexw64
    Creating multi-threaded MEX file FilterNoise_mt.mexw64
    Creating analyzer file FilterNoise_analyzer

    Запустите функцию анализатора.

    FilterNoise_analyzer(randn(1000*4,1))
    Analyzing multi-threaded MEX file FilterNoise_mt.mexw64  ... 
    Latency = 8 frames
    Speedup = 0.5x
    Warning: The output results of the multi-threaded MEX file FilterNoise_mt.mexw64 do not 
    match the output results of the single-threaded MEX file FilterNoise_st.mexw64. Check that 
    you provided the correct state length value to the dspunfold function when you generated the 
    multi-threaded MEX file FilterNoise_mt.mexw64. For best practices and possible solutions to 
    this problem, see the 'Tips' section in the dspunfold function reference page. 
    > In coder.internal.warning (line 8)
      In FilterNoise_analyzer 
    ans = 
        Latency: 8
        Speedup: 0.4970
           Pass: 0

    Анализатор ищет числовое соответствие и приводит верификацию к сбою, даже при том, что сгенерированный многопоточный файл MEX допустим.

Ограничения ускорения:

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

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

Больше о

свернуть все

Длина состояния

Длина состояния алгоритма.

Наиболее часто длина состояния, используемая dspunfold, совпадает с длиной состояния алгоритма в функции MATLAB точки входа. Если алгоритм прост, длину состояния легко определить. Например, длина состояния КИХ-фильтра является количеством касаний в фильтре – 1. В некоторых сценариях, чтобы оптимизировать ускорение, dspunfold выбирает длину состояния, которая отличается от длины состояния алгоритма, или длина состояния задала использование опции -s. Например, когда длина состояния больше, чем (threads – 1) × кадры repetition, dspunfold полагает, что длина состояния бесконечна. Кроме того, многопоточность отключена из-за факторов производительности.

Автоматическое обнаружение длины состояния

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

В комплексных алгоритмах не легко определить длину состояния аналитически. В таких сценариях используйте анализатор, чтобы вычислить длину состояния. Когда вы устанавливаете -s на auto, dspunfold вызывает анализатор. Анализатор вычисляет выходные параметры для различных длин состояния и обнаруживает минимальную длину состояния, для которой соответствуют выходные параметры многопоточного файла MEX и однопоточного файла MEX. Анализатор использует числовое значение входных параметров, данных -args. Чтобы обнаружить самую эффективную длину состояния, предоставьте случайные входные параметры -args. В этом режиме вы не можете вход coder.typeof к arguments. Из-за дополнительного анализа этот инструмент требует, время, чтобы сгенерировать увеличения файла MEX.

Когда вы используете автоматическое обнаружение длины состояния на алгоритме с путями выполнения кода, которые зависят от входных значений, используют входные параметры, которые выбирают путь выполнения кода с самой долгой длиной состояния. Кроме того, входные параметры должны иметь мгновенный эффект на вывод. Если входные параметры выбирают путь выполнения кода, который инициировал ошибки периода выполнения, автоматические остановки обнаружения длины состояния, и анализатор - также. Убедитесь, что функция MATLAB поддерживает генерацию кода и не имеет ошибок времени выполнения для входных параметров под тестом. Прежде, чем вызов dspunfold, вызовите codegen на точке входа функция MATLAB. Кроме того, моделируйте точку входа функция MATLAB, чтобы убедиться, что это не имеет никаких ошибок времени выполнения.

Потоки

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

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

Фактор повторения

Фактором повторения является количество последовательных кадров, обработанных каждым потоком на одном шаге обработки.

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

Самодиагностический Анализатор

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

Если вы задаете неправильное значение длины состояния, выходные параметры обычно не соответствуют. Чтобы проверять на числовое соответствие между многопоточным файлом MEX и однопоточным файлом MEX, обеспечьте по крайней мере два различных кадра для каждого входного параметра анализатора. Кадры добавлены по первому измерению. Анализатор чередуется между этими кадрами при проверке, что выходные параметры соответствуют. Отказ обеспечить несколько кадров для каждого входа может уменьшить эффективность анализатора и может привести к ложным положительным результатам верификации. Другими словами, анализатор может произвести pass = результаты 1, даже когда неправильное значение длины состояния задано. Анализатор чередует максимум через 3 × (2 × threads × repetition) кадры. Если ваш алгоритм требует, чтобы больше чем 3 × (2 × threads × repetition) кадры проверили результаты, то анализатор не может проверить точно.

Советы

Общий

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

  • Не используйте coder.extrinsic во входной функции MATLAB. Сгенерированный файл MEX может иметь неожиданное поведение.

Когда длина состояния меньше чем или равна (threads – 1) × кадры repetition:

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

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

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

  • Не получайте доступ к ресурсам ввода-вывода из многопоточного файла MEX. Сгенерированный файл MEX может иметь неожиданное поведение. Эти ресурсы включают средства записи файла и читателей, сокеты UDP, и аудиоплееры и устройства записи.

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

Рабочий процесс

  • Чтобы сгенерировать допустимый многопоточный файл MEX с необходимым ускорением и задержкой, следуйте за Рабочим процессом для Генерации Многопоточного файла MEX, использующего dspunfold.

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

  • После генерации многопоточного файла MEX с помощью dspunfold запустите функцию анализатора. Убедитесь, что анализатор функционирует передачи. Исключение к этому правилу - когда алгоритм приводит к результатам, которые соответствуют статистически, но не численно. В этом исключении функция анализатора не делает pass, даже при том, что функция dspunfold генерирует допустимый многопоточный файл MEX. См. 'Ограничения Анализатора' для примера.

  • Для справки при использовании файла MEX и анализатора, в подсказке команды MATLAB, вводят help <mexfile name> и help <analyzer name>.

Длина состояния

  • Если вы выбираете длину состояния, которая больше, чем или равна значению точной длины состояния, передач анализатора. Если анализатор перестал работать, увеличьте длину состояния, регенерируйте файл MEX и проверьте снова.

  • Если длина состояния больше, чем 0, входные параметры, отмеченные как кадры (через опцию -f), должны все иметь те же размерности.

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

Автоматическое обнаружение длины состояния

Когда вы устанавливаете -s на auto:

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

  • Предоставьте случайные входные параметры -args.

  • Выберите входные параметры, которые имеют мгновенный эффект на вывод. Смотрите, Почему Анализатор Выбирает Длину Нулевого состояния?.

Анализатор

  • Убедитесь, что выходные параметры многопоточного файла MEX и однопоточного файла MEX не содержат NaN или Inf. Анализатор не может сделать числовых проверок и возвращает pass как false. Автоматический инструмент обнаружения длины состояния обнаруживает бесконечную длину состояния и выводит предупреждение

    Предупреждение

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

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

  • Предоставьте входные параметры анализатору, которые приводят к эффективному покрытию кода.

Ускорение

  • Чтобы улучшить ускорение многопоточного файла MEX, задайте точную длину состояния в выборках. Можно задать длину состояния в выборках путем установки по крайней мере одной записи frameinputs к true. Использование выборок уменьшает издержки и увеличивает ускорение.

  • Чтобы увеличить ускорение за счет большей задержки, вы можете:

    • Увеличьте фактор повторения. Используйте опцию -r.

    • Увеличьте число потоков. Используйте опцию -t.

  • Для каждого входа, который может быть разделен на выборки, не изменяя поведение алгоритма, устанавливает состояние кадра на true с помощью опции -f. Вход затем рассматривается в выборках, которые могут увеличить ускорение сгенерированного многопоточного файла MEX.

Алгоритмы

Многопоточный файл MEX буферизует кадры нескольких-входных-сигналов в буфер 2 × threads × кадры repetition, где threads является количеством потоков, и repetition является фактором повторения. Файл MEX обрабатывает эти кадры одновременно, с помощью нескольких ядер. Этот процесс вводит некоторую детерминированную задержку, где latency = 2 × threads × repetition. Задержка обменяна с ускорением, которое вы можете получить путем увеличения числа потоков или фактора повторения.

Введенный в R2015b