ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1121280
klen (02.08.2021 23:00, просмотров: 184)
К вопросу о пользе реализации LTO в gcc 

Раз в неделю пересобираю из транка все тулсы - смотрю что кто накидал туда, что то исправляю и тд. отдельным вопросом у меня идет реализация LTO оптимизации в GCC. На данный момент утверждаю что метода стала довольно зрелой, хорошо вяжется с С++ (в котором в отличие от С тянется множество информации на следующие стадии генерации кода и позволяющее выдать лучший код), трудно но можно написать код который свалит оптимизатор (я умею но это еще надо знать как :)). есть проблемы с отладкой но они обходятся. эффективность на мой взгляд мотивирует на безоговорочное применения для "быстого" кода.

Отдельно частный мой случай - векторный регулятор для безколлекторных электродвигателей. собрал уже хрен знает какую версию железячки и накатил на нее последние "мои достижения" в области угадывания состояния мотора.

Условия опыта - частота ШИМ 35кГц, за период с помощью расширенного калмана оценивается состояние мотра, после этого вычисляются сигналы управлени и выдаются на инвернтор. естественно вычисление состояния потребляет почти 100 процентов времени цикла измерения ->вычисление оценки состояния->управление.

в случае оптимизации -Ofast время на круг - 0,7 от периода ШИМ, в случает -Ofast -flto=8 время 0,5. то есть как бы появляется возможность уже два мотра "покрутить" на том же процессоре/

при этом ужимается и код на 16% (данные естественно не жмутся - все фокусы происходят с мержем и оптимизацией трасс вызовов функций):

gcc версия 12.0.0 20210729 (experimental) (Klen's_GNU_package_(KGP)_for_target::arm-kgp-eabi


section info: sec name size increase[%] .text 144080 -29104 (-16.805249%) .data 8 0 (0.000000%) .bss 100004 12 (0.012004%) utilization: ram : 87.2035% 12 (0.012004%) flash: 13.7413% -29104 (-16.804469%)

вот так!