В этом примере показано, как оценить количество арифметических операторов в алгоритме, написанном в MATLAB. Анализируйте основание 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
аргумент. Испытательный стенд сравнивает выход функции к выходу fft
MATLAB функция и графики результаты.
Чтобы оценить количество операторов для основания 2 БПФ, используйте socFunctionAnalyzer
функция, и предоставляет функции испытательного стенда soc_analyze_FFT_tb
в качестве аргумента. По умолчанию функция генерирует отчеты для всех функций, вызванных из функции испытательного стенда, и перечисляет все используемые операторы.
Сгенерировать отчет только для алгоритма (soc_analyze_FFT_radix2
), а не для испытательного стенда, используйте 'RestrictFunction'
аргумент пары "имя-значение" со значением 'soc_analyze_FFT_radix2.m'
. Используйте 'RestrictOperator'
аргумент пары "имя-значение", чтобы отфильтровать отчет и показать только три оператора путем устанавливания его значения к {'ADD','MINUS','MUL'}
. Установите 'OutputFolder'
аргумент пары "имя-значение", чтобы задать местоположение папки для сгенерированных отчетов.
Excecute эта команда, чтобы сгенерировать отчеты для симуляции основания с 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 \\fs-58-ah\vmgr$\home08\jchevali\Documents\MATLAB\Examples\soc-ex65369380\soc_analyze_FFT_tb.m ... Saving report files in \\fs-58-ah\vmgr$\home08\jchevali\Documents\MATLAB\Examples\soc-ex65369380\report_1024. Operator estimate: <a href="matlab: socAlgorithmAnalyzerReport('\\fs-58-ah\vmgr$\home08\jchevali\Documents\MATLAB\Examples\soc-ex65369380\report_1024\soc_analyze_FFT_tb.mat')">Open report viewer</a> Done.
Результаты симуляции в графике выше. Заметьте, что основание, 2 Алгоритма бпф приводят к очень похожим результатам как к ссылке 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, щелкните по соответствующей ссылке в Ссылке столбца на источник в отчете.
Чтобы наблюдать корреляцию между количеством операций и числом точек в FTT, сравните предыдущий отчет с тем для основания с 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 \\fs-58-ah\vmgr$\home08\jchevali\Documents\MATLAB\Examples\soc-ex65369380\soc_analyze_FFT_tb.m ... Saving report files in \\fs-58-ah\vmgr$\home08\jchevali\Documents\MATLAB\Examples\soc-ex65369380\report_512. Operator estimate: <a href="matlab: socAlgorithmAnalyzerReport('\\fs-58-ah\vmgr$\home08\jchevali\Documents\MATLAB\Examples\soc-ex65369380\report_512\soc_analyze_FFT_tb.mat')">Open report viewer</a> Done.
Для основания с 512 точками 2 БПФ агрегированный отчет показывает предполагаемое количество 41 473 сложений типа данных double
, 32 026 вычитаний типа int32
и 11 316 вычитаний типа данных double
. Ранее с основанием с 1024 точками 2 БПФ, эти значения были 91,649, 70,173 и 25,146 соответственно. Расширьте отчет получить подробное использование оператора в l_butterfly
функция. В этом случае функция выполняется 2304 раза для 512 длин, по сравнению с 5 120 разами для 1 024 длин).
Используйте socFunctionAnalizer
функционируйте, чтобы оценить и анализировать количество арифметических операторов в функции MATLAB для основания 2 БПФ. Используйте различные опции средства просмотра, чтобы проанализировать доклад.
в совокупном общем представлении
подробный на представление оператора и на функцию MATLAB
Проанализируйте доклад путем передачи различных аргументов как входных параметров к алгоритму и наблюдения различий.
Можно использовать этот анализ, чтобы получить оценку стоимости реализации алгоритма на данной аппаратной платформе.