Сгенерируйте нативный код С полуточности Используя MATLAB Coder

Некоторые встроенные аппаратные цели исходно поддерживают специальные типы для половины точности, такие как _Float16 и _fp16 типы данных для ARM® компиляторы. Можно использовать MATLAB® Coder™, чтобы сгенерировать нативный код С полуточности для Коры ARM®- Процессоры, которые исходно поддерживают половину точности типы данных с плавающей точкой.

Процесс, чтобы сгенерировать нативную половину кода С следующие:

  • Укажите новое аппаратное целевое устройство, которое исходно поддерживает половину точности с помощью target пакет.

  • Сконфигурируйте настройку генерации кода для половины точности.

  • Сгенерируйте нативную половину кода типа.

Fixed-Point Designer™ и MATLAB Coder включают предварительно сконфигурированные реализации языка для компиляторов Armclang и GCC. Для других аппаратных целей можно задать пользовательскую реализацию языка на основе спецификаций оборудования.

Сгенерируйте нативный код С полуточности для ARM® Cortex®-A с компилятором GCC

В этом примере процессор ARM Cortex®-A используется в качестве аппаратной цели. Модель сконфигурирована, чтобы использовать эту цель ARM и GNU набор инструментальных средств компилятора GCC.

Укажите целевой компьютер

Используйте функцию target.create, чтобы создать цель процессора ARM, которая совместима с половиной точности.

arm_half = target.create('Processor','Manufacturer',"Broadcom",'Name','BCM2711 ARM Cortex A72');

Добавьте реализацию языка. Используйте функцию target.get, чтобы получить целевой объект из внутренней базы данных.

li = target.get('LanguageImplementation',"GNU GCC ARM 32-bit");

Замените реализацию языка по умолчанию для Коры ARM с Armclang.

arm_half.LanguageImplementations = li;

Используйте функцию target.add, чтобы добавить целевой объект во внутреннюю базу данных.

target.add(arm_half);
target.add summary:

    Objects added to internal database for current MATLAB session:
        target.Processor                 "Broadcom-BCM2711 ARM Cortex A72"

    1 object not added because they already exist.

Откройте код MATLAB который Тип данных Полуточности Использования

edit testNativeHalffp16.m

Сконфигурируйте настройку генерации кода для половины точности

Создайте объект настройки генерации кода.

cfg = coder.config('lib');

Задайте производственный тип аппаратного устройства.

cfg.HardwareImplementation.ProdHWDeviceType = 'Broadcom->BCM2711 ARM Cortex A72';

Выберите набор инструментальных средств, совместимый с выбранным оборудованием.

cfg.Toolchain = 'GNU Tools for ARM Embedded Processors'; 

Добавьте флаги полуточности для компиляции.

cfg.BuildConfiguration = 'Specify';
cfg.CustomToolchainOptions{4} = '-c -MMD -MP -MF"$(@:%.o=%.dep)" -MT"$@" -O0 -mfp16-format=ieee -mfpu=neon-fp16';

Сгенерируйте код

codegen testNativeHalffp16 -args {half(3)} -launchreport -config cfg

Можно смотреть отчет генерации кода подтвердить, что пользовательские определения типа полуточности используются.

Константы полуточности используют f16 суффикс.

Сгенерируйте нативный код С полуточности для ARM Cortex-A с компилятором Armclang

В этом примере процессор ARM Cortex-A используется в качестве аппаратной цели. Модель сконфигурирована, чтобы использовать эту цель ARM и набор инструментальных средств компилятора Armclang.

Укажите целевой компьютер

Используйте target.create функция, чтобы создать цель процессора ARM, которая совместима с половиной точности.

arm_half = target.create('Processor','Manufacturer',"Broadcom",'Name','ARM Cortex A75');

Добавьте реализацию языка. Используйте target.get функция, чтобы получить целевой объект из внутренней базы данных.

li = target.get('LanguageImplementation',"Clang ARM 32-bit");

Замените реализацию языка по умолчанию для Коры ARM с Armclang.

arm_half.LanguageImplementations = li;

Используйте target.add функция, чтобы добавить целевой объект во внутреннюю базу данных.

target.add(arm_half);

Сконфигурируйте настройку генерации кода для половины точности

Создайте объект настройки генерации кода.

cfg = coder.config('lib');

Задайте производственный тип оборудования.

cfg.HardwareImplementation.ProdHWDeviceType = 'Broadcom->ARM Cortex A75';

Выберите набор инструментальных средств, совместимый с выбранным оборудованием.

cfg.Toolchain = 'Armclang Compiler';

Добавьте флаги полуточности для компиляции.

cfg.BuildConfiguration = 'Specify';
cfg.CustomToolchainOptions{4} = '-c -MMD -MP -MF"$(@:%.o=%.dep)" -MT"$@" -O0 --target=arm-arm-none-eabi -march=armv8.2-a+fp16';

Сгенерируйте код

codegen testNativeHalffp16 -args {half(3)} -launchreport -config cfg

Укажите целевой компьютер ARM с пользовательской реализацией языка

В этом примере создайте новую пользовательскую реализацию языка с половиной точности для совместимой цели ARM.

Укажите целевой компьютер

Используйте target.create функционируйте, чтобы скопировать реализацию языка Коры совместимого ARM ARM.

languageImplementation = target.create('LanguageImplementation','Name','ARM with half',...
    'Copy','ARM Compatible-ARM Cortex');

Укажите пользовательскую половину информации и предназначайтесь для определенных заголовков, как дано вашей документацией целевого компьютера. Для получения дополнительной информации смотрите Регистр Новые Аппаратные устройства. Например,

customHalf = target.create('FloatingPointDataType','Name','BCM2711 Half Type', ...
    'TypeName','_Float16','LiteralSuffix','f16','Size',16, ...
    'SystemIncludes',["arm_fp16.h" "arm_neon.h"]);
languageImplementation.DataTypes.NonStandardDataTypes = customHalf;

Предоставьте информацию о своем целевом процессоре. Например,

% Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC
pi4a72 = target.create('Processor','Manufacturer','Broadcom','Name','BCM2711');

Добавьте пользовательскую реализацию языка полуточности.

pi4a72.LanguageImplementations = languageImplementation;

Используйте target.add функция, чтобы добавить целевой объект во внутреннюю базу данных.

target.add(pi4a72);

Смотрите также

| | | | |

Похожие темы

Внешние веб-сайты