fiaccel

Ускорите код с фиксированной точкой и преобразуйте код MATLAB с плавающей точкой в код MATLAB с фиксированной точкой

Синтаксис

fiaccel -options fcn
fiaccel -float2fixed fcn

Описание

fiaccel -options fcn преобразует MATLAB® файловой fcn.m к MEX-функции, которая ускоряет код с фиксированной точкой. Использовать fiaccel, ваш код должен соответствовать одному из следующих требований:

  • Функция верхнего уровня не имеет входов или выходов, и код использует fi

  • Функция верхнего уровня имеет выход или непостоянный вход, и, по крайней мере, один выход или вход является fi.

  • Функция верхнего уровня имеет по крайней мере один вход или выход, содержащий встроенный целочисленный класс (int8, uint8, int16, uint16, int32, uint32, int64, или uint64), и код использует fi.

Примечание

Если файл верхнего уровня находится в пути, содержащем символы Юникода, генерация кода может оказаться невозможной для поиска файла.

fiaccel -float2fixed fcn преобразует функцию MATLAB с плавающей точкой, fcn к коду MATLAB с фиксированной точкой.

Входные параметры

fcn

Функция MATLAB, из которой можно сгенерировать MEX-функцию. fcn должен быть подходящим для генерации кода. Для получения информации о генерации кода смотрите Ускорение кода и Генерация кода из MATLAB

options

Выбор опций компилятора. fiaccel предоставляет приоритет отдельным опциям командной строки над опциями, заданными с помощью объекта строения. Если опции командной строки конфликтуют, преобладает самая правая опция.

-args example_inputs

Задайте размер, класс и сложность входов функции MATLAB путем предоставления массива ячеек из примерных входных значений. Положение примера входа в массиве ячеек должно соответствовать положению входного параметра в определении функции MATLAB. Чтобы сгенерировать функцию, которая имеет меньше входные параметры, чем у определения функции, опускайте значения примера для аргументов, которые вы не хотите.

Задайте входные входы примера сразу после функции, к которой они применяются.

Вместо примера значения можно задать coder.Type объект. Как создать coder.Type объект, использование coder.typeof.

-config config_object

Задайте параметры генерации MEX на основе config_object, заданная как переменный MATLAB с использованием coder.mexconfig. Для примера:

cfg = coder.mexconfig;

-d out_folder

Сохраните сгенерированные файлы в абсолютном или относительном пути, заданном out_folder. Если папка задана как out_folder не существует, fiaccel создает его для вас.

Если вы не задаете расположение папки, fiaccel генерирует файлы в папке по умолчанию:

fiaccel/mex/fcn. 

fcn - имя функции MATLAB, заданное в командной строке.

Функция не поддерживает следующие символы в именах папок: asterisk (*), вопросительный знак (?), доллар ($) и фунт (#).

-float2fixed float2fixed_cfg_name

Генерирует код MATLAB с фиксированной точкой с помощью настроек, заданных объектом строения преобразования из плавающей запятой в фиксированную запятую с именем float2fixed_cfg_name.

Для этой опции, fiaccel генерирует файлы в папке codegen/fcn_name/fixpt.

Вы должны задать TestBenchName свойство float2fixed_cfg_name. Для примера:

fixptcfg.TestBenchName = 'myadd_test';
определяет, что myadd_test - тестовый файл для объекта строения с плавающей точкой и фиксированной точкой fixptcfg.

Вы не можете использовать эту опцию с -global опция.

-g

Компилирует MEX-функцию в режиме отладки, с отключенной оптимизацией. Если не указано, fiaccel генерирует MEX-функцию в оптимизированном режиме.

-global global_values

Задайте начальные значения для глобальных переменных в файле MATLAB. Используйте значения в массиве ячеек global_values чтобы инициализировать глобальные переменные в функции, которую вы компилируете. Массив ячеек должен предоставить имя и начальное значение каждой глобальной переменной. Перед компиляцией необходимо инициализировать глобальные переменные fiaccel. Если вы не задаете начальные значения для глобальных переменных, используя -global опция, fiaccel проверяет наличие переменной в глобальной рабочей области MATLAB. Если вы не задаете начальное значение, fiaccel генерирует ошибку.

Сгенерированный код MEX и MATLAB имеют свои собственные копии глобальных данных. Для обеспечения согласованности необходимо синхронизировать их глобальные данные каждый раз, когда они взаимодействуют. Если вы не синхронизируете данные, их глобальные переменные могут отличаться.

Вы не можете использовать эту опцию с -float2fixed опция.

-I include_path

Добавить include_path в начало пути генерации кода.

fiaccel сначала ищет путь генерации кода при преобразовании кода MATLAB в код MEX.

-launchreport

Сгенерируйте и откройте отчет генерации кода. Если вы не задаете эту опцию, fiaccel генерирует отчет только в случае возникновения ошибки или предупреждающих сообщений или если вы задаете -report опция.

-nargout

Задайте количество выходных аргументов в сгенерированной функции точки входа. Генератор кода производит заданное количество выходных аргументов в том порядке, в котором они происходят в определении функции MATLAB.

-o output_file_name

Сгенерируйте MEX-функцию с базовым именем output_file_name плюс расширение для конкретной платформы.

output_file_name может быть именем файла или включать существующий путь.

Если вы не задаете имя файла выхода, базовое имя fcn_mex, что позволяет запустить исходную функцию MATLAB и MEX-функцию и сравнить результаты.

-O optimization_option

Оптимизируйте сгенерированный код MEX, основанный на значении optimization_option:

  • enable:inline - Включите функцию inlining

  • disable:inline - Отключить инкрустацию функции

Если не указано, fiaccel использует инкрустацию для оптимизации.

-report

Сгенерируйте отчет генерации кода. Если вы не задаете эту опцию, fiaccel генерирует отчет только в случае возникновения ошибки или предупреждающих сообщений или если вы задаете -launchreport опция.

-?

Отобразите справку для fiaccel команда.

Примеры

Создайте тестовый файл и вычислите скользящее среднее значение. Затем используйте fiaccel чтобы ускорить код и сравнить.

function avg = test_moving_average(x)
%#codegen
if nargin < 1,
    x = fi(rand(100,1),1,16,15);
end
z = fi(zeros(10,1),1,16,15);
avg = x;
for k = 1:length(x)
    [avg(k),z] = moving_average(x(k),z);
end

function [avg,z] = moving_average(x,z)
%#codegen
if nargin < 2,
    z = fi(zeros(10,1),1,16,15);
end
z(2:end) = z(1:end-1);  	% Update buffer
z(1) = x;	              	% Add new value
avg = mean(z);          % Compute moving average

% Use fiaccel to create a MEX function and 
% accelerate the code
x = fi(rand(100,1),1,16,15);
fiaccel test_moving_average -args {x} -report

% Compare the non-accelerated and accelerated code.
x = fi(rand(100,1),1,16,15);

% Non-compiled version
tic,avg = test_moving_average(x);toc
% Compiled version
tic,avg = test_moving_average_mex(x);toc

Преобразуйте код MATLAB с плавающей точкой в фиксированную точку

Создайте coder.FixptConfig объект, fixptcfg, с настройками по умолчанию.

fixptcfg = coder.config('fixpt');

Установите имя испытательного стенда. В этом примере имя функции испытательного стенда dti_test.

fixptcfg.TestBenchName = 'dti_test';

Преобразуйте функцию MATLAB с плавающей точкой в код MATLAB с фиксированной точкой. В этом примере имя функции MATLAB dti.

fiaccel -float2fixed fixptcfg dti
Введенный в R2011a