dspunfold

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

Описание

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 cellArray.

    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 cellArray. Эти входные параметры обнаруживают длину состояния алгоритма. Можно ввести 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 — Вход находится в системах координат и может быть подразделен на выборки, не изменяя поведение системы.

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

По умолчанию, 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, входят, помогают <mexfile name> и помогите <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