Разработка для Эльбрус
Опыт разработки ПО на платформе Эльбрус для управления оборудованием и обработки данных
Впервые мы познакомились с платформой и процессорами Эльбрус в конце 2019 года при реализации проекта по разработке программного обеспечения proDIS для системы рентгеновской инспекции печатных плат Продис.Электро. Поначалу мы были обеспокоены возможностями новой для нас платформы в этом вычислительно-сложном проекте с необходимостью поддержки широкого спектра внешнего оборудования.

Архитектура Эльбрус является эволюцией улучшенной VLIW архитектуры. Ранее у нас был опыт разработки под VLIW архитектуры на базе Intel Itanium, поэтому все методы оптимизации этой платформы хорошо подошли и для Эльбрус. Компилятор компании МЦСТ дополнительно позволил использовать векторные команды на базе Intel SIMD с помощью стандартных intrinsics языка С++, таким образом нам не пришлось переписывать оптимизированный код, проверенный на платформе Intel x64.

Нам удалось создать эффективный OpenGL тракт обработки изображений, одинаково хорошо работающий как на Эльбрус 8С, так и на процессорах Intel/AMD. Подключение внешнего оборудования заняло больше, чем обычно, времени из-за отсутствия готовых SDK для работы с нестандартным железом. В итоге все заработало в штатном режиме, проблем с производительностью замечено не было.

В процессе работы мы, естественно, столкнулись с некоторыми сложностями. В частности нам пришлось написать свой буфер и очередь обработки сетевых пакетов для бесперебойного получения данных от плоскопанельных цифровых рентгеновских детекторов. Также были определенные моменты связанные с особенностями компилятора, но все они были решены в короткий срок.

Наш программный продукт был ориентирован на использование Эльбрус 8С под дистрибутивом Астра Linux, но прекрасно функционирует и в родном варианте. Совместимость Linux x64 и Windows x64, под которыми также функционирует наш продукт, не пострадала.

Хотелось бы отдельно отметить темпы развития платформы компанией МЦСТ. Ряд вопросов, которые возникали у нас в процессе работы уже решены. На момент начала разработки мы были ограничены поддержкой С++ 14 (компилятор LCC 1.23), Qt 5.11 и OpenCV 3.2. Сейчас уже доступен LCC 1.25 c поддержкой С++ 17, готовятся к выходу новые версии компилятора. Так же ожидаются более свежие версии Qt и OpenCV.

МЦСТ достиг отличных результатов в оптимизации библиотеки EML (пока только в родном дистрибутиве), которая, под капотом, используется в OpenCV для обработки изображений. Полученные на процессоре Эльбрус 8С результаты сопоставимы с современными Intel/AMD, а в ряде случаев даже превосходят их при меньшей тактовой частоте. Более подробно об этом рассказывается в публикации на Хабре:

Цифровой рентген: прогулка по Эльбрусу

В целом мы остались довольны полученным опытом и считаем, что платформа Эльбрус вполне готова выступить в качестве рабочей альтернативы зарубежным аналогам даже для сложных применений. Мы, с свою очередь, будем рады продолжить работать с данной платформой.