fiaccel

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

Синтаксис

fiaccel -options fcn
fiaccel -float2fixed fcn

Описание

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

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

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

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

Примечание

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

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