Обновить
59
0

Инженер

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

Задача про мышей и отраву

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели8K

Есть 1000 одинаковых колб с прозрачной жидкостью.

В 999 колбах вода, а в одной случайной - отрава.

Если мышь попробует отраву, то она погибнет через 1 час.

Как найти отравленную колбу за минимальное время?

Читать далее

Процессор на коленке ч.1

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


Предыстория


Захотелось мне как-то перевести управление станком на ПЛИС, а для этого понадобилось ядро процессора. Поиск на opencores не особо помог, x86 лицензированный, ARM лицензированный, NIOS… ну, вы поняли. Если выдумывать свою систему команд, может получиться криво, и главное, где брать компилятор. В общем, всё было сложно, так что на время идею пришлось отложить.
С недавних пор ситуация изменилась, архитектура RISC-V пошла в массы.

Читать дальше →

Дискретные тригонометрические функции, машинный эпсилон и автоматическое дифференцирование

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

Попалась мне недавно статья Синус, косинус, квадратный корень FixedPoint. Автор размышляет как можно не затратно рассчитывать координаты и углы в микроконтроллере. Попробовал я подсказать автору пару аппроксимаций, но он оказался разговорчив только на тему "упадка автоматизации в РФ", а по делу как то не сложился диалог. Посмотрел, такие статьи не редкость. Например, очень хорошая статья Как посчитать синус быстрее всех на Xабре. В общем разгрузил себе голову на майских праздниках от главного хобби - геометрической алгебры.

В процессе изучения всего этого, возник у меня вопрос - а зачем вообще нужно аппроксимировать sin,cos, arctan и еще и в привязке к числу в двоичной системе, если есть декартовы координаты?

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

Автоматическим дифференцированием можно назвать любую конечную разность, например dy=(y(x+ε)-y(x-ε))/(2*ε). Разность взята центральная, так как она дает меньшую погрешность.

 ε это машинный ноль. За счет округления до младшего бита его главное свойство: ε^2=0.

Эта статья по сути не более, чем описание основных моментов идеи. И если у кого то появится желание поставить эту идею на строгие математические рельсы, с удовольствием готов поучаствовать. Кто в этом случае опубликует финальную версию мне искренне не важно.

Читать далее

Как нейросети, RL и байесовскую оптимизацию стали использовать на ускорителях заряженных частиц

Время на прочтение6 мин
Охват и читатели2.2K

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

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

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

Читать далее

Быстрое приближённое умножение и деление чисел с плавающей точкой

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

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

Читать далее

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

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

Всех, кто работает с софт-ядрами, наверное, можно разделить на две категории: первые хотят запустить на своем ядре Linux, вторые — DOOM. Я отношусь ко второй: идея запустить DOOM на ядре YRV, что я синтезирую на отладках, любезно предоставленных FPGA-Systems.ru, преследует меня постоянно и не дает спать.

Как запустить DOOM с ходу, непонятно, ведь у меня все-таки некоммерческий микроконтроллер. Поэтому начну с подготовительного упражнения, чтобы понять, что возможно реализовать на аппаратной части. Когда мы говорим про DOOM, то вспоминаем другие игры любимой компании id Software — Wolfenstein 3D, Catacomb 3D и Hovertank 3D. В них все начинается с алгоритма отсечения лучей (raycasting), с которым и будем поработать. С raycasting можно получить и doom-образный геймплей, надо лишь улучшить разрешение и текстуры.

Читать далее

Релятивистская трассировка лучей

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

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

Для этого, мы сначала выведем уравнения движения лучей света, напишем интегратор Рунге-Кутты на GLSL, и наконец, объединив одно с другим, получим фрагментный шейдер, который вычисляет путь лучей, отправленных из камеры назад во времени.

Читать далее

Когда ты больше не просто пишешь код. Ты управляешь энергией

Время на прочтение7 мин
Охват и читатели9.4K

Привет, Хабр!

Когда-то я писал веб-приложения. Решал задачи бизнеса, деплой в прод, REST, тесты, метрики, кубики. Всё было нормально. Но в какой-то момент мне стало… скучно.

Да, задачи были интересными. Команда — отличной. Но где-то внутри появилась пустота. Хотелось делать что-то настоящее. Осязаемое. Что-то, где за твоим кодом — больше, чем UI и API. Хотелось влиять на реальный мир.

Так я попал в мир электропривода.

Читать далее

С борта МКС впервые по лазерному каналу была передана широкополосная информация на наземный пункт

Время на прочтение4 мин
Охват и читатели38K

2 октября 2012 года с Российского сегмента Международной космической станции впервые по лазерному каналу была передана широкополосная информация на наземный пункт


В рамках космического эксперимента (СЛС) по отработке аппаратуры и демонстрации российской технологии создания космических лазерных систем передачи информации, проводимого ОАО «НПК «СПП» совместно с ОАО «РКК «Энергия», осуществлен сеанс передачи информации с терминала связи, установленного на борту РС МКС, на лазерный терминал наземного пункта станции оптических наблюдений «Архыз» на Северном Кавказе (филиал ОАО «НПК «СПП»).
Была передана информация общим объемом 2,8 Гигабайт со скоростью 125 Мбит/с.
Этот шаг открывает дорогу к широкому внедрению в космическую технику России лазерных линий связи, которые при меньших массогабаритных параметрах бортовой аппаратуры потенциально могут обеспечивать исключительно высокую скорость информационного потока (до десятков гигабит в секунду).

Новости Федерального космического агентства
Читать дальше →

Затолкаем, братцы!!! UART Lite через PCIe прямиком в Linux: драйвер за вечер (почти)

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

Что если можно было бы подключить своё AXI-устройство на FPGA к Linux через PCIe за вечер? В этой статье рассказываю, как написать драйвер для UARTLite через XDMA, собрать свою TTY и начать работать с GPS прямо из терминала!

Залетай, что смотришь....

Мониторим потребление памяти в Linux-системе

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели8.7K

Сколько себя помню, меня всегда привлекали счётчики памяти в Linux: смотришь в условный htop – в плане потребления CPU вроде всё +/- понятно, а вот память всегда считалась как-то не так, как ты это на первый взгляд ожидаешь, и долгое время у меня было довольно наивное и ошибочное представление о механизмах её работы.

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

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

Читать далее

Виноград, Фурье и немного наивности: 4 подхода к реализации сверток с простыми примерами

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

Привет, Хабр! Меня зовут Кирилл Колодяжный, я работаю в YADRO и продолжаю изучать машинное обучение на С++. Я уже писал, как реализовать модели для распознавания лиц на фото и для поиска объекта в пространстве с помощью computer vision. Ссылки на материалы ищите в конце статьи.

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

У статьи будет вторая часть: про особенности реализации одного из этих алгоритмов с использованием CUDA в рамках фреймворка PyTorch и про то, как адаптировать его под свои задачи.

Читать далее

CMake: Подключение riscv-arch-test для тестирования имплементации rv32

Время на прочтение6 мин
Охват и читатели716

При написании своей VM для RISC-V возникла необходимость в тестировании.
Сначала я пытался писать юнит-тесты самостоятельно, но выходило, что я просто копирую логику из основной.

И по сути тестирую не соответствие спецификации, а соответствие моему пониманию.
Через некоторое время я наткнулся на официальный набор тестов для RISC-V и решил их использовать.

Это помогло найти несколько багов в моём коде.

Что ж.

Небольшие заметки про модель памяти на примере RISC-V

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

Идея статьи родилась после прочтения многочисленных источников в интернете по барьерам и моделям памяти.Так же, был просмотрены соответствующие видео с разъяснением. Много где в целом всё достаточно хорошо разжевано. Статья не претендует на исчерпывающий материал. Скорее, это обзорное описание на тему модели памяти в связке с RISC-V. Не рассчитана на entry level, рекомендуется сперва почитать что нибудь вводное.

Навряд ли кому то необходимо детальное знание внутренней архитектуры процессора на уровне RTL (register-transfer level), как и глубокого понимания принципов модели памяти, согласованности. Да и обычно вся эта информация берется из соответствующей литературе от производителя, других книгах по оптимизации. Предполагаю, что авторы в том или ином виде могу знать более глубокие вещи, чем представлены в открытых источниках. Возможно, они работали в компании производителя (Intel, например), общение, конференции, сообщества.

Но может ли быть источник лучший, чем исходники CPU? Навряд ли. Вы не найдете в открытом доступе исходники процессоров Intel, AMD и любых других. ARM за это денежки получает, продавая права на архитектуру и готовые спроектированные блоки. А вот для RISC-V такой источник есть - исходники полноценного суперскалярного out-of-order процессора от Berkley.

Не так давно был разработан язык Chisel на замену Verilog и аналогов. Он на базе Scala. А, так как это Scala, мы можем использовать IDE и внятную навигацию по исходникам. Но в исходники просто так не пойдешь, сперва надо приобрести необходимые фундаментальные знания, чтобы понимать в целом что такое разработка на уровне RTL. Неплохо бы разобраться с Verilog и с базовыми понятиями - всякие там защелки, регистры, мультиплексоры и тп. Это я и решил сделать и начал с книги “Паттерсон, Хеннесси: Архитектура компьютера и проектирование компьютерных систем”. Она безумно крутая и очень понятная. Затем прочитал несколько книг по FPGA и Verilog и даже купил учебную FPGA плату, но руки до неё так и не дошли. Это позволило сформировать для себя какую то необходимую картину того, как функционирует CPU, как происходит проектирование микроконтроллеров. 

Читать далее

Упрощать сложно. История одного провала

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели6K

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

В общем, проблема оказалась отнюдь не мала

Разработка и производство современных ASIC/SoC глазами тополога

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

Привет, Хабр! Меня зовут Илья, я работаю в команде физического дизайна в дивизионе полупроводников YADRO. Проектирую цифровые микросхемы, помогаю с образовательными программами и привлекаю студентов в наше дело. В этой статье я расскажу про разработку современных микросхем с фокусом на этап проектирования топологии, объясню, что такое SoC (System-on-Chip, cистема на кристалле) и как мы проектируем их в нашей команде. А напоследок покажу, где об этом всем можно узнать на собственном опыте.

Читать далее

Выбираем стандарт языка Си в 2025 году

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели6.7K

Шёл 2025 год, а я задался вопросом: «Не пора ли нашей команде выбрать стандарт языка Си, на котором будет вестись основная часть разработки?» С одной стороны кажется, что этот вопрос давно должен быть решён, стандарт языка указан в code style, конечно, после «холиваров», череды обсуждений, обид, проклятий и прочих маленьких трагедий. А если нет? А если нет, то так ли это важно? Что там нового может быть в языке Си? Стоит ли этот вопрос вообще того, чтобы тратить время? В этой заметке поделюсь с уважаемым читателем тем интересным, что я узнал и вспомнил во время неспешного исследования этого вопроса, относительно холодными и тёмными вечерами.

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

Сделать мобильного робота автономным? Это просто

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

Как отправить робота на автономное патрулирование и научить его «видеть»? Разбираем реальный кейс создания роботизированной системы мониторинга на базе отечественной платформы: выбор оборудования, интеграция ИИ и примеры кода. Делимся опытом, как научить робота собирать данные, обходить препятствия и почему отказались от модной робособаки.

Читать далее

Разгон Мандельброта: SIMD с бубнами, OpenMP и CUDA

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

Построение множества Мандельброта — классический пример чрезвычайно параллельной задачи (embarrassingly parallel problem).

На первом курсе я впервые столкнулся с такой проблемой: тогда мы изучали SIMD-инструкции в курсе архитектур вычислительных систем. Эта тема сразу меня увлекла, и я захотел углубиться в дальнейшие оптимизации, но в течение семестра мне не хватало ни времени, ни знаний. Спустя год я решил восполнить этот пробел.

Вначале мы разберем наивную реализацию, поиграемся с интринсиками (intrinsics) и, не теряя переносимости, заставим компилятор генерировать нам SIMD-инструкции. Далее добавим многопоточность и в заключение обесценим все наши старания несколькими строчками на CUDA.

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

Читать далее

ASML: Создание самых сложных машин на Земле

Время на прочтение17 мин
Охват и читатели15K

ASML возникла в 1984 году как совместное предприятие Philips и ASM, и которое с самого начала рассматривалась как провальный проект. Но сегодня ASML имеет рыночную капитализацию более 300 млрд евро и является одной из самых важных компаний для технологического развития мира. Компании удалось создать, по сути, технологическую монополию в самом передовом оборудовании для производства чипов —литографии в экстремальном ультрафиолетовом диапазоне (EUV) - технологии, необходимой для создания самых современных чипов, с которой не смогла справиться ни одна другая компания в мире...

От аутсайдера-задиры до лидера литографии

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

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

Несмотря на внутренний скептицизм, Philips увидела спасение в партнерстве с ASM International , другой голландской компанией по производству оборудования для полупроводников, которая сегодня занимает лидирующие позиции на рынке оборудования для так называемого атомно-слоевого осаждения (ALD) и эпитаксии, используемых в передовом производстве микросхем. В 1984 году ASML была создана как совместное предприятие Philips и ASM со штаб-квартирой в Вельдховене. Поначалу компанию в значительной степени считали неудачной, не имея ни коммерческой жизнеспособности, ни даже надлежащего офиса. Ее первым рабочим пространством был набор деревянных бараков в кампусе Philips в Эйндховене. Моральный дух был низким, многие сотрудники скептически относились к шансам предприятия на успех, рассматривая его скорее как проект, обреченный на провал с самого начала.

Читать далее

Информация

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

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

Инженер встраиваемых систем
Средний
Linux
C
C++
Embedded linux
Встраиваемая система
Операционная система реального времени
Python
Английский язык
Assembler
Программирование микроконтроллеров