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.

Примечание

Если ваш файл верхнего уровня находится на пути, который содержит символы 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

Для просмотра документации необходимо авторизоваться на сайте