Pull to refresh
83
90.1

Компания YADRO

Send message

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

Reading time13 min
Views3.7K

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

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

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

Читать далее
Total votes 19: ↑19 and ↓0+29
Comments1

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

Reading time17 min
Views1.9K

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

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

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

Начать погружение
Total votes 22: ↑22 and ↓0+28
Comments3

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

Level of difficultyMedium
Reading time15 min
Views6.5K

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

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

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

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

Читать далее
Total votes 21: ↑21 and ↓0+26
Comments14

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

Reading time10 min
Views3.5K

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

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

Читать далее
Total votes 37: ↑36 and ↓1+48
Comments9

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

Level of difficultyMedium
Reading time12 min
Views3.8K

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

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

Читать далее
Total votes 12: ↑12 and ↓0+18
Comments26

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

Reading time15 min
Views7.7K

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

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

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

Читать далее
Total votes 63: ↑62 and ↓1+78
Comments38

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

Level of difficultyMedium
Reading time16 min
Views4.3K

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

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

Читать далее
Total votes 18: ↑17 and ↓1+18
Comments4

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

Reading time22 min
Views3.6K

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

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

Результаты тестов
Total votes 43: ↑42 and ↓1+53
Comments4

Ролевая модель и интеграция c Jira: что изменилось в системе для управления тестами, которая доступна всем

Reading time6 min
Views858

В конце прошлого года мы представили TestY, тест-менеджмент систему с открытым исходным кодом, которую разработала команда YADRO на замену TestRail.

Сегодня на связи я, Александр Зырянов, QA-менеджер в департаменте контроля качества YADRO и проектный менеджер TMS TestY. После первого текста о нашей системе вы обращались к нам с вопросами и пожеланиями. Некоторые предложения мы уже планировали в новый релиз, но были и те, что мы взяли в работу именно благодаря вашей обратной связи. В этой статье расскажу о фичах, вышедших в релизе 1.3, и отвечу на вопросы о TestY в комментариях.

Читать далее
Total votes 6: ↑6 and ↓0+12
Comments2

Ужасно подробные ошибки в API: пишем на Go инструмент для работы с ними

Level of difficultyMedium
Reading time14 min
Views2.3K

Привет, Хабр! Меня зовут Александр Лырчиков, я разрабатываю систему хранения данных TATLIN.UNIFIED в YADRO. СХД — сложная система, и, если при работе произошла ошибка, она должна своевременно и понятно сообщать пользователю об этом. В большинстве веб-сервисов для этого используют баннер с надписью «Что-то пошло не так», но такой способ уведомления нам не подходит.

Мы столкнулись с проблемой, когда переданных сообщений и HTTP-кодов уже не хватает. Поэтому разработали собственный инструмент для обработки ошибок Terror (TATLIN + error). В результате работа с кодом стала проще, мы получили красивый API, а пользователи — понятное описание ошибки и локализацию текста на разные языки. В этой статье расскажу, как мы создавали Terror, чтобы вы смогли повторить решение.

Читать статью
Total votes 8: ↑8 and ↓0+10
Comments0

В далекой-далекой Galaxy: как организовать общее пространство для Ansible-контента

Reading time17 min
Views3K

Привет! Меня зовут Павел, я DevOps-инженер в YADRO. Где бы я ни работал, я был девопсом и использовал Ansible — где-то активнее, где-то меньше. В YADRO с этим инструментом работают почти все департаменты — от enterprise, где разрабатывают серверы, СХД и другое оборудование, до телекома. 

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

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

Полетели
Total votes 10: ↑9 and ↓1+10
Comments0

От и Go: доклады для гоферов про инструменты для фаззинга, kuber-кластер на Go и не только

Reading time3 min
Views2.4K

Бывает, перед инженерами встает выбор: использовать существующее open source-решение задачи или написать свое. И часто, изучив все возможные опции, разработчики предпочитают второй вариант.

Большинство докладов в нашей подборке — инструкции по созданию кастомных решений, которые инженеры и разработчики из YADRO, Avito Tech, Ozon Fintech и других технологических компаний уже опробовали в собственных продуктах. Если вашей команде не хватает инструмента для фаззинга или обработки ошибок на Go — можете сделать их по примерам, которые представили инженеры в выступлениях и презентациях.

Зайти в Go-портал
Total votes 7: ↑6 and ↓1+7
Comments0

Где увидеть косимуляцию в «железе» и RFSoC FPGA своими глазами?

Reading time3 min
Views3.1K

Уже в эту субботу, 25 мая, в Санкт-Петербурге состоится ежегодная конференция FPGA-Systems 2024.1. Еще есть возможность присоединиться офлайн: не только послушать доклады про организацию верификации, ошибки FPGA-специалистов и пообщаться с коллегами, но и посмотреть на любопытные стенды, подготовленные инженерами. Один из них — «черный ящик» на КДПВ, в нем — симбиоз трех симуляторов для моделирования систем на кристалле. Что внутри — читайте под катом. 

А еще — раскрываем тайну, кто будет приглашенным спикером московской FPGA-Systems, которая пройдет 1 июня, вслед за первой конференцией.

Читать далее
Total votes 13: ↑11 and ↓2+16
Comments0

Cервисный дизайн: как мы проектируем функционал обслуживания продуктов

Reading time13 min
Views1.3K

При разработке и производстве программно-аппаратных комплексов в первую очередь думают о функциональности для конечного потребителя. Сложная система типа сервера или системы хранения данных (СХД) должна работать без сбоев, не отставать в производительности от конкурентов, эффективно решать задачи пользователей. Вопросы комфорта обслуживания и диагностики таких систем сервисными инженерами и заказчиком зачастую имеют более низкий приоритет.

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

Читать далее
Total votes 8: ↑7 and ↓1+12
Comments1

Берем ответственность за вопросы: как задавать их правильно

Reading time9 min
Views4.7K

Привет, Хабр! Я Оксана Нечитайлова, руководитель отдела сервисного дизайна продуктов в YADRO. Руковожу различными командами уже более 17 лет и за это время поняла: многие недооценивают навык формулирования правильных вопросов. Большинство специалистов уверены, что это некое «врожденное» умение. Но в реальности рабочих задач не каждый может так формулировать вопросы, чтобы получать на них полезные ответы.

Умение правильно задавать вопросы — это навык, который можно развить. И нужен он не только менеджерам и тимлидам, а всем, потому что мы задаем много вопросов по работе каждый день.

В статье расскажу:

какие виды вопросов бывают и какие ошибки в них допускают чаще всего,

какие практики повысят навык формулирования вопросов,

как не вестись на манипулятивные вопросы и избегать их в своей речи.

Читать далее
Total votes 18: ↑17 and ↓1+22
Comments1

Настраиваем серверные платформы с помощью PowerShell-модуля: от проверки конфигурации до монтирования образа

Level of difficultyEasy
Reading time31 min
Views4.8K

Привет! Меня зовут Константин, я ведущий инженер по разработке ПО в компании YADRO. Разрабатываю инструменты сопровождения оборудования, которое мы производим, в том числе серверов линейки VEGMAN. Один из таких инструментов — специальный модуль для PowerShell, который позволяет управлять серверными платформами посредством BMC, или Baseboard Management Controller.

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

Читать далее
Total votes 9: ↑9 and ↓0+12
Comments19

Инженерный FPGA-драйв: обсуждаем инструменты для работы с ПЛИС и запускаем Quake 2 на российском RISC-V

Reading time4 min
Views2.8K

Cобираем FPGA-разработчиков и сочувствующих им на встречу сообщества FPGA-Systems в Москве. Уехали из столицы? Подключайтесь онлайн. 

1 июня в 11:00 семь инженеров расскажут, как применять FPGA-плату в промышленной автоматизации, работать с инструментом ИРИС (самое время узнать, что это), реализовать контроллер SATA на ПЛИС и многое другое. А если вы любитель запускать Doom на чем ни попадя, вас заинтересует кейс инженера-программиста из YADRO, который запустил Quake на отечественном RISC-V-модуле. 

Помимо этого, будет секретный спикер, которого мы объявим ближе к событию. Знайте, что мы уже настраиваем межконтинентальный телемост. Регистрируйтесь, чтобы не пропустить. 

Узнать больше
Total votes 17: ↑16 and ↓1+18
Comments0

Этому городу нужна конференция по FPGA: шесть актуальных докладов про разработку микроэлектроники в Санкт-Петербурге

Reading time3 min
Views1.9K

Приглашаем верификаторов, RTL-инженеров и FPGA-разработчиков на конференцию FPGA-Systems 2024.1 в Санкт-Петербурге и онлайн. Обсудим аспекты безопасности в рамках систем на кристалле, тестирование верификационных компонентов, фреймворк PyUVM и его использование для верификации цифровых дизайнов ASIC и FPGA, разработку трансиверов и многое другое. 

Регистрация уже открыта — заполняйте форму по ссылке и присоединяйтесь к конференции. Под катом — полная программа встречи.

Читать далее
Total votes 8: ↑8 and ↓0+10
Comments0

Lane margining: как оценить качество PCIe-соединения без дополнительной аппаратуры

Level of difficultyMedium
Reading time17 min
Views5.4K

При запуске новых плат и устройств с PCIe-соединениями недостаточно просто вставить карту в слот. Нужно так настроить эквалайзеры, редрайверы, пресеты и ретаймеры, чтобы на каждой полосе «поднялся линк», то есть установилось соединение. Это значит, что приемопередатчики на обоих концах распознали друг друга, договорились о кодировке и скорости передачи.

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

Читать далее
Total votes 50: ↑50 and ↓0+60
Comments22

5 способов писать эффективный код на Go: от названий переменных до архитектуры

Level of difficultyEasy
Reading time8 min
Views11K

Если вы задумывались, какие практики использовать, чтобы писать код на Go быстро и качественно, этот материал для вас. Руководитель группы разработки подсистем Геннадий Ковалев и эксперт по разработке ПО Даниил Подольский обсуждают пять способов повысить эффективность разработки в команде Go-программистов: они расскажут, как называть переменные, составлять документацию и продумывать архитектуру так, чтобы специалистам в команде и смежных отделах было легко работать с написанным кодом. 

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

Читать далее
Total votes 10: ↑8 and ↓2+8
Comments8

Information

Rating
55-th
Location
Россия
Works in
Registered
Activity