Компилируем Python так, чтобы он работал везде
Это история о том, как написать компилятор Python, генерирующий оптимизированные ядра и при этом позволяющий сохранить простоту кода.Предисловие
Под капотом современных AI-систем: разбираем железо
Как объединить по сети вычислители? Что происходит при компиляции кода для железа под капотом и какие есть нюансы при работе с AI в пространстве ядра? ИИ с ноги ворвался во все сферы разработки, работы — вагон и маленькая тележка. Но на чём и как она должна ехать? У каждой программы есть свои требования, универсальных советов нет.
ИИ и развёртка в фотонику
Всем очевидно: индустрия ИИ стремительно развивается. Но здесь появляется одно гигантское слоноподобное НО. В последнее десятилетие лидеры ИИ предпочли развиваться экстенсивно - то есть, например, ЛЛМ максимизируют объём моделей. Это в свою очередь тянет за собой целую цепочку гигантских затрат: от электростанций до передовых числодробилок. Из последнего - xAI готовится запустить
Важные языки. Часть 2. Lisp
Начало историиВ конце лета 1955 года в колледже Дартмут под руководством доцента кафедры математики Джона МакКарти состоялся семинар, посвященный вопросам искусственного интеллекта. Результатом этого семинара стал запрос на проведение исследовательского проекта.Целью исследования стала проверка гипотезы, что все детали обучения или любые другие особенности интеллекта в принципе могут быть описаны так, что станет возможно создать машину для их моделирования.В проекте предполагалось рассмотреть следующие вопросы:
AsmX G3: Архитектура кодировщика ZGEN. Как hwm генерирует машинный код amd64
AsmX G3: Переосмысление взаимодействия с кремнием с нуля.Мы не просто создаем еще один компилятор. Мы переосмысливаем, как программное обеспечение взаимодействует с кремнием, исходя из первых принципов. Старые методы, основанные на громоздких, монолитных бэкендах, устарели. Они медленные, сложные в поддержке и непрозрачные. AsmX G3, с его компилятором ZGEN, меняет это.В этой статье мы погрузимся в ядро нашего подхода: как наш hwm (Hardware Machine Factory) — компонент, который является, по сути, автономным модулем, — транслирует человекочитаемый ассемблер в чистый машинный код x86_64
Efficient Computer: программируем по кафелю
Efficient Computer — стартап из Питтсбурга, основанный в 2022 году командой исследователей из Университета Карнеги-Меллона. Между прочим, именно Университет Карнеги-Меллона является основным поставщиком кадров в MicrosoftResearch.Efficient Computer разрабатывает принципиально новую не Фон-Неймановскую архитектуру процессоров и программную экосистему.
AsmX G3: Как работает ZGEN компилятор под капотом
ВведениеМы не просто обновляем инструменты, мы переосмысливаем сам процесс создания программного обеспечения. AsmX G3 — это не очередное инкрементальное улучшение. Это фундаментальный сдвиг. В этой статье я расскажу, как именно работает наш новый компилятор ZGEN, что находится под капотом и какие возможности это открывает. Мы рассмотрим архитектуру, новые фичи, которые всё ещё на стадии тестирования, и то, как мы решаем сложнейшие задачи компиляции. Добро пожаловать в будущее ассемблера.Режимы компиляции: Два пути к одной целиМой компилятор AsmX G3 предлагает два кардинально разных режима: JITC
AsmX G3: От высокоуровневого ассемблера к нативному коду. Разбираем компилятор ZGEN
ВведениеAsmX G3 — это наш ответ на избыточную сложность современного системного программирования. Это язык ассемблерного уровня, созданный для тех, кто требует полного контроля над железом, но не хочет жертвовать читаемостью и современными синтаксическими удобствами. Мы взяли мощь ассемблера и обернули её в синтаксис, который не вызывает желания выстрелить себе в ногу.Долгое время AsmX полагался на JIT-компиляцию — быстро, удобно, но не всегда достаточно для задач, где каждый такт процессора на счету. Для создания по-настояшему производительных, нативных приложений мы разработали ZGEN (Zero-latency Code Generation
О времени, сложности и мотивации: знакомство
Приветствую вас, читатели.Подозреваю, что вы из мира программирования. Приглашаю вас присоединиться к увлекательному рассказу о том, как один энтузиаст решил доработать свой любимый язык.Я собираюсь рассказать об увлекательном опыте внесения существенных изменений в очень сложную архитектуру кода.Будет несколько статей, это первая. Для тех, кто хочет весь список сразу, держите:Часть 1: О времени, сложности и мотивации: знакомствоЧасть 2: О времени, сложности и мотивации: история поражения и победы
Вызовы функций, стек, куча и продолжения. Часть 2
В первой части статьи мы рассмотрели общую семантику применения функции в различных языках программирования и реализацию императивного вызова функции в машинном коде в стековом и бесстековом вариантах. Теперь мы рассмотрим теорию и практику реализации императивного вызова функции в модели продолжений (continuations): что такое продолжения, зачем нужны явные и неявные продолжения, как при помощи продолжений реализовать различные используемые в языках программирования управляющие конструкции.

