Инженер по разработке системного ПО для систем на кристалле (SoC/Верификация)
Москва
Команда системных программистов SoC/Верификация участвует в проектах по разработке систем на кристалле (SoC) с архитектурой RISC-V. Команда отвечает за подтверждение работоспособности RTL дизайна SoC. На летней стажировке предстоит заниматься:
- исследованием продуктов ведущих производителей RISC-V и блоков, входящих в состав SoC;
- разработкой и портированием низкоуровневых драйверов устройств (HAL – hardware abstraction level);
- разработкой функциональных тестов для проверки работоспособности блоков SoC;
- взаимодействием с разработчиками RTL, FPGA и Linux для формирования сценариев верификации дизайна SoC.
Работа предполагает погружение в особенности современной и быстроразвивающейся архитектуры RISC-V и современных SoC с точки зрения системного программиста.
Требуемые знания и навыки:
- Знание языка С на высоком уровне.
- Опыт использования GCC, Make/CMake.
- Знание Bash и/или Python на уровне написания простых скриптов.
- Знание английского на уровне чтения технической документации.
Дополнительно приветствуем:
- Опыт написания программ на Assembler для RISC-V/ARM/x86 или др. архитектур.
- Опыт работы с FPGA-прототипами, логическими анализаторами протоколов.
- Опыт работы с низкоскоростными и/или высокоскоростными интерфейсами: UART, GPIO, I2S, SPI/QSPI, CAN и DDR, PCIe, USB, Ethernet, SATA, eMMC.
- Знание SystemVerilog.
- Понимание принципов UVM-верификации.
Инженер по разработке системного ПО для систем на кристалле (SoC/BSP Linux)
Москва
Команда системных программистов SoC/BSP участвует в проектах по разработке систем на кристалле (SoC). Создание Linux BSP включает в себя работу над Linux Kernel & device drivers, QEMU, пользовательскими утилитами и библиотеками.
На летней стажировке предстоит заниматься:
- разработкой и портированием драйверов Linux kernel;
- разработкой и портированием загрузчиков;
- адаптацией ядра ОС (Linux);
- взаимодействием с разработчиками RTL, FPGA и верификаторами;
- исследованием продуктов ведущих зарубежных производителей RISC-V.
Работа предполагает погружение в особенности современной и быстроразвивающейся архитектуры RISC-V и современных SoC с точки зрения системного программиста.
Требуемые знания и навыки:
- Уверенное знание языка C.
- Опыт использования GCC, Make/CMake.
- Знание Bash и/или Python на уровне написания простых скриптов.
- Опыт использования Linux kernel (сборка ядра и модулей).
- Английский язык – чтение технической документации.
Дополнительно приветствуем:
- Опыт написания программ на Assembler под RISC-V/ARM/x86 или другие архитектуры.
- Опыт работы с загрузчиками
- Опыт работы с FPGA инструментами, логическими анализаторами протоколов.
- Опыт работы с низкоскоростными и/или высокоскоростными интерфейсами: UART, GPIO, I2S, SPI/QSPI, CAN и DDR, PCIe, USB, Ethernet, SATA, eMMC.
Инженер по разработке встроенного ПО
Москва / удаленная работа
Как и в любом компьютере, в сервере есть свой UEFI/BIOS и BMC (baseboard management controller). Летний стажер присоединится к команде разработки одного из проектов с открытым исходным кодом. На стажировке студент будет решать следующие задачи:
- Исправление ошибок и разработка новых функций;
- Взаимодействие со схемотехниками и трассировщиками в процессе запуска новых версий и ревизий плат;
- Возможно также непосредственное участие в работах по UEFI/BIOS.
Требуемые знания и навыки:
- Хорошее знание C, достаточное для периодических работ с драйверами Linux и загрузчиками;
- Знание C++;
- Базовое знание Linux;
- Базовые знания цифровой и аналоговой схемотехники.
Инженер по разработке программных средств анализа производительности
Нижний Новгород
В задачи команды входит написание инструментов анализа производительности для разработчиков программного и аппаратного стека. Инструменты – это сложные программы по сбору, обработке и визуализации данных о производительности. Данные могут быть получены из разных источников (аппаратура, OS и др.) в соответствии с методологией, позволяющей пользователю эффективно выявлять узкие места в производительности и находить способы их адресации.
Требуемые знания и навыки:
- Навыки программирования на C/C++ и скриптовом языке;
- Интерес к теме анализа и оптимизации производительности приложений и систем;
- Базовые знания алгоритмов и структур данных;
Дополнительно приветствуем:
- Знание принципов работы операционных систем, архитектуры вычислительных систем и компьютерных сетей.
Инженер по разработке решений для программно-аппаратного дизайна
Нижний Новгород
Наша команда работает над решениями для программно-аппаратного дизайна. Мы помогаем разработчикам аппаратуры строить архитектуру, основываясь на оценке производительности целевого программного обеспечения. Во время летней стажировки студенты смогут попробовать себя в одном из следующих направлений:
- Совместный программно-аппаратный дизайн (HW/SW Co-Design): исследование и анализ целевого ПО, рекомендации разработчикам аппаратуры по требованиям к производительности и параметрам отдельных блоков;
- Разработка инструментов характеризации и трассировки исполнения ПО;
- Разработка моделей и симуляторов для оценки производительности на другой платформе;
- Создание, выбор и классификация бенчмарков для анализа производительности;
- Анализ пользовательских приложений, исследование производительности.
Требуемые знания и навыки:
- Навыки программирования на C/C++
- Опыт работы в Linux
- Представление об архитектуре CPU
- Базовые знания x86 или RISC-V ассемблера
- Английский язык – чтение технической документации
Дополнительно приветствуем:
- Опыт работы с симуляторами
- Навыки программирования на Python
Инженер по разработке библиотек математических алгоритмов
Нижний Новгород
Сложно найти современную технологическую область, в которой не используются вычислительные библиотеки, в их написании и поддержке требуются знания как особенностей оптимизации программ, так и знание математики. Работа в этом направлении может напомнить олимпиадную физику или математику и даёт большой простор для творчества и проверки разных подходов к достижению цели.
Студенты получат следующие навыки:
- Знание архитектуры RISC-V и её отличий от х86;
- Понимание особенностей реализации вычислительных библиотек;
- Углублённое владение искусством программирования и оптимизации ПО;
- Знание вычислительных алгоритмов и способов их реализации.
Требуемые знания и навыки:
- Знание языка программирования C
- Знание основ математического анализа
- Базовое понимание микроархитектуры
- Английский язык – чтение технической документации
Дополнительно приветствуем:
- Понимание основ оптимизации производительности
- Дух экспериментатора
Инженер по разработке современных систем мобильной связи
Нижний Новгород
Наша команда занимается разработкой технологий и оборудования беспроводной связи, включая следующие направления:
- Проектирование архитектур систем беспроводной связи;
- Исследования и разработка технологий для современных систем связи;
- Реализация программных моделей систем связи для анализа их характеристик и оптимизации алгоритмов цифровой обработки сигналов;
- Разработка программно-аппаратных блоков обработки сигналов на FPGA (ПЛИС);
- Реализация тестового окружения. Тестирование функциональности систем связи на современном лабораторном оборудовании;
- Проектирование и разработка программного обеспечения для современных систем беспроводной связи.
Требуемые знания и навыки:
- Интерес к исследованиям в области проектирования систем беспроводной связи и оптимальной обработки сигнала;
- Базовые знания одного из языков программирования: Matlab/C++/Python;
- Базовые знания в области цифровой обработки сигналов, теории информации, беспроводной связи;
- Английский язык – чтение технической документации.
Дополнительно приветствуем:
- Опыт разработки аппаратных блоков на языках Verilog, SystemVerilog или в средах программирования Matlab, Simulink
- Опыт применения FPGA (ПЛИС), DSP процессоров, микроконтроллеров
Инженер по разработке ПО искусственного интеллекта
Нижний Новгород
Основной задачей этого направления является анализ производительности ПО искусственного интеллекта и оптимизация ИИ фреймворков, в том числе под архитектуру RISC-V. В рамках летней стажировки студентам предстоит решить одну из трех задач (на выбор):
- Разработка и оптимизация алгоритмов классического машинного обучения. В рамках летней интернатуры мы предлагаем поработать над задачей по ускорению приложения для поиска фильмов. Предоставляется Jupyter Notebook, где реализован поиск фильмов по аннотации с применением OpenSource библиотеки, необходимо оптимизировать наиболее нагруженные участки кода библиотеки под архитектуру RISC-V;
- Необходимо проанализировать производительность открытого фреймворка для нейронных сетей на плате c процессором RISC-V, а также улучшить производительность за счёт оптимизации;
- Разработка системы измерения производительности Deep Learning / Machine Learning алгоритмов. Задача может состоять в добавлении к системе измерения производительности нового фреймворка или проверке корректности выхода различных моделей.
Требуемые знания и навыки:
- Знание линейной алгебры, готовность работать над задачами, требующими активного использования математического аппарата;
- Навыки программирования на C/C++;
- Опыт работы с OC Linux;
- Английский язык – чтение технической документации.
Дополнительно приветствуем:
- Понимание основных принципов работы алгоритмов классического машинного обучения;
- Представление о нейронных сетях;
- Навыки программирования на Python;
- Опыт работы с cmake, git.
Инженер по разработке и автоматизации тестирования на Python
Санкт-Петербург
Наши команды занимаются созданием систем и инструментов поддержки тестирования и разработки. Мы работаем с pytest, Jenkins и docker.
Летний стажер погрузится в процесс разработки системы резервного копирования или примет участие в создании системы оркестрации пайплайна.
На стажировке вы научитесь писать красивый код на Python, проектировать сервисы, узнаете, чем помогает хороший дизайн тестов, какие трудности стоят на пути создания качественного продукта, и почему стартап из гаража, к сожалению, – скорее, красивый миф.
Требуемые знания и навыки:
- Знание Python, Bash
- Опыт работы с git
- Уверенная работа c Linux (Ubuntu)
- Английский язык – чтение технической документации
Дополнительно приветствуем:
- Jenkins (базовые знания; опыт работы будет преимуществом)
- Опыт работы с контейнеризацией (Docker)
Инженер по разработке ПО для систем хранения данных
Санкт-Петербург
Наша команда разрабатывает децентрализованное объектное хранилище корпоративного уровня. На стажировке будет возможность усовершенствовать навыки программирования на Go и поработать как в открытой, так и во внутренней части проекта.
Требуемые знания и навыки:
- Знание языка программирования Go
- Linux на уровне «настроил сервер minetest в докере»
- Базовые понятия о распределённых системах
- Понимание сетей и основных протоколов сетевых соединений
Дополнительно приветствуем:
- Python
- Базовая криптография
- Понимание, зачем нужен блокчейн «не для монеток»
- Опыт работы с S3 или его аналогами
- Английский язык – чтение технической документации
Инженер по ручному тестированию в системе хранения данных
Санкт-Петербург
Команда занимается тестированием в компоненте Data Path системы хранения данных, которая представляет собой современное хранилище, созданное для решения разноплановых задач.
Студентам предстоит проводить ручное тестирование, прогонять готовые тестовые сценарии и писать их самостоятельно, участвовать в регрессе и smoke-тестировании, работать с документами и командой QA.
Требуемые знания и навыки:
- Базовые знания архитектуры современных компьютеров
- Понимание работы операционной системы Linux
- Знание о теории тестирования
- Английский язык – чтение технической документации
Дополнительно приветствуем:
- Знание основ ООП
- Знание Python
- Опыт написания скриптов на bash
DevOps Инженер
Москва / Санкт-Петербург / Нижний Новгород / удаленная работа
DevOps инженеры обеспечивают более эффективный и быстрый процесс развертывания, конфигурирования и управления ПО, что позволяет сократить время от разработки до выпуска продукта. Они также помогают устранять проблемы в работе приложений и обеспечивают непрерывную интеграцию, поставку и развертывание (CI/CD) на всех этапах разработки.
Летние стажеры смогут приобрести опыт в области виртуализации, контейнеризации, CI/CD систем, современных облачных оркестраторов и использовать его для повышения эффективности и масштабируемости внутренней вычислительной инфраструктуры группы компаний YADRO. Во время летней стажировки предлагаем студентам присоединиться к одной из пяти команд и решить задачу:
- Предстоит развернуть кластер виртуальных машин для микросервисов. Потребуется развернуть и настроить окружение, а также освоить автоматический деплой VM для CI/CD. В рамках стажировки студент познакомится с различными инструментами и утилитами для развертывания и настройки Dev окружения, включая, но не ограничиваясь: Kubernetes, Proxmox и OpenStack.
- Cоздание CI для тестирования библиотеки описания сервисов:
- Запуск контейнеров/VM в docker/podman/k8s/openstack с распространенными OpenSource продуктами, такими как PostgreSQL, MariaDB, MongoDB, Apache Kafka, Redis, RabbitMQ;
- Настройка системы обнаружения сервисов;
- Создание тестовых заданий, изменяющих метрики;
- Прогон заданий на тестовом стенде, подтверждение корректности и полноты получаемых метрик.
- Предлагается разработать инфраструктуру CI/CD для тестирования и развертывания системы микросервисов. Система предназначена для разделения ресурсов между командами разработки и тестирования. Вы узнаете принципы программирования микросервисов на Go, а также научитесь работать с Docker и Jenkins (в т.ч. с использованием Python).
- Предлагается автоматизировать процесс развертывания сервисов, исполняемых в Docker среде. В процессе выполнения задачи студент познакомится и получит опыт работы с:
- системой сборки make;
- платформой контейнеризации Docker;
- сервером автоматизации CI/CD процессов Jenkins;
- написанием небольшого пайплайна деплоя и редеплоя сервиса.
- Студенту предстоит решить задачу оптимизации обслуживания запросов пользователей через написание на Python системы автоматизации внесения изменений в конфигурацию платформы.
- В рамках стажировки студент погрузится в сферу автоматизированного тестирования, научится определять критическую нагрузку на инфраструктуру, познакомится с IaC, PaaS и множеством других терминов из мира DevOps. Задача отлично подойдет студентам, кто хочет писать на Python, мечтает стать частью команды, где много-много Dev’a и щепотка Ops’а, а также уже писал небольшие веб-сервисы.
Требуемые знания и навыки:
- Хорошее знание Linux (Debian), Git, Bash
- Знание Python/Go
- Базовое знание или желание быстро научиться работе с Jenkins и Groovy
- Английский язык – чтение технической документации
Дополнительные знания и навыки:
- Базовые знания о виртуализации/контейнеризации и системах оркестрации
- Базовые знания сетевых технологий
- Знание Ansible