Сгенерируйте скомпилированную функцию кода С включая логгирование инструментирования
buildInstrumentedMex
переводит файл MATLAB® fcn
-options
к MEX-функции и включает инструментирование для логгирования минимальных и максимальных значений всех именованных и промежуточных переменных. Опционально, можно включить инструментирование для log2 гистограмм всех названных, промежуточное звено и значения выражения. Общий синтаксис и опции fcn
MbuildInstrumentedMex
и fiaccel
то же самое, кроме buildIntstrumentedMex
не имеет никакого fi
ограничения объектов и поддержки '-coder'
опция.
buildInstrumentedMex
переводит функции MATLAB fcn_1... fcn_n
-options
-coder
через fcn_1
к MEX-функции и включает инструментирование для логгирования минимальных и максимальных значений всех именованных и промежуточных переменных. Генерация MEX-функции для нескольких функций точки входа требует fcn_n
'-coder'
опция.
|
Точка входа MATLAB функционирует, чтобы быть оснащенной. Функции точки входа должны подойти для генерации кода. Для получения дополнительной информации смотрите, Делают код MATLAB Подходящим для Генерации кода (MATLAB Coder). |
|
Выбор параметров компилятора.
|
Создайте оснащенную MEX-функцию. Запустите испытательный стенд, затем просмотрите регистрируемые результаты.
Создайте временную директорию, затем импортируйте функцию, взятую в качестве примера, из Fixed-Point Designer.
tempdirObj=fidemo.fiTempdir('buildInstrumentedMex') copyfile(fullfile(matlabroot,'toolbox','fixedpoint',... 'fidemos','fi_m_radix2fft_withscaling.m'),... 'testfft.m','f')
Задайте прототипные входные параметры.
n = 128; x = complex(zeros(n,1)); W = coder.Constant(fidemo.fi_radix2twiddles(n));
Сгенерируйте оснащенную MEX-функцию. Используйте -o
опция, чтобы задать имя MEX-функции. Используйте -histogram
опция, чтобы вычислить гистограммы. (Если у вас есть лицензия MATLAB Coder, можно хотеть также добавить -coder
опция. В этом случае используйте buildInstrumentedMex testfft -coder -o testfft_instrumented -args {x,W}
вместо следующей строки кода.)
Как fiaccel
, buildInstrumentedMex
генерирует MEX-функцию. Чтобы сгенерировать код С, смотрите MATLAB Coder
codegen
функция.
buildInstrumentedMex testfft -o testfft_instrumented... -args {x,W} -histogram
Запустите тестовый файл, чтобы записать результаты инструментирования. Вызовите showInstrumentationResults
открыть отчет. Просмотрите симуляцию минимальные и максимальные значения и состояние целого числа путем приостановки по переменной в отчете. Можно также видеть предложенные типы данных для чисел двойной точности в таблице.
for i=1:20 y = testfft_instrumented(randn(size(x))); end showInstrumentationResults testfft_instrumented
Просмотрите гистограмму для переменной путем нажатия во вкладке Variables.
Для получения информации о фигуре обратитесь к NumericTypeScope
страница с описанием.
Закройте отображение гистограммы и затем, очистите журнал результатов.
clearInstrumentationResults testfft_instrumented;
Очистите MEX-функцию, затем удалите временные файлы.
clear testfft_instrumented; tempdirObj.cleanUp;
В локальной перезаписываемой папке создайте функции ep1.m
и ep2.m
.
function y1 = ep1(u) %#codegen y1 = u; end
function y2 = ep2(u, v) %#codegen y2 = u + v; end
Сгенерируйте оснащенную MEX-функцию для двух функций точки входа. Используйте -o
опция, чтобы задать имя MEX-функции. Используйте -histogram
опция, чтобы вычислить гистограммы. Используйте -coder
опция, чтобы позволить генерировать многократные точки с buildInstrumentedMex
функция.
u = 1:100; v = 5:104; buildInstrumentedMex -o sharedmex ... ep1 -args {u} ... % Entry point 1 ep2 -args {u, v} ... % Entry point 2 -histogram -coder
Вызовите первую функцию точки входа использование сгенерированной MEX-функции.
y1 = sharedmex('ep1', u);
Вызовите вторую функцию точки входа использование сгенерированной MEX-функции.
y2 = sharedmex('ep2', u, v);
Покажите результаты инструментирования.
showInstrumentationResults sharedmex
Генерация MEX-функции для нескольких функций точки входа с помощью buildInstrumentedMex
функция требует лицензии MATLAB Coder.
Вы не можете оснастить функции MATLAB, которым предоставляют программное обеспечение. Если вашей функцией верхнего уровня является такая функция MATLAB, ничто не регистрируется. Вы также не можете оснастить скрипты.
Результаты инструментирования накапливаются каждый раз, когда оснащенная MEX-функция называется. Используйте clearInstrumentationResults
очистить предыдущие результаты в журнале.
Некоторые шаблоны кодирования передают существенное количество данных, но только используют небольшую часть тех данных. В таких случаях можно видеть ухудшенную производительность при использовании buildInstrumentedMex
. В следующем шаблоне, subfun
только использование один элемент входного массива, A
. Для нормального выполнения, количество времени, чтобы выполнить subfun
однажды остается постоянным независимо от размера A
. Функциональный topfun
вызовы subfun
N
времена, и таким образом общее время, чтобы выполнить topfun
пропорционально N
. Когда оснащено, однако, время, чтобы выполнить subfun
однажды становится пропорциональным N
^2. Это изменение происходит, потому что минимальные и максимальные данные вычисляются по целому массиву. Когда A
является большим, вычисления могут привести к значительному ухудшению производительности. Поэтому, когда это возможно, необходимо передать только данные, в которых на самом деле нужна функция.
function A = topfun(A) N = numel(A); for i=1:N A(i) = subfun(A,i); end end function b = subfun(A,i) b = 0.5 * A(i); end function A = topfun(A) N = numel(A); for i=1:N A(i) = subfun(A(i)); end end function b = subfun(a) b = 0.5 * a; end
NumericTypeScope
| clearInstrumentationResults
| codegen
| fiaccel
| mex
| showInstrumentationResults