Поддерживает ли галогенид ARMv8 (aarch64) с неоном?

Я хотел бы использовать Halide для цели ARM A53 (aarch64) с неоновой векторизацией.

Но я не могу понять, как создать целевой объект. Также я не могу найти цель aarch64 с неоновой функцией в Target.h< /а>.

Приведенный ниже код, который я тестировал, работает на цели A53, но сгенерированный код не содержит неоновых инструкций.

Target target("arm-64-linux"); // is it right?
Buffer<uint16_t> input(640,480);

Var x,y;
Func brighter("brighter");
brighter(x,y) = input(x,y) + 100;
brighter.estimate(x, 0, 640).
         estimate(y, 0, 480);

Pipeline p(brighter);
p.auto_schedule(target);
p.compile_to_static_library("./lib_dummy", {input}, "", target);

person junhee    schedule 16.02.2017    source источник


Ответы (1)


arm-64 — это то, что Halide использует для aarch64, так что ваша цель в порядке. Чтобы использовать неоновые инструкции, вам нужно что-то векторизовать. Не уверен, делает ли это автопланировщик или нет (так и должно быть!). Попробуйте не планировать автоматически, а просто скажите:

brighter.vectorize(x, 8);
person Andrew Adams    schedule 16.02.2017
comment
по-прежнему не может видеть неоновые инструкции, даже если вы используете ярче.vectorize вместо auto_schedule(). - person junhee; 16.02.2017
comment
Виноват! Я искал инструкции для arm 32 вместо инструкций для ARMv8. Двоичный файл содержит инструкции ARMv8. - person junhee; 20.02.2017