Оцените количество операторов для алгоритма MATLAB

В этом примере показано, как оценить количество арифметических операторов в алгоритме, написанном в MATLAB. Анализируйте основание 2 Алгоритма бпф и сгенерируйте отчеты, показывающие использование оператора.

Основание 2 алгоритма бпф и испытательный стенд

Анализируйте количество арифметических операторов в soc_analyze_FFT_radix2 функция. Вычислите количество арифметических операторов, используемых во время выполнения функции. Испытательный стенд soc_analyze_fft_tb обеспечивает стимул и проверяет реализацию основания 2 Алгоритма бпф (soc_analyze_FFT_radix2) против функции БПФ MATLAB (fft) .

Откройте soc_analyze_FFT_tb.m файл в редакторе MATLAB, чтобы исследовать структуру испытательного стенда.

open soc_analyze_FFT_tb

Испытательный стенд генерирует тестовый сигнал с двумя синусоидами, один на уровне 50 Гц с амплитудой 0,7 и другой на уровне 120 Гц с амплитудой 1. Сигнал имеет частоту дискретизации 1 кГц с аддитивным случайным шумом. Испытательный стенд вычисляет FFT выход для вышеупомянутого тестового сигнала для длины БПФ, заданной как FFTLen аргумент. Испытательный стенд сравнивает выход функции к выходу функции БПФ MATLAB (fft) и строит результаты.

Сгенерируйте отчеты количества оператора для 1 024 оснований точек 2 БПФ

Чтобы оценить количество операторов для основания 2 БПФ, используйте socFunctionAnalyzer функция, и предоставляет функции испытательного стенда soc_analyze_FFT_tb в качестве аргумента. По умолчанию функция генерирует отчеты для всех функций, вызванных из функции испытательного стенда, и перечисляет все используемые операторы.

Сгенерировать отчет только для алгоритма (soc_analyze_FFT_radix2), а не для испытательного стенда, используйте 'RestrictFunction' аргумент пары "имя-значение" со значением 'soc_analyze_FFT_radix2.m'. Используйте 'RestrictOperator' аргумент пары "имя-значение", чтобы отфильтровать отчет и показать только три оператора путем устанавливания его значения к {'ADD','MINUS','MUL'}. Установите 'OutputFolder' аргумент пары "имя-значение", чтобы задать местоположение папки для сгенерированных отчетов.

Выполните эту команду, чтобы сгенерировать отчеты для симуляции основания с 1024 точками 2 Алгоритма бпф. Команда симулирует проект при подсчете операторов и генерации отчета.

socFunctionAnalyzer('soc_analyze_FFT_tb.m','FunctionInputs',1024, ...
    'Folder','report_1024','IncludeFunction','soc_analyze_FFT_radix2.m', ...
    'IncludeOperator',{'ADD','MINUS','MUL'});
Generating operators analysis report for /tmp/BR2020bd_1444674_32127/publish_examples0/tp0f52d5c3/ex65369380/soc_analyze_FFT_tb.m ...
Saving report files in /tmp/BR2020bd_1444674_32127/publish_examples0/tp0f52d5c3/ex65369380/report_1024.
Operator estimate: <a href="matlab: socAlgorithmAnalyzerReport('/tmp/BR2020bd_1444674_32127/publish_examples0/tp0f52d5c3/ex65369380/report_1024/soc_analyze_FFT_tb.mat')">Open report viewer</a> 
Done.

Наблюдайте основание 2 Алгоритма бпф и ссылочная функция БПФ MATLAB (fft) результаты в симуляции строят выше. Проверьте, что те результаты очень похожи, и различие между теми результатами в порядке 10e-12.

Проанализируйте доклад оценки оператора

Откройте отчет путем щелчка по Открытой ссылке средства просмотра отчета на консоли MATLAB. В качестве альтернативы можно использовать socAlgorithmAnalyzerReport функция. Отчет обеспечивает два представления. Первое представление является представлением оператора, которое представляет данные, таким образом, что каждая строка соответствует оператору. Чтобы использовать это представление, нажмите Operator View на панели инструментов отчета. Второе представление является представлением алгоритма, где каждая строка соответствует функции MATLAB. Чтобы использовать это представление, нажмите Algorithm View на панели инструментов отчета.

По умолчанию отчет открывается представлением оператора. Отчет открывает совокупное представление каждого оператора и типа данных. Например, для 1 024 оснований точек 2 БПФ там в общей сложности 91 649 сложений [ADD (+)] типа данных double и 67 094 вычитания [MINUS (-)] типа данных int32. Чтобы получить подробный отчет для каждого оператора, расширьте тот оператор. Отчет показывает количество оператора, как используется в различных функциях. Например, бабочка функционируют l_butterfly содержит четыре double сложения, которые выполнили 5,120 раз каждого. Проследите оператор путем нажатия на одну из ссылок в последнем столбце отчета подсветить местоположение оператора в soc_analyze_FFT_radix2 файл.

Переключитесь на представление алгоритма путем нажатия кнопки Algorithm View. Расширьте отчет и просмотрите счета оператора для всех функций под файлом soc_analyze_FFT_radix2.m. Можно просмотреть количества каждого оператора с их типами данных путем расширения другого уровня. Можно также использовать кнопки Expand All и Collapse All на панели инструментов отчета, чтобы переместиться по отчету. Чтобы проследить определенный оператор до кода MATLAB, щелкните по соответствующей ссылке в Ссылке столбца на источник в отчете.

Сгенерируйте отчеты для 512 оснований точек 2 БПФ

Чтобы наблюдать корреляцию между количеством операций и числом точек в БПФ, сравните предыдущий отчет с тем для 512 оснований точек 2 БПФ. Сгенерируйте отчеты для 512 оснований точек 2 БПФ путем передачи значения 512 к 'FunctionInputs' аргумент пары "имя-значение" как в этой команде.

 socFunctionAnalyzer('soc_analyze_FFT_tb.m','FunctionInputs',512, ...
    'Folder','report_512','IncludeFunction','soc_analyze_FFT_radix2.m', ...
    'IncludeOperator',{'ADD','MINUS','MUL'});
Generating operators analysis report for /tmp/BR2020bd_1444674_32127/publish_examples0/tp0f52d5c3/ex65369380/soc_analyze_FFT_tb.m ...
Saving report files in /tmp/BR2020bd_1444674_32127/publish_examples0/tp0f52d5c3/ex65369380/report_512.
Operator estimate: <a href="matlab: socAlgorithmAnalyzerReport('/tmp/BR2020bd_1444674_32127/publish_examples0/tp0f52d5c3/ex65369380/report_512/soc_analyze_FFT_tb.mat')">Open report viewer</a> 
Done.

Для 512 оснований точек 2 БПФ агрегированный отчет показывает предполагаемое количество 41 473 сложений типа данных double, 32 026 вычитаний типа int32 и 11 316 вычитаний типа данных double. Ранее с 1 024 основаниями точек 2 БПФ, эти значения были 91,649, 70,173 и 25,146 соответственно. Расширьте отчет получить подробное использование оператора в l_butterfly функция. В этом случае функция выполняется 2304 раза для 512 длин, по сравнению с 5 120 разами для 1 024 длин).

Заключение

Используйте socFunctionAnalyzer функционируйте, чтобы оценить и анализировать количество арифметических операторов в функции MATLAB для основания 2 БПФ. Используйте различные опции средства просмотра, чтобы проанализировать доклад.

  • в совокупном общем представлении

  • подробный на представление оператора и на функцию MATLAB

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

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

Для просмотра документации необходимо авторизоваться на сайте