Как стать автором
Обновить
13
0

Пользователь

Отправить сообщение

Как «обмануть» драйвер Linux в QEMU: создаем виртуального двойника Intel NTB Gen3

Уровень сложностиСложный
Время на прочтение23 мин
Количество просмотров3.6K

Наша команда системного программирования YADRO продолжает работать с open-source эмулятором QEMU.  В этой статье я расскажу, как и зачем мы создали виртуального двойника Intel NTB Gen3.

Документации по этому устройству нет в открытом доступе, поэтому итог работы — это результат наблюдения и экспериментов с реальной установкой, а также изучения существующих применений и драйверов Linux с другой. Прошу под кат, где я подробно описываю результаты и все шаги. Уверен, что информация пригодится вам для создания своих классных проектов.

Читать далее

Запускаем советский процессор из журнала «Радио» с помощью Arduino

Уровень сложностиСложный
Время на прочтение17 мин
Количество просмотров45K

Привет! Меня зовут Илья Мамай, я инженер-программист в группе разработки операционных систем YADRO. В этой статье я хочу поделиться опытом некромантии сборки советского компьютера по мотивам «Микро-80», схемы которого были опубликованы в журнале «Радио». Но собирать я буду не по этим схемам. Используя их как опору и источник вдохновения, я начну с запуска процессора КР580ВМ80А (советского клона Intel 8080), определения признаков жизни и продолжу постепенным наращиванием функционала и возможностей системы. Здесь мы займемся и радиотехникой, и DIY, и программированием как самого процессора, так и современных микроконтроллеров. Но перед этим поделюсь историей, как я, будучи студентом 4 курса, дошел до этого…

Читать далее

Микроархитектура простого нейросетевого ускорителя на SystemC

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров3.8K

Привет, Хабр! Меня зовут Михаил Степанов, я инженер-стажер группы функциональной верификации YADRO. Эта статья — логическое продолжение предыдущей, «Простая нейронная сеть на C++». Для лучшего понимания темы рекомендую сначала ознакомиться с ней.

В этих двух статьях я работал с синтетической задачей, решение которой нельзя применить в реальных системах. На всеобъемлющий анализ я не претендую, это просто академическое исследование. Оно поможет понять, с чего начать погружаться в тему ускорения нейросетей.

Читать далее

Простая нейронная сеть на C++

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров23K

Всем привет!

При помощи нейронной сети решил проблему классификации фигур на изображениях размера 7 на 7 пикселей. Задача решалась в рамках студенческой лабораторной работы. Статья приводится в качестве руководства для решения подобных академических задач.

Читать далее

Готовимся к Micromouse: как роботу найти короткий путь к цели

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров912

Привет, Хабр! Я Денис Логашов, инженер-исследователь отдела автоматической обработки результатов моделирования и визуализации YADRO. В этой статье я расскажу о решении основной задачи в соревновании Micromouse: как роботу пользоваться сохраненной картой лабиринта для передвижения по нему и поиска кратчайшего пути. Это продолжение предыдущего материала, где мы учили робота карту составлять.

Читать далее

Ищем проблему с доставкой картинок с котиками на разных уровнях L3-коммутатора: от CLI до SDK

Уровень сложностиСложный
Время на прочтение14 мин
Количество просмотров4.8K

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

Когда введен десяток команд, сложно сказать, какая из них повлияла на прохождение трафика. Поэтому мы начнем вводить команды по одной и проверять правильность конфигурации. Поступим так: «занулим» конфигурацию и будем контролировать выполнение команды на разных уровнях коммутатора. Разгадка ждет вас в конце (спойлер: котик, играющий с проводами, тут ни при чем).

Читать далее

Как устроен L3-коммутатор: разбираемся с железом и настройками конфигурации на примере проблемы с котиками

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров15K

L3-коммутаторы именитых брендов, как правило, хорошо отлажены, а редкие сложности с ними решаются готовой прошивкой с патчем. Но если производитель еще растет на рынке или речь о white box-коммутаторах, то сетевой инженер или разработчик фактически остается с проблемами один на один. 

Меня зовут Антон Гузарев, я тимлид по разработке ПО для управления сетевыми устройствами в YADRO. Наша команда вдыхает жизнь в железо — создает софт для коммутаторов KORNFELD, которые встают в серверные стойки рядом с СХД. Хочу рассказать, какие типичные проблемы мы встречаем в L3-коммутаторах, с чем они связаны и как их отлаживать. Но для начала мы разберем, как устроен L3-коммутатор на уровне железа, и посмотрим на уровни управления конфигурацией — на примере открытого проекта SONiC. Так мы подготовимся к решению проблемы с доставкой картинок котиков.

Читать далее

Сканирование документов на планшетах Kvadra: как мы создавали и обучали алгоритм

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров1.8K

Привет, Хабр! Меня зовут Владислав, я CV Engineer в компании YADRO. В этой статье я расскажу, как мы разрабатывали и обучали алгоритм детекции документов для нашего планшета Kvadra_T. Я подробно описал нюансы задачи и весь наш путь — от классического подхода до генерации недостающих датасетов и обучения на них нашей собственной нейросети. Постарался сделать историю интересной как для новичков в теме, так и для более опытных читателей. Режим детекции, кстати, уже доступен в kvadraOS.

Читать далее

Синтаксис, синглтон и смертельный ромб в С++: взгляд опытного разработчика на C

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров9.4K

Давайте знакомиться: меня зовут Анатолий Семятнёв, я и моя команда разрабатываем ПО для опорных сетей 5G в YADRO. В IT-сфере работаю давно, и мой опыт в основном связан с языком С: занимался Board Support Package (BSP) и драйверами, много работал с операционной системой QNX. 

До того, как начал полноценно работать на С++, сталкивался с языком в нулевые, писал на С++98. Тем не менее все это время я краем глаза поглядывал, что происходит в С++, и хотел вернуться к программированию на этом языке. Читал книги, делал пет-проекты, смотрел записи конференций и митапов по С++. А когда пришел в YADRO, стал писать на С++.

Мне с ходу дали большую фичу для имплементации, я писал много кода, и получал комментарии от коллег. В этом материале собрал все, что изучил или вспомнил по итогам код-ревью. Что рассмотрим в статье:

• Ключевые концепции — explicit, final, default, string — и как их использовать.

• Инициализацию мемберов с помощью пустого брейс-листа.

• Синглтон Майерса в корутинах.

• «Смертельный ромб» и все, что связано с виртуальным наследованием.

Читать далее

Самые быстрые страусы: выбираем способ организовать обмен прерываниями между машинами QEMU c KVM и без

Уровень сложностиСложный
Время на прочтение21 мин
Количество просмотров3.8K

QEMU позволяет эмулировать работу не только одной отдельной машины, но и связывать несколько независимых машин между собой. Для организации такой связи их обычно объединяют в одну сеть, например с использованием virio-net-pci. Но виртуальный ethernet — не единственный способ, связь может быть и более близкой и плотной: общая память и mailbox, линии gpio и даже NTB.

Быстрая работа связанных QEMU машин приятна при разработке/отладке и очень важна при массовом прогоне автотестов в CI: нужна как высокая пропускная способность, так и низкая задержка передачи сообщения. Для одной из задач с коллегами из отдела системного программирования YADRO я оптимизировал часть такой связки, а именно — обмен прерываниями. В статье расскажу о дизайне нескольких подходов организации IQI, разберу внутреннее устройство QEMU и поделюсь, как оправдались наши ожидания. 

Читать далее

Запускаем Embedded Linux на Hard- и Soft-CPU Xilinx Zynq: загружаем платформу и верифицируем проект

Уровень сложностиСложный
Время на прочтение26 мин
Количество просмотров2.3K

Здравствуй, Хабр! На связи вновь Павел Панкратов — ведущий инженер-программист дивизиона искусственного интеллекта YADRO. Мы добрались до финала моего повествования о параллельном запуске двух операционных систем на FPGA с процессорной подсистемой.

В этой статье мы запустим подготовленный проект и верифицируем его. А в качестве бонуса посмотрим на один из способов разработки ПО под Soft-CPU, минуя IDE Vitis. Плюс загрузим ОС Soft-CPU с помощью QEMU.

Читать далее

Взгляд в игольное ушко: какие дефекты открывает рентген на печатных узлах QFN, SON, DFN и QFP

Время на прочтение7 мин
Количество просмотров6.1K

Мы продолжаем изучать дефекты, которые можно встретить при рентген-контроле качества печатных узлов. В первой части статьи Александр Патутинский, технолог по подготовке и запуску печатных плат в производство, систематизировал дефекты BGA-корпусов. Кроме них, рентген-снимки могут показать дефекты таких корпусов, как QFN (Quad Flat No-lead), SON (Small Outline No-lead), DFN (Dual Flat No-lead) и QFP (Quad Flat Package), в том числе с термопадами. Под катом Александр разберет эти случаи, как стандартные, так и более редкие, чтобы никакие результаты рентген-исследования не смогли ввести вас в заблуждение.

Читать далее

Запускаем Embedded Linux на Hard- и Soft-CPU Xilinx Zynq: сборка операционной системы

Уровень сложностиСложный
Время на прочтение25 мин
Количество просмотров4.1K

И снова здравствуй, Хабр! Мы добрались до второй части повествования о параллельном запуске двух ОС на FPGA с процессорной подсистемой. 

В этой статье мы сначала определим минимально необходимые компоненты для запуска Embedded Linux. Затем осуществим сборку под ARM стандартными инструментами производителя и под Soft-CPU «вручную». И наконец, подготовим загрузочный носитель, чтобы подойти во всеоружии к запуску и верификации проекта, которые ожидают нас в заключительной части цикла.

Читать далее

Митап по RISC-V в Нижегородском кремле: обсудим оптимизации под архитектуру и средства мониторинга производительности

Время на прочтение2 мин
Количество просмотров1.3K

Если вы интересуетесь развитием открытой процессорной архитектуры или уже разрабатываете что-то под нее, присоединяйтесь в среду, 6 ноября, к вечернему митапу российского Альянса RISC-V и YADRO. Вместе с экспертами из Syntacore, ННГУ им. Лобачевского и YADRO обсудим актуальные новости свободной архитектуры: от цикловых оптимизаций и масштабируемой векторизации до перспектив аппаратных средств мониторинга и анализа производительности в RISC-V.

Для офлайн-участников мы подготовили сюрприз: митап пройдет в самом центре города — Нижегородском кремле. Но, если до столицы закатов вам далеко, регистрируйтесь на трансляцию и присоединяйтесь онлайн.

Что в программе

Как убить самоорганизацию в команде: вредные советы для лидера

Время на прочтение12 мин
Количество просмотров32K

Привет, Хабр! Меня зовут Светлана Болсуновская, я стратегический коуч-консультант в YADRO. Многие компании перешли на гибридный формат работы, где команды нуждаются в особом подходе для поддержания самоорганизации — процесса, при котором люди выполняют задачи без постоянного контроля руководителя. Я поделюсь своими наблюдениями, почему в современных условиях самоорганизация не происходит «магически» и что должен (и не должен) делать тимлид, чтобы помочь команде достичь этой цели.

Читать далее

Синтез цифровых схем: что почитать при любом уровне подготовки

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров12K

Осенью стартовал новый поток Школы синтеза цифровых схем — нашей бесплатной образовательной программы о современных приемах проектирования цифровых микросхем. От серийных ASIC и микропроцессоров общего назначения до реконфигурируемых FPGA и специализированных вычислителей. По этим и связанным темам выпущено немало профессиональной литературы. Мы попросили преподавателей Школы — Юрия Панчула и Александра Рябова — выбрать книги, которые помогут при обучении в школе и самостоятельном освоении синтеза цифровых схем.

Читать далее

Компьютерное зрение на С++: подключаем ML-библиотеки и обрабатываем результаты поиска объектов

Время на прочтение25 мин
Количество просмотров6.4K

Привет, Хабр! Меня зовут Кирилл Колодяжный, я разрабатываю системы хранения данных в YADRO и изучаю нестандартные подходы к машинному обучению: создаю ML-проекты на С++. 

Это вторая часть цикла о разработке приложения для обнаружения предметов на С++. В прошлом материале мы выяснили, как создать проект в IDE Android Studio, реализовать сессию непрерывного захвата и преобразовать изображение в матрицу OpenCV. Ссылку вы найдете в конце статьи.

В этой статье продолжим реализацию проекта и обсудим следующие шаги:

• Как подключить к проекту библиотеки машинного обучения PyTorch и NCNN.

• Как получить модели YOLOv5 и YOLOv4 для использования на мобильном устройстве.

• Как реализовать инференс моделей для обнаружения объектов.

• Как обработать результаты работы моделей YOLO, реализовав алгоритмы Non-Maximum-Suppression и Intersection-Over-Union.

В конце сравним производительность PyTorch и NCNN и решим, какой фреймворк подойдет для задачи лучше.

Читать далее

О стандартах не спорят? Обсудим — на митапе для С++ разработчиков

Время на прочтение2 мин
Количество просмотров1.4K

14 ноября подключайтесь к онлайн-встрече разработчиков на C++. Инженеры из YADRO объяснят, как сочетать современное программирование с объектным подходом, расскажут об уникальных особенностях интрузивных контейнеров и познакомят с библиотекой Boost.Intrusive. После докладов эксперты из YADRO, Яндекса, Syntacore и Касперского обсудят удовлетворенность реализацией и внедрением фич в текущие стандарты C++.

Антон Полухин и Константин Владимиров — на одной площадке, когда еще такое случится! Регистрируйтесь, чтобы получить ссылку на трансляцию.

Читать далее

Антология матричных расширений: от популярного обзора до запуска на эмуляторе

Время на прочтение4 мин
Количество просмотров1.2K

Матричные расширения в мире технологий появились лишь в 2020 году. Даже в сравнении с относительно «молодыми» темами ИИ и квантовых вычислений это буквально «новорожденный» материал в IT-мире. И что самое интересное, матричные расширения уравняли тот разрыв в развитии, который существует между процессорными архитектурами. Свои расширения создают и Intel, и Apple, и IBM, и рабочие группы международного альянса RISC-V. 

Как это ни парадаксально, по числу матричных расширений RISC-V уже обогнала все остальные архитектуры. Сейчас для нее разработаны два кастомных расширения, а два стандартных развиваются буквально у нас на глазах. Если хотите разобраться в многообещающей для высокопроизводительных вычислений теме, изучите тексты в нашей подборке. От объяснения, что такое матричные расширения и какие они бывают, мы плавно погрузимся в спецификации разработки и протестируем матричное расширение на эмуляторе.

Читать далее

Компьютерное зрение на C++: пишем приложение для поиска объектов под Android

Уровень сложностиСредний
Время на прочтение25 мин
Количество просмотров13K

Привет, Хабр! Меня зовут Кирилл Колодяжный, я пишу код на С++ для систем хранения данных в YADRO. Помимо основной работы, интересуюсь машинным обучением и его возможностями, в том числе на «плюсах». Недавно мне стало интересно разобраться, как развернуть модель компьютерного зрения на мобильном устройстве с операционной системой Android.

 Я изучил доступные инструменты, чтобы понять, какие части приложения можно реализовать на С++, и написать само приложение для телефона. Ни в одном из материалов на подобную тему не описывают реализацию такого приложения от начала до конца, поэтому я собрал свой опыт в серию статей.

Расскажу, как реализовать обнаружение объектов в реальном времени с помощью камеры на мобильной платформе Android с использованием библиотек PyTorch и NCNN и моделей компьютерного зрения YOLOv5 и YOLOv4. Шаблон моего приложения пригодится тем, кто хочет проверить прототип функциональности для компьютерного зрения на С++, использующий OpenCV на Android, но не хочет глубоко погружаться в программирование под Android. 

В первой части цикла мы:

• создадим проект в IDE Android Studio,

• реализуем сессию непрерывного захвата изображений камеры,

• преобразуем изображения в матрицу OpenCV, чтобы сделать дальнейшую работу удобной.

Читать далее
1
23 ...

Информация

В рейтинге
Не участвует
Работает в
Зарегистрирован
Активность

Специализация

Project Manager, Business Analyst
Senior
Project management
Organization of business processes
Scrum
Automation of processes
People management
Building a team
Project planning
Business process management