exponenta event banner

dspunfold

Создание многопоточного файла MEX из функции MATLAB

Описание

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

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

Примечание

Для этой функции требуется лицензия MATLAB Coder™.

Входные аргументы

свернуть все

Выбор

Ценности

Описание

Примеры

-args arguments

Массив ячеек

Типы аргументов для функции 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 - Вход находится в кадрах и может быть разделен на выборки без изменения поведения системы.

  • 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-кодированный файл

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

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

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

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

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

  • Pass - логическое значение, показывающее, совпадают ли выходные данные между созданным многопоточным файлом 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

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

    • P-кодированные функции MATLAB точки входа

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

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

Следующие ограничения применяются к функции анализатора, генерируемой dspunfold функция. Дополнительные сведения о функции анализатора см. в разделе «Самодиагностический анализатор» раздела «Подробнее» dspunfold.

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

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

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

  • Если выходные данные многопоточного файла 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

    Алгоритм не нуждается в бесконечном состоянии. Длина состояния фильтра FIR, поэтому алгоритм равен 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 точки входа. Если алгоритм прост, длину состояния легко определить. Например, длина состояния фильтра FIR - это количество отводов в фильтре - 1. В некоторых сценариях для оптимизации ускорения dspunfold выбирает длину состояния, которая отличается от длины состояния алгоритма, или длину состояния, заданную с помощью -s вариант. Например, когда длина состояния больше (потоков – 1) × кадры повторения, 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, предоставьте по крайней мере два различных кадра для каждого входного аргумента анализатора. Рамки добавляются вдоль первого размера. Анализатор чередует эти кадры, проверяя соответствие выходных сигналов. Отказ предоставить несколько кадров для каждого ввода может снизить эффективность анализатора и привести к ложноположительным результатам проверки. Другими словами, анализатор может производить пропуски = 1 , даже если указано неверное значение длины состояния. Анализатор чередуется максимум через 3 × (2 × threads × repeedtion) кадров. Если для алгоритма требуется более 3 × (2 × threads × repeedtion) кадров для проверки результатов, то анализатор не может точно проверить.

Совет

Общая информация

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

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

Если длина состояния меньше или равна (потоки – 1) × кадры повторения:

  • Не используйте случайное число в функции 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 даже для длины состояния Infinite. Возможной причиной является то, что входная функция MATLAB генерирует различные выходные результаты между последовательными прогонами даже для одних и тех же входных значений.

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

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

Быстрее

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

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

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

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

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

Алгоритмы

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

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