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 set на скалярное логическое значение устанавливает состояние системы координат всех входов одновременно.

Чтобы задать 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

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

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

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

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

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

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

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

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

    Алгоритму не нужно бесконечное состояние. Длина состояния конечной импульсной характеристики фильтра, следовательно, алгоритм 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 функция, чтобы убедиться, что у нее нет ошибок времени выполнения.

Нити

The -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> и помогают <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 × <reservedrangesplaceholder1> × <reservedrangesplaceholder0>. Задержка сходится со скоростью, которую вы можете получить, увеличивая количество потоков или коэффициент повторения.

Введенный в R2015b