Привет, Хабр! Меня зовут Светлана Болсуновская, я стратегический коуч-консультант в YADRO. Многие компании перешли на гибридный формат работы, где команды нуждаются в особом подходе для поддержания самоорганизации — процесса, при котором люди выполняют задачи без постоянного контроля руководителя. Я поделюсь своими наблюдениями, почему в современных условиях самоорганизация не происходит «магически» и что должен (и не должен) делать тимлид, чтобы помочь команде достичь этой цели.
Компания YADRO
Запускаем Embedded Linux на Hard- и Soft-CPU Xilinx Zynq: сборка операционной системы
И снова здравствуй, Хабр! Мы добрались до второй части повествования о параллельном запуске двух ОС на FPGA с процессорной подсистемой.
В этой статье мы сначала определим минимально необходимые компоненты для запуска Embedded Linux. Затем осуществим сборку под ARM стандартными инструментами производителя и под Soft-CPU «вручную». И наконец, подготовим загрузочный носитель, чтобы подойти во всеоружии к запуску и верификации проекта, которые ожидают нас в заключительной части цикла.
Quake 2 на нашем RISC-V, или как мы поднимали старый Radeon на FPGA
Всем привет! Меня зовут Александр Разинков, я разрабатываю системный софт в компании YADRO. В этом посте я расскажу о стресс-тестировании нашего RISC-V-кластера с помощью… Quake 2! Почему «квейк»? RISC-V активно развивается как основная application-платформа в мире, и игры — это хороший способ проверить возможности ядер, драйверов GPU и экосистемы в целом. В некоторых важных аспектах игры дают значительно большую нагрузку, чем стандартные программные тесты, особенно на память и интерконнект.
В ходе проекта мы получили отличный опыт работы с видеоподсистемой и графическим стеком Linux, которым стоит поделиться. Открыли для себя новую группу бенчмарков по графике и UX. Наконец, это первый на моей памяти запуск игр именно на российских ядрах RISC-V!
Компьютерное зрение на C++: пишем приложение для поиска объектов под Android
Привет, Хабр! Меня зовут Кирилл Колодяжный, я пишу код на С++ для систем хранения данных в YADRO. Помимо основной работы, интересуюсь машинным обучением и его возможностями, в том числе на «плюсах». Недавно мне стало интересно разобраться, как развернуть модель компьютерного зрения на мобильном устройстве с операционной системой Android.
Я изучил доступные инструменты, чтобы понять, какие части приложения можно реализовать на С++, и написать само приложение для телефона. Ни в одном из материалов на подобную тему не описывают реализацию такого приложения от начала до конца, поэтому я собрал свой опыт в серию статей.
Расскажу, как реализовать обнаружение объектов в реальном времени с помощью камеры на мобильной платформе Android с использованием библиотек PyTorch и NCNN и моделей компьютерного зрения YOLOv5 и YOLOv4. Шаблон моего приложения пригодится тем, кто хочет проверить прототип функциональности для компьютерного зрения на С++, использующий OpenCV на Android, но не хочет глубоко погружаться в программирование под Android.
В первой части цикла мы:
• создадим проект в IDE Android Studio,
• реализуем сессию непрерывного захвата изображений камеры,
• преобразуем изображения в матрицу OpenCV, чтобы сделать дальнейшую работу удобной.
Ошибаться и учиться на реальных задачах: как студенты получают опыт работы с FPGA и процессорными ядрами
Пока одни студенты готовятся к сессии и сдают долги, другие разрабатывают системы на кристалле и тестируют клиентские устройства. Герои этой статьи — молодые инженеры, выпускники стажировки YADRO Импульс 2024. Два месяца они стажировались в компании, а затем получили предложения о работе и продолжили работу над начатыми проектами.
В каком вузе учиться, чтобы в 20 лет стать младшим инженером в крупной компании, как за два месяца разобраться в запуске тестов на FPGA-платах и какие навыки приобретают стажеры в YADRO — узнаете в статье.
Голова на подушке, попкорн и песочные часы: какие дефекты можно встретить при рентген-контроле качества печатных узлов
Качество монтажа компонентов на печатной плате требует постоянного контроля. Пропущенный дефект может вылиться в брак итогового устройства — его некорректную работу или полное отсутствие «жизни». На современных производствах давно используют системы оптического контроля — AOI и SPI, но не всегда они применимы. Так, ими не проверить качество пайки внутренних выводов микросхем в BGA-корпусе или монтажа термопадов QFN-, QFP-корпусов. Для них используют рентген-контроль.
В статье Александр Патутинский, технолог по подготовке и запуску печатных плат в производство, рассказывает, как выглядит рентген-контроль и устройства для него, а также разбирает дефекты при анализе снимков BGA-корпусов, которые встречались ему на практике.
Вычисления на RISC-V: исследуем производительность OpenCL на CPU и совместимых GPU
Привет! Меня зовут Михаил Козлов, я инженер-стажер в группе разработки математических библиотек в YADRO. Эта сфера активно развивается на RISC-V: известные математические библиотеки, такие как OpenBLAS, Eigen и многие другие, портируют и оптимизируют под открытую архитектуру. Большой интерес представляет OpenCL — открытый стандарт разработки программного обеспечения для гетерогенных вычислений. Он используется во многих областях: HPC, AI/ML, AR/VR, линейной алгебре, где он наиболее широко представлен с помощью библиотек clBLAS и CLBlast.
В линейной алгебре OpenCL наиболее широко представлен с помощью библиотек clBLAS и CLBlast. Первая — более старая, вторая — более современная, со встроенным тюнером для оптимизации под конкретное железо. Далее я расскажу о своем проекте с летней стажировки: исследовании производительности этих библиотек на GPU
Митап по Linux Kernel: про livepatching, работу с расширениями RISC-V и создание модуля ядра для memory extender
30 октября в 19:00 инженеры из YADRO и локальной Linux User группы откроют серию совместных митапов. Они поделятся опытом точечного обновления ядра Linux с помощью livepatching, расскажут о поддержке архитектуры и расширений RISC-V и про устройство подсистемы DMA.
Регистрируйтесь, чтобы забронировать место на площадке, — количество мест ограничено. Но для тех, кто не успеет, будет доступна трансляция в VK, YouTube или Rutube (также по регистрации) и открыт лист записи на следующие Linux-митапы.
Железо или архитектура? Два направления книг по схемотехнике для начинающих
Прежде чем браться за макетную плату и паяльник, стоит обратиться к профессиональной литературе по схемотехнике. Опытные инженеры и ученые снабдят необходимой теорией и помогут собрать стартовый набор для практики. Эту подборку мы специально разделили на два трека — железный и архитектурный — и отсортировали книги от простых к сложным.
Для полного погружения можно изучить оба направления. Но, если хотите углубиться в тему электроники, читайте материалы из железного трека. А для тех, кто хочет отойти от физики работы приборов на более абстрактный уровень проектирования, подойдут книги из архитектурного направления.
Что изменилось в open source-альтернативе TestRail. От кастомных статусов и атрибутов до bulk-операций
Привет! Я Александр Зырянов, проектный менеджер TestY и QA-менеджер в департаменте контроля качества YADRO. Тест-менеджмент системе TestY, которая доступна в open source любой команде и компании, скоро два года. Мы готовим крупный релиз 2.0 с масштабными изменениями, в том числе дизайна интерфейса.
А пока в качестве «аппетайзера» я расскажу про последние обновления к релизу 1.3.4. Среди них — bulk-операции, пуш-уведомления пользователей, доработка кастомных атрибутов и статусов. Подробнее о каждом — под катом. Устанавливайте TestY и испытайте в работе нашу открытую систему.
Запускаем Embedded Linux на Hard- и Soft-CPU Xilinx Zynq: проект программируемой логики
Привет, Хабр! Меня зовут Павел Панкратов, я ведущий инженер-программист в дивизионе искусственного интеллекта YADRO. Этим текстом я запускаю цикл статей — экскурс в особенности работы с SoC, комбинирующей в себе реализованные в «железе» аппаратные блоки (Hard IP’s) и программируемую логику (Soft IP’s). Основная задача, которая объединит все три статьи, — параллельный запуск встраиваемой операционной системы на двух различных по архитектуре процессорах, представленных в виде Hard и Soft IP-блоков.
Производители подобных систем, как правило, предоставляют окружение для разработки и документацию с примерами реализации универсальных решений. Но масса важных деталей от пользователя все же скрывается, что приводит к долгим исследованиям при попытках нетривиальной модификации. Эта и остальные статьи цикла — попытка раскрыть завуалированные тонкости, сделать их доступными и понятными.
Делаем правильный анаглиф своими руками
Всем привет. Сегодня я поделюсь методом создания высококачественных анаглифических изображений с минимальными трудозатратами. Динозавров делать не будем: возьмем любую фотографию из семейного архива и получим полноценное трехмерное изображение. Сразу скажу, что концепция не новая, но мы будем использовать современные наработки и даже напишем простейший плагин для GIMP, от которого, впрочем, придется отказаться…
Как мы построили модель прогнозирования выхода жестких дисков из строя
Неожиданный выход HDD из строя — неприятная для сервера ситуация. Выяснение причин и замена жесткого диска (не всегда это можно сделать «горячим» способом) почти всегда означают даунтайм работы системы. При этом подсказок о своем состоянии HDD не дает, специалисты могут ориентироваться только на время эксплуатации диска и свой опыт.
Меня зовут Владислав Маркин, я инженер по разработке ПО искусственного интеллекта в YADRO. Вместе с моим коллегой, экспертом Андреем Соколовым, мы решили применить возможности ИИ в прогнозировании проблем с HDD. Задача не тривиальная: модели нужны данные для обучения и тренировки, а где их найти — отдельный вопрос.
В статье расскажу, что нам удалось сделать, что стало основой прототипа нашей прогнозной модели и какие результаты она показала в применении для дисков в серверах YADRO.
Действительно ли большие языковые модели галлюцинируют? Эксперимент
Существует мнение, что основная проблема больших языковых моделей — в склонности к галлюцинациям. Когда нейросеть генерирует текст с информацией, не связанной с запросом.
Меня зовут Полина, я инженер по разработке ПО искусственного интеллекта в YADRO. Вместе с коллегами я разрабатываю системы на базе генеративных моделей, в том числе вопросно-ответных ассистентов. В рамках одного из проектов мы вместе с экспертом команды Андреем Соколовым задались вопросом: действительно ли проблема галлюцинаций так актуальна для современных предобученных LLM в вопросно-ответном сценарии.
Для этого мы провели эксперимент на собранном датасете. Попутно рассказали про модели-трансформеры и дали строгое определение понятию «галлюцинации LLM». Все подробности — под катом.
Проблемы поколений: история уязвимостей мобильных сетей от 1G до 5G
Всем привет! Меня зовут Максим Башканков, я отвечаю за безопасность базовых станций в YADRO, поэтому как никто представляю, что будет, если даже у одного оператора пропадет связь. Первая задача, которую решает безопасность — это обеспечить доступность мобильной связи, потому что для операторов на первом месте стоит надежность и стабильность работы. Вторая задача, которая стоит перед безопасниками — обеспечение защиты данных пользователей мобильных сетей.
С этих двух ракурсов я расскажу об уязвимостях и о том, как они закрывались с первого по пятое поколение мобильных сетей. Вы узнаете, как актуальные тренды безопасности встраиваются в архитектуру сетей, как защищаются данные и что сделать для того, чтобы они защищались еще лучше.
Математика матричных расширений: как происходит умножение матриц на примере T-Head Matrix Extension
Привет, Хабр! Я Андрей Соколов, инженер-программист в группе разработки математических библиотек. Месяц назад моя коллега Валерия запустила цикл статей про матричные расширения, ускоряющие операции над матрицами. Вы уже смогли узнать, что они делают и какие существуют, какие из них разрабатываются для открытой архитектуры RISC-V.
В заключительной статье цикла разберем пример использования матричного расширения T-Head под RISC-V для реализации алгоритма матричного умножения. Сначала кратко рассмотрим наивную скалярную реализацию и блочный вариант алгоритма. Затем реализуем аналогичный вариант с использованием матричного расширения — как для квадратных матриц, так и матриц произвольного размера. Второй случай интересен тем, что возникает необходимость обработки так называемых «хвостов» — блоков неправильной конфигурации. В заключение немного расскажу, какие идеи можно использовать для дальнейшей оптимизации матричного умножения, и поделюсь полезными ссылками.
Статья не показывает пошаговую оптимизацию умножения матриц для достижения максимума FLOPS и не учит, как писать вычислительные ядра на ассемблере. Она демонстрирует использование матричного расширения и основные идеи оптимизации матричного умножения. Постарался описать все простыми словами, с иллюстрациями и небольшими вставками кода.
Погружение в матрицу: расширение RISC-V от T-Head
Продолжим нашу «антологию матричных расширений» текстом про независимое матричное расширение RISC-V от компании T-Head.
Почему мы рассматриваем именно его? Интересно понять, что из себя представляет будущее стандартное матричное расширение RISC-V, попробовать реализовать алгоритм с его использованием, соотнести это со своим предыдущим опытом низкоуровневых оптимизаций. Кроме того, это интересная возможность попробовать написать программу для расширения, которого еще нет ни в одном процессоре, и запустить ее на эмуляторе.
А еще ISA этого расширения весьма минималистична и, на мой взгляд, идеально подходит для тех, кто никогда не использовал матричные расширения в своем коде, но хочет попробовать (или узнать, как это выглядит изнутри). Не переживайте, текст не требует опыта низкоуровневых оптимизаций математических библиотек: погружение в матрицу будет постепенным.
Самый быстрый фреймворк на Диком Западе: ускоряем Django-rest-framework вместе с Rust
Всем привет! Меня зовут Роман Кабаев, я инженер в отделе разработки инструментов тестирования компании YADRO. Вместе с коллегами мы разрабатываем собственную тест-менеджмент систему с открытым исходным кодом TestY.
На этапе запуска TestY в качестве фреймворка для разработки мы выбрали Django, так как он позволяет в максимально короткие сроки реализовать MVP. Однако развивать такой продукт — добавлять фичи, наращивать число пользователей и объем хранимых данных в системе — бывает сложно.
Мы действительно быстро запустили MVP, перевезли данные из TestRail с помощью плагинов, и команды тестирования YADRO уже более года пользуются системой. Но есть одно «но»: пользовательские сценарии разных команд сильно отличаются. Так, добавление в систему более полумиллиона тестов привело к просадке скорости работы определенных эндпоинтов, завязанных на древовидных структурах.
Спойлер: камнем преткновения для нас стали CPU-bound задачи с большим количеством данных, о том, как я это выяснил, расскажу ниже. Изучив, как можно ускорить выполнение таких задач в Python, я протестировал несколько решений и нашел оптимальное. Если вы разрабатываете веб-приложение на Django или Python и так же, как я, хотите ускорить работу сервиса, читайте эту статью.
Заглянем в хрустальный шар: как продвигается разработка стандартных матричных расширений RISC-V
Привет, Хабр! В предыдущем тексте мы рассмотрели все существующие матричные расширения. Возникает вопрос: ждать ли в ближайшее время новых расширений для матричных операций? Ответ — да, они разрабатываются прямо сейчас для архитектуры RISC-V. Новость может вызвать удивление, ведь в обзоре уже есть целых два матричных расширения RISC-V. Но оба эти расширения — кастомные, и, конечно же, в консорциуме RISC-V International задумались о разработке стандартного решения.
В этот статье я подробно расскажу, что это за решения и чего от них ожидать. А еще поделюсь последними новостями из мира разреженных матриц.
Итеративная сборка FPGA-проектов
Всем привет! Я Константин Павлов, старший инженер по разработке систем на кристалле. Работаю в группе прототипирования в компании YADRO, занимаюсь отладкой на ПЛИС исходного кода, который затем будет работать в ASIC.
В статье я расскажу об итеративной (многократной) сборке проектов ПЛИС. Зачем она нужна и какими способами — вендорскими и самописными — ее возможно реализовать. А еще на примерах из практики покажу, каких впечатляющих результатов можно добиться, используя итеративную сборку.