Сгенерируйте скомпилированную функцию кода С включая журналирование инструментирования
buildInstrumentedMex fcn -optionsbuildInstrumentedMex fcn_1... fcn_n -options -coderbuildInstrumentedMex переводит файл 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 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