ARM softfp против производительности hardfp - PullRequest
0 голосов
/ 15 октября 2019

У меня есть платформа на базе ARM с ОС Linux. Хотя его набор инструментов на основе gcc поддерживает как hardfp, так и softfp, поставщик рекомендует использовать softfp, и платформа поставляется с набором стандартных библиотек и библиотек, связанных с платформой, которые имеют только версию softfp.

Я делаюинтенсивный для вычислений (NEON) AI-код на основе OpenCV и tenorflow lite. Следуя руководству поставщика, я создал их с опцией softfp. Тем не менее, у меня есть ощущение, что мой код недостаточно эффективен по сравнению с другими похожими платформами hardfp.

Зависит ли производительность кода от настроек softfp / hardfp? Правильно ли я понимаю, что все файлы .o и .a, которые компилятор создает для сборки моей программы, также используют соглашение softfp, которое менее эффективно? Если да, есть ли какие-нибудь хитрые способы использовать соглашение о вызовах hardfp внутри, но softfp для внешних библиотек?

1 Ответ

0 голосов
/ 15 октября 2019

Опция softfp влияет только на передачу параметров.

Другими словами, если вы не передаете много аргументов типа float при вызове функций, не будет никакого заметного снижения производительности по сравнению сhardfp.

И поскольку хорошо спроектированные проекты в значительной степени зависят от передачи указателя на структуры вместо множества отдельных значений, я бы придерживался softfp.

...