exponenta event banner

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, указанное в командной строке.

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

-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 - Включить встроенную функцию

  • 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