Сгенерируйте скомпилированную функцию кода С включая журналирование инструментирования
buildInstrumentedMex fcn -options
buildInstrumentedMex fcn_1... fcn_n -options -coder
buildInstrumentedMex
переводит файл MATLAB® fcn
-options
в MEX-функцию и включает инструментирование для журналирования минимальных и максимальных значений всех именованных и промежуточных переменных. Опционально, можно включить инструментирование для log2 гистограмм всех названных, промежуточное звено и значения выражения. Общий синтаксис и опции fcn.m
buildInstrumentedMex
и 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 Codercodegen
функционирует.
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