Как стать автором
Обновить
386.78
YADRO
Тут про железо и инженерную культуру
Сначала показывать

CodeChecker: анализируем большой проект на С++ быстро, эффективно и бесплатно

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

Привет, Хабр! Меня зовут Давид, еще недавно я был стажером YADRO, а сейчас работаю в отделе разработки ПО поддержки сетевой аппаратной части. У нас в команде есть большой проект на более 100 000 строк, написан на C++ (и частично на С). Код переписывался много раз, а за самим проектом на правах легаси особо никто не следил: работает — не трогай. Когда я пришел в команду, у меня была задача: привести код в порядок и отловить ошибки, которые пропускает компилятор — например, возможное разыменование нулевого указателя, неинициализированные переменные или простые опечатки. 

Одним из очевидных решений было использование статического анализатора. Выбрали довольно известное коммерческое решение, но долгие прогоны не привели ни к чему дельному. Решили поэкспериментировать с другими вариантами статических анализаторов, сделав ставку на open source. Поиски привели к инфраструктуре CodeCheсker, которая предоставляет удобный интерфейс запуска и настройки статических анализаторов через аргументы командной строки. С помощью инструмента удалось достичь результатов, которые значительно превысили значения, полученные на коммерческом решении.  

Под катом расскажу, что же такое CodeCheсker, как с ним работать и почему его точно стоит попробовать на большом проекте.

Читать далее
Всего голосов 35: ↑35 и ↓0+50
Комментарии10

Делаем правильный анаглиф своими руками

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


Всем привет. Сегодня я поделюсь методом создания высококачественных анаглифических изображений с минимальными трудозатратами. Динозавров делать не будем: возьмем любую фотографию из семейного архива и получим полноценное трехмерное изображение. Сразу скажу, что концепция не новая, но мы будем использовать современные наработки и даже напишем простейший плагин для GIMP, от которого, впрочем, придется отказаться…
Читать дальше →
Всего голосов 39: ↑38 и ↓1+52
Комментарии7

Три способа оптимизировать работу с памятью на Go с помощью memory pools

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

Привет, Хабр! Меня зовут Александр Иванов, я разрабатываю средства управления сетевыми элементами сотовой связи и пишу на языке Go в YADRO. Однажды я работал над приложением, которое испытывало пиковые нагрузки каждые 10 минут, но выполнить обработку памяти быстро мешал Garbage Collector. Чтобы решить эту проблему, я изучил несколько способов реализации memory pool и провел испытания скорости работы. 

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

Читать далее
Всего голосов 38: ↑38 и ↓0+52
Комментарии18

Хоп — и mic drop: как подготовить технический доклад, если вы никогда этого не делали

Время на прочтение10 мин
Количество просмотров822

Публичное выступление на митапе или конференции — не только возможность поделиться своими идеями и опытом, но и шанс заявить о себе. Но многие не знают, как подступиться к этой задаче. В статье опишем семь простых шагов, которые помогут вам подготовиться к выступлению и не закончить его с мыслями «больше никогда». В основе текста — советы консультанта IT-конференций Романа Поборчего, который подготовил к выступлениям уже более 2 000 разработчиков и инженеров.

Читать далее
Всего голосов 11: ↑9 и ↓2+9
Комментарии0

Как мы построили модель прогнозирования выхода жестких дисков из строя

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

Неожиданный выход HDD из строя — неприятная для сервера ситуация. Выяснение причин и замена жесткого диска (не всегда это можно сделать «горячим» способом) почти всегда означают даунтайм работы системы. При этом подсказок о своем состоянии HDD не дает, специалисты могут ориентироваться только на время эксплуатации диска и свой опыт.  

Меня зовут Владислав Маркин, я инженер по разработке ПО искусственного интеллекта в YADRO. Вместе с моим коллегой, экспертом Андреем Соколовым, мы решили применить возможности ИИ в прогнозировании проблем с HDD. Задача не тривиальная: модели нужны данные для обучения и тренировки, а где их найти — отдельный вопрос. 

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

Читать далее
Всего голосов 15: ↑15 и ↓0+22
Комментарии2

Первый питерский митап по Go в этом сезоне: построим PaaS без хардкода и научимся отлаживать приложение в проде

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

25 сентября в 19:00 инженеры из YADRO и AvitoTech расскажут, как подготовить CEL в конфиге, тестировать с Ginkgo/Gomega и аккуратно отлаживать сервис в проде.

Если придете на митап офлайн, сможете полюбоваться «железом» для ЦОД и телеком-операторов, код для которого пишут Go-разработчики YADRO, и посетить выставку open source-инструментов из сообщества Go SPB. Регистрируйтесь, чтобы попасть на митап в Питере или получить ссылку на трансляцию, где можно будет задавать вопросы спикерам.

Читать далее
Всего голосов 10: ↑9 и ↓1+14
Комментарии0

Действительно ли большие языковые модели галлюцинируют? Эксперимент

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

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

Меня зовут Полина, я инженер по разработке ПО искусственного интеллекта в YADRO. Вместе с коллегами я разрабатываю системы на базе генеративных моделей, в том числе вопросно-ответных ассистентов. В рамках одного из проектов мы вместе с экспертом команды Андреем Соколовым задались вопросом: действительно ли проблема галлюцинаций так актуальна для современных предобученных LLM в вопросно-ответном сценарии.

Для этого мы провели эксперимент на собранном датасете. Попутно рассказали про модели-трансформеры и дали строгое определение понятию «галлюцинации LLM». Все подробности — под катом.

Читать далее
Всего голосов 24: ↑24 и ↓0+34
Комментарии22

Проблемы поколений: история уязвимостей мобильных сетей от 1G до 5G

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

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

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

Читать далее
Всего голосов 14: ↑14 и ↓0+20
Комментарии2

Вирт, Кормен и диалекты Basic: что изучить про алгоритмы и структуры данных разработчикам на С++

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

Попросили инженеров YADRO поделиться избранными материалами про алгоритмы и структуры данных для «плюсовиков». Вспомнили и «классику» вроде книги Никлауса Вирта, и более современные источники, а также рассказали, почему стоит посвятить им время.

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

Читать далее
Всего голосов 12: ↑12 и ↓0+16
Комментарии5

Как учить языки программирования и создавать базу знаний с помощью метода из прошлого века: опыт четырех инженеров

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

Недавно в комментариях к тексту про построение личной базы знаний на Хабре читатель отметил, что в таких статьях не хватает примеров работы с техническими данными. Давайте это исправим. Мы спросили у инженеров YADRO и технарей из сообщества «Цеттелькастен и Персональные базы знаний», как и для чего они ведут свои заметки.  Герои статьи используют Obsidian и Emacs, а также личные Telegram-каналы, чтобы изучать новые языки программирования, проходить технические собеседования и вести рабочие записи.

Для тех, кто пока не знаком с методом социолога Никласа Лумана, в начале статьи рассказали об истории Цеттелькастена и показали, как выглядело хранилище данных полвека назад. Короб с ящиками и карточками стал прототипом современных систем для ведения заметок, которыми пользуются инженеры. 

Читать далее
Всего голосов 45: ↑42 и ↓3+55
Комментарии37

Математика матричных расширений: как происходит умножение матриц на примере T-Head Matrix Extension

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

Привет, Хабр! Я Андрей Соколов, инженер-программист в группе разработки математических библиотек. Месяц назад моя коллега Валерия запустила цикл статей про матричные расширения, ускоряющие операции над матрицами. Вы уже смогли узнать, что они делают и какие существуют, какие из них разрабатываются для открытой архитектуры RISC-V.

В заключительной статье цикла разберем пример использования матричного расширения T-Head под RISC-V для реализации алгоритма матричного умножения. Сначала кратко рассмотрим наивную скалярную реализацию и блочный вариант алгоритма. Затем реализуем аналогичный вариант с использованием матричного расширения — как для квадратных матриц, так и матриц произвольного размера. Второй случай интересен тем, что возникает необходимость обработки так называемых «хвостов» — блоков неправильной конфигурации. В заключение немного расскажу, какие идеи можно использовать для дальнейшей оптимизации матричного умножения, и поделюсь полезными ссылками.

Статья не показывает пошаговую оптимизацию умножения матриц для достижения максимума FLOPS и не учит, как писать вычислительные ядра на ассемблере. Она демонстрирует использование матричного расширения и основные идеи оптимизации матричного умножения. Постарался описать все простыми словами, с иллюстрациями и небольшими вставками кода.

Читать далее
Всего голосов 26: ↑26 и ↓0+37
Комментарии7

Лучшие доклады последних FPGA-Systems: от выбора стратегии верификации до Quake 2 на RISC-V

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

Привет, Хабр! Пришло время поделиться самыми интересными докладами с конференций FPGA-Systems 2024.1, по мнению их участников. Под катом вас ждут топ-10 ошибок FPGA-инженеров, история о запуске Quake 2 на RISC-V, рассказ о новом высокоуровневом языке описания аппаратуры и несколько выступлений про укрощение сложностей верификации.

Читать далее
Всего голосов 14: ↑14 и ↓0+21
Комментарии0

Погружение в матрицу: расширение RISC-V от T-Head

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

Продолжим нашу «антологию матричных расширений» текстом про независимое матричное расширение RISC-V от компании T-Head. 

Почему мы рассматриваем именно его? Интересно понять, что из себя представляет будущее стандартное матричное расширение RISC-V, попробовать реализовать алгоритм с его использованием, соотнести это со своим предыдущим опытом низкоуровневых оптимизаций. Кроме того, это интересная возможность попробовать написать программу для расширения, которого еще нет ни в одном процессоре, и запустить ее на эмуляторе.

А еще ISA этого расширения весьма минималистична и, на мой взгляд, идеально подходит для тех, кто никогда не использовал матричные расширения в своем коде, но хочет попробовать (или узнать, как это выглядит изнутри). Не переживайте, текст не требует опыта низкоуровневых оптимизаций математических библиотек: погружение в матрицу будет постепенным.

Начать погружение
Всего голосов 24: ↑24 и ↓0+31
Комментарии3

Самый быстрый фреймворк на Диком Западе: ускоряем Django-rest-framework вместе с Rust

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

Всем привет! Меня зовут Роман Кабаев, я инженер в отделе разработки инструментов тестирования компании YADRO. Вместе с коллегами мы разрабатываем собственную тест-менеджмент систему с открытым исходным кодом TestY.

На этапе запуска TestY в качестве фреймворка для разработки мы выбрали Django, так как он позволяет в максимально короткие сроки реализовать MVP. Однако развивать такой продукт — добавлять фичи, наращивать число пользователей и объем хранимых данных в системе — бывает сложно.

Мы действительно быстро запустили MVP, перевезли данные из TestRail с помощью плагинов, и команды тестирования YADRO уже более года пользуются системой. Но есть одно «но»: пользовательские сценарии разных команд сильно отличаются. Так, добавление в систему более полумиллиона тестов привело к просадке скорости работы определенных эндпоинтов, завязанных на древовидных структурах. 

Спойлер: камнем преткновения для нас стали CPU-bound задачи с большим количеством данных, о том, как я это выяснил, расскажу ниже. Изучив, как можно ускорить выполнение таких задач в Python, я протестировал несколько решений и нашел оптимальное. Если вы разрабатываете веб-приложение на Django или Python и так же, как я, хотите ускорить работу сервиса, читайте эту статью.

Читать далее
Всего голосов 22: ↑22 и ↓0+28
Комментарии17

Открытый онлайн-курс по цифровой схемотехнике: от истоков до первого устройства

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

Привет, Хабр! У нас новости. Мы запустили онлайн-курс по цифровой схемотехнике для начинающих. Он подойдет всем, кому интересно собрать из простых компонентов готовое устройство на макетной плате и узнать больше о «внутренностях» электроники. Присоединяйтесь сами или рассмотрите курс для совместного досуга с ребенком, младшим братом или сестрой. Возможно, кому-то он поможет не только найти новое занимательное хобби, но и определиться с будущей профессией.

Всего в курсе 11 практических роликов с подробными теоретическими материалами к каждому. Будем не просто смотреть на картинки с электрическими схемами, а проводить эксперименты своими руками. Начнем с истоков: познакомимся с оборудованием и линейными электронными компонентами, а закончим сборкой секундомера с применением микросхем цифровой логики. Все подробности — на странице курса и под катом.

Читать далее
Всего голосов 58: ↑57 и ↓1+72
Комментарии23

Заглянем в хрустальный шар: как продвигается разработка стандартных матричных расширений RISC-V

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

Привет, Хабр! В предыдущем тексте мы рассмотрели все существующие матричные расширения. Возникает вопрос: ждать ли в ближайшее время новых расширений для матричных операций? Ответ — да, они разрабатываются прямо сейчас для архитектуры RISC-V. Новость может вызвать удивление, ведь в обзоре уже есть целых два матричных расширения RISC-V. Но оба эти расширения — кастомные, и, конечно же, в консорциуме RISC-V International задумались о разработке стандартного решения. 

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

Читать далее
Всего голосов 39: ↑38 и ↓1+50
Комментарии9

Итеративная сборка FPGA-проектов

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

Всем привет! Я Константин Павлов, старший инженер по разработке систем на кристалле. Работаю в группе прототипирования в компании YADRO, занимаюсь отладкой на ПЛИС исходного кода, который затем будет работать в ASIC.

В статье я расскажу об итеративной (многократной) сборке проектов ПЛИС. Зачем она нужна и какими способами — вендорскими и самописными — ее возможно реализовать. А еще на примерах из практики покажу, каких впечатляющих результатов можно добиться, используя итеративную сборку.

Читать далее
Всего голосов 12: ↑12 и ↓0+18
Комментарии26

Панорама матричных расширений: от x86 до RISC-V

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

Матричное расширение ISA CPU… Что это и что оно делает? Уже из названия понятно, что это расширение позволяет ускорять операции над матрицами на CPU. Но задумывались ли вы когда-нибудь, какие они бывают, когда появились, кто и как их создает?

Меня зовут Валерия Пузикова, я эксперт по разработке ПО в компании YADRO, к.ф.-м.н. Около 15 лет разрабатываю численные методы для решения задач линейной алгебры, дополненной и виртуальной реальности, аэрогидродинамики. Вычислительные задачи таких классов всегда приводят к работе с матрицами больших размерностей, поэтому критически важным становится ускорение матричных операций, в том числе с помощью расширений. 

Матричные расширения появились не так давно — чуть более трех лет назад. Несмотря на это, они есть у каждой уважающей себя процессорной архитектуры, в том числе и у относительно молодой открытой RISC-V. Почему их так много и чем они отличаются? Поддерживаются ли разреженные матрицы? Об этом и многом другом вы узнаете из статьи. Приготовьтесь, будет интересно и (спойлер!) без многоэтажных формул. 

Читать далее
Всего голосов 63: ↑62 и ↓1+78
Комментарии38

Docker для Angular-приложений: от простого к несложному

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

Привет, Хабр! Меня зовут Артём, я разрабатываю фронтенд систем управления сетью в YADRO. С Docker знаком давно и часто его использую. Но когда столкнулся с задачами, где недостаточно просто скопировать шаблонный Docker-файл и подправить пару строчек, решил больше погрузиться в эту тему. 

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

Читать далее
Всего голосов 18: ↑17 и ↓1+18
Комментарии4

No fail, no gain: как мы исправили более миллиона тестов, проверяя оптимизацию библиотеки OpenBLAS под RISC-V

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

Открытая архитектура RISC-V активно развивается: в стандарт добавляются новые расширения и инструкции, разрабатываются новые ядра и SoC. Поскольку многие компании видят перспективы архитектуры и готовы использовать ее в продакшене, создается программный стек для высокопроизводительных вычислений — RISC-V HPC (High Performance Computing). Прогресс сопровождает формирование нового тренда — OpenHPC. Он заключается в технологической независимости от решений коммерческих компаний. Причем это относится не только к ПО, но и к железу. 

Чтобы концепция OpenHPC реализовывалась быстрее, нужно, чтобы к инициативе присоединилось как можно больше компаний, помогающих в развитии экосистемы решений для RISC-V HPC. Меня зовут Андрей Соколов, я инженер-программист в компании YADRO. В R&D-команде мы поставили перед собой задачу: изучить, как можно поддержать архитектуру RISC-V со стороны библиотек линейной алгебры BLAS и LAPACK. Тестирование одной из open source-библиотек привело нас к интересным открытиям, о которых я расскажу под катом. 

Результаты тестов
Всего голосов 43: ↑42 и ↓1+53
Комментарии4

Информация

Сайт
yadro.com
Дата регистрации
Дата основания
Численность
1 001–5 000 человек
Местоположение
Россия
Представитель
Ульяна Малышева