Обновить
9
1.1
Anton Golovkov@udattsk

Applied Science isn't dead. It moved to the garage

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

Decima-8: Нейроморфная архитектура, оперирующая уровнями энергии

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

Современные нейроморфные системы сталкиваются с двумя независимыми проблемами.

Проблема 1: Кодирование информации

Бинарные спайковые сети (SNN) передают градации сигнала через:
Частотное кодирование (множество тактов на одно значение)
Увеличение количества линий передачи

Проблема 2: Аппаратная реализация

Аналоговые мемристорные кроссбары обещают естественную нейроморфность, но содержат следующие проблемы:
Шум и дрейф параметров
Недетерминизм вычислений
Каждый чип требует индивидуальной калибровки

Традиционные Network-on-Chip (NoC) добавляют overhead:
~40% площади кристалла уходит на маршрутизаторы
~70% энергии тратится на пересылку данных, а не вычисления

Decima-8 предлагает:

Level16: кодирование уровня активации (0..15) в одном такте на одной линии. Это компромисс между бинарным представлением и аналоговой непрерывностью.
Цифровые кроссбары (эмуляция мемристорных матриц): детерминизм, воспроизводимость, отсутствие шума
Эстафетную активацию вместо пакетной маршрутизации: тайлы не передают данные друг другу, активация распространяется через граф зависимостей
Результат: фиксированная задержка, предсказуемое поведение, 0% площади на роутеры.

Читать далее

Как старый роутер съел 2.5 ГБ ОЗУ в моей вкладке, или cетевой инфаркт асинхронного кода

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

Интро

Это история о том, как «кривой» роутер научил меня смотреть на память браузера иначе. Есть вкладка с ИИ-чатом, есть WebSocket/Streaming, есть обычный i5. И есть момент, когда все это превращается в кирпич: вкладка раздувается до гигабайтов, процессор залипает, страница оживает только на пару минут после перезагрузки.

Лид

Проблема оказалась не в нейросетях и не в JS. Виновник — старый домашний роутер, который не вывозил IPv6 и фрагментацию. Итог — застрявшие пакеты, нарастающий буфер в браузере и тысячи незавершенных async/await-машин в памяти.

TL;DR

- Вкладка с WebSocket раздувается из-за сетевых затыков.
- Роутер ломает MTU/IPv6, пакеты зависают, bufferedAmount растет.
- Асинхронные цепочки не завершаются и копятся в Heap.
- Фикс: MTU 1400 + отключение IPv6.
- В коде: мониторинг bufferedAmount, таймауты и AbortController.

Симптом

- Вкладка с ИИ-чатом пухнет до 1–2.5 ГБ.
- CPU уходит в 100%, интерфейс замирает.
- Перезагрузка помогает на 5 минут, дальше все повторяется.

Читать далее

Опыт создания UI библиотеки на C++

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

Началось все почти два года назад в декабре, практически перед новым годом.

Наш основной проект (видео мессенджер) использовал WTL для Windows и GTKmm для Linux. Поддержки мака не было. Огромной неприятностью было тащить два идентичных клиента, которые, по идее, должны делать все строго одно и тоже. Разумеется, это никогда не получалось. От мысли что надо бы сделать ещё один нативный клиент для мака начинался нервный тик...

На резонный вопрос - почему сразу делалось не на Qt могу лишь ответить, что это связано с, так скажем, гурманскими предпочтениями и, отчасти, с любовью к монолитным exe. Да и не требовалось на старте ничего кроме винды.

В течении шести лет жизни с двумя кодовыми базами одного и того же, неспешно подбирались легковесные UI библиотеки написанные хотя бы в стиле C++11.

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

В 2021 году видимо Гугл работал плохо или звёзды так сошлись, но не нашлось ничего стоящего. Все что попадалось - основанные на рендеринге html проекты и обертка над wxWidgets. Сейчас то мы знаем про lvgl, да...

wxWidgets не плох, но хотелось своего рисования, без окошек под кнопки, поля ввода и списки, boost/bsd подобной лицензией, максимально лаконичной, и в идеале работающей от Windows XP / CentOS 6 на стандартном GDI / X11 до Vulcan на современных машинах.

В итоге, все же было принято волевое решение сделать минимальный UI фреймворк для этого проекта, и сразу выпускать его в Open Source под лицензией boost. 

Читать далее

Портабельный RWLock для Windows

Время на прочтение7 мин
Охват и читатели11K
RWLock — это такой примитив синхронизации, позволяющий одновременное чтение и эксклюзивную запись. Т.е. чтение блокирует запись, но не блокирует чтение других тредов, а запись блокирует все.
Читать дальше →

Информация

В рейтинге
1 821-й
Откуда
Томск, Томская обл., Россия
Дата рождения
Зарегистрирован
Активность

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

Десктоп разработчик, Фулстек разработчик
Ведущий
C++
Linux
SQL
ООП
Git
Python
PHP
REST
MySQL
Bash