Ежедневный отчёт TileLang (2026-09-30)
Окно мониторинга: последние 24 часа (2026-09-29 07:00 ~ 2026-09-30 07:00, пекинское время; предыдущий отчёт был 09-29, окно стыкуется без разрывов и без перекрытий). Источники: GitHub (проверка пушей в 29 репозиториях организации tile-ai, в окне было 7 репозиториев с пушами: tilelang, TileOPs, TileOPs-nightly, tilelang-ascend, tilelang-hygon, TileFoundry, TileOPs.github.io; в основном репозитории 2 слияния и 7 новых открытых, в TileOPs 17 слияний, в репозитории Ascend 2 исправления, в Hygon и TileFoundry по 1 слиянию, 1 ночной снимок с нулевыми сбоями), Google News RSS с несколькими группами запросов на китайском и английском (через прокси, ноль совпадений), Hacker News, arXiv, проверка репозиториев сообщества
Индекс выпуска
- Главное за сегодня: публичный выпуск бэкенда Ascend 950 — открыт PR нативного бэкенда с 134 коммитами, номер версии синхронно повышен до 0.1.15 (09-30)
-
- Основной прогресс проекта
- 1.1 Основной репозиторий: слияние упрощённого устранителя неиспользуемых привязок — чтение после записи, побочные эффекты и ссылки на метаданные имеют регрессионную страховку (09-29)
- 1.2 Основной репозиторий: восстановление попаданий ccache при сборке Windows wheel — параметры clang-cl переписаны раздельно (09-29)
- 1.3 Очередь основного репозитория: семь новых открытых и линия исправлений атомарных операций, открытых PR — 116 (09-29/09-30)
- 1.4 TileOPs: слияние четырёх ядер INT8-квантизации и деквантизации — побитовое выравнивание с эталоном torch (09-29/09-30)
- 1.5 TileOPs: слияние ядра групповой INT4-квантизации, два блочных квантования в очереди (09-30)
- 1.6 TileOPs: слияние слоя операторов сэмплирования — шесть операторов, стоявших в очереди в прошлом выпуске, официально зачислены (09-29)
- 1.7 TileOPs: четыре изменения по вниманию — опускание выражения FP8, выгрузка varlen в общую память, исправление головной размерности 512 для SM89 (09-29/09-30)
- 1.8 TileOPs: два изменения по интерфейсу ядер и управлению общей памятью (09-29)
- 1.9 TileOPs: три изменения по CI и инженерным стандартам — дымовой тест с восемью параллельными, абсолютные импорты, однократная проверка манифеста (09-29/09-30)
- 1.10 TileOPs: два изменения по ускорению поэлементных операций — откат деления раз на поток, загрузка f32 двумя по 16 байт (09-29/09-30)
- 1.11 Ночной снимок: 1030 проверок корректности, 1355 бенчмарков, нулевые сбои и ошибки (09-30 раннее утро)
- Основной прогресс проекта
-
- Адаптация под множественные бэкенды (Ascend / MetaX / Hygon / Moore Threads)
- 2.1 Ascend: ветка выпуска 950 снова исправлена внутри окна — восстановлены векторизация broadcast и скалярное сокращение (09-30)
- 2.2 Ascend: два исправления в репозитории ascend — однострочный патч TVM раскрывает истинную причину отката (09-29)
- 2.3 Hygon: слияние асинхронного копирования и улучшения lowering swizzle кэша (09-29)
- 2.4 MetaX / Moore Threads / MLIR Ascend: официальные репозитории молчат (проверка 09-30)
- Адаптация под множественные бэкенды (Ascend / MetaX / Hygon / Moore Threads)
-
- Экосистема и стороны внедрения
- 3.1 TileFoundry: слияние четвёртого этапа AtomSched — понижение HIR до TIR и CLI планирования (09-29)
- 3.2 Сайт документации: операторы квантизации, сэмплирования и MLP с разделяемыми экспертами вошли в справочник API (09-30)
- 3.3 Проверка сторон внедрения: в TileKernels и FlashQLA нет пушей внутри окна (09-30)
- 3.4 Ритм версий: открыт PR повышения до 0.1.15; страницы релизов TileRT и TileFoundry не обновляются (09-30)
- Экосистема и стороны внедрения
-
- Сообщество, руководства и мероприятия
- 4.1 Проверка репозиториев сообщества: внутри окна новых коммитов нет (09-30)
- 4.2 Медиа и академическая сторона: в Google News ноль совпадений, на arXiv новых препринтов нет (09-30)
- Сообщество, руководства и мероприятия
-
- Наблюдения за тенденциями
- 5.1 От контракта к ядрам: семейство квантизации реализовано за 48 часов
- 5.2 Ascend 950: нарратив множественных бэкендов движется от «репозитория адаптации» к «нативности в основном репозитории»
- 5.3 Инженерная несущая способность: рефакторинг CI при росте объёма тестов на +21%
- 5.4 Пробелы и точки риска
- Наблюдения за тенденциями
- Приложение: материалы и пояснения к проверке
Главное за сегодня: публичный выпуск бэкенда Ascend 950 — открыт PR нативного бэкенда с 134 коммитами, номер версии синхронно повышен до 0.1.15 (09-30)
Дата: 2026-09-30 Источник: PR бэкенда Ascend 950 (#3308)/ PR повышения версии (#3309)/ ветка выпуска ascend-950-0930
30 сентября ранним утром в основном репозитории TileLang были открыты два знаковых PR: нативный бэкенд для Ascend 950 с пометкой «Public Release 9/30» и повышение номера версии до 0.1.15. Первый в объёме 134 коммитов, 379 файлов, +79956/-733 переводит линейку Ascend из отдельного репозитория адаптации в полноценный бэкенд основного репозитория:
- Сквозной путь: добавлен языковой диалект Ascend, охватывающий запуск ядер, выделение памяти, перемещение данных и вычислительные операции, включая аппаратно-специализированный lower, автоматическое планирование и синхронизацию, генерацию кода устройства, компиляцию Bisheng и загрузку среды выполнения NPU; пользователь через
target="ascend"может напрямую разрабатывать ядра для Ascend 950. - Модель программирования: комбинирование Cube (AIC)
T.gemmи вычислений Vector (AIV) в одном ядре; областиT.SimdVF/T.SimtVFдля смешанного программирования SIMD и SIMT; явное выделение UB / L1 / L0; блочное перемещение и межъядерная передача черезT.copy/T.dual_copy; путь низкой точности GEMM с блочным масштабированием MXFP8 / MXFP4. - Компилятор и планирование: автоматический вывод фрактальных раскладок Ascend и нормализация хранилища;
AutoScheduleвыполняет планирование Cube/Vector с учётом зависимостей и задержек, конвейеризацию и многобуферизацию; вставка синхронизации внутри ядра и между ядрами с учётом планирования, с устранением избыточной синхронизации, автоматическим выделением и переиспользованием флагов. - Интеграция сборки: флаг сборки
USE_ASCEND, цепочка компиляции Bisheng, загрузка среды выполнения и запуск ядер входят в основной репозиторий; подключение к мультибэкендной архитектуре через существующий интерфейс бэкендов с переиспользованием общих компиляторных средств. - Критерии оценки (в PR): сравнение с Torch NPU, оценка по 4 формам для BF16 GEMM, преобразования FP8 и обратного прохода GQA; для GEMM и GQA сообщается TFLOP/s, для преобразования FP8 — эффективные GB/s.
- Масштаб и авторство: ветка синхронизирована с main, опережает на 134 коммита, в окне всё ещё добавляются исправления (последний коммит восстанавливает векторизацию широковещательной рассылки и скалярную редукцию, раннее утро 09-30); в Co-author указано 10 человек, включая 2 разработчиков с подписью deepseek.com.
- Связь: открытый в тот же день PR повышения версии до 0.1.15 меняет только одну строку VERSION (с 0.1.14 до 0.1.15) и фиксируется рядом с бэкендом 950; будет ли это единым релизом, пока неизвестно.
Оценка: в случае слияния Ascend 950 впервые будет реализован в форме нативного бэкенда основного репозитория (ранее поддержка Ascend в основном обеспечивалась отдельным репозиторием адаптации), а «мультибэкендность» повысится с адаптации через зеркальный репозиторий до возможности магистральной ветки; для пользователей разработка операторов для Ascend 950 и ядер в стиле DeepGEMM станет возможной напрямую на TileLang. Риск заключается в стоимости рецензирования и поддержания стабильности после слияния из-за объёма (379 файлов, около 80 тысяч добавленных строк), к тому же производительность на стороне NPU на данный момент имеет публичные критерии только в виде графиков внутри PR.
1. Ключевые достижения проекта
1.1 Основной репозиторий: первоначальное удаление устранения неиспользуемых привязок — регрессионное покрытие для чтения-после-записи, побочных эффектов и ссылок в метаданных (09-29)
Дата: 2026-09-29 Источник: Устранение неиспользуемых привязок (Simplify) (#3293)
- Новая запись из прошлого выпуска слита в этом окне: для
tl.SimplifyдобавляетсяUnusedBindRemover, который многократно удаляет неиспользуемыеBindNode, когда их значения могут быть отброшены без потери связанных побочных эффектов и чтений volatile-буферов. - Граничные правила: обход рефлексивных полей и контейнеров для сохранения привязок, на которые ссылаются метаданные; привязки, используемые в определениях буферов и предикатах загрузки, сохраняются всегда; регрессионные тесты покрывают неиспользуемые макро-привязки, чтение-после-записи, побочные эффекты, volatile-чтения, ссылки в метаданных и узлы разделяемых выражений.
- Значение: расширение возможностей очистки
tl.Simplifyидёт в том же направлении, что и исправление границ модульных остатков на прошлой неделе (#3294) — «что можно удалять и что обязательно сохранять» на уровне преобразований постепенно превращается в проверяемый явный список.
1.2 Основной репозиторий: сборка Windows wheel восстановила попадания в ccache — параметры clang-cl переписаны раздельно (09-29)
Дата: 2026-09-29 Источник: Исправление сборки Windows (#3305)
- Проблема: после восстановления ccache в сборке Windows wheel TVM по-прежнему перекомпилировался многократно — около 32 минут за раз, 554 промаха, доля попаданий всего 20.63%, однотипно на трёх ночных сборках подряд. Причина в том, что CMake выдаёт для clang-cl склеенный параметр
-imsvc<path>, а ccache 4.9.1 учитывает его в хэше предобработки; при изменении каталога зависимостей PEP 517 менялся ключ кэша; существующая обёртка нормализует текст предобработки, но не может убрать различия в командной строке. - Исправление:
-imsvc <path>переписан в раздельную форму, ключ кэша восстановил стабильность; в тот же день создано и слито, автоматически подготовлена сводка с комментариями рецензирования.
1.3 Очередь основного репозитория: семь новых PR и линия исправлений атомарных операций, всего 116 открытых PR (09-29/09-30)
Дата: 2026-09-29, 2026-09-30 Источники: список PR основного репозитория / исправление атомарных операций (#3307) / пример DeepSelect (#3304) / упакованное векторное сравнение (#3303)
- За окно открыто 7 новых: #3303 — упакованное векторное сравнение FP16/BF16 (исправляет дефект #3302, встроенные маски нормализованы к 0/1, корректное «не равно» для NaN, для CUDA ниже 12 и низких вычислительных возможностей сохранён скалярный запасной путь); #3304 — коммит примера TileLang для DeepSeek DeepSelect Top-K (без inline PTX, зависит от рассматриваемых #3303 и #3296, на RTX 5090 приведено 129 групп измерений в сравнении с torch.topk); #3306, #3307 — линия исправлений атомарных операций (атомарные max/min для int64 и падения AtomicStore для int64/bf16/fp16, прослеживается до нормализации типов в #1716; #3306 закрыт без слияния, #3307 продолжен на рассмотрении); #3308, #3309 — см. сегодняшние ключевые пункты.
- Обновления существующих: SM120 register A GEMM (#3286), вывод потоков z3 (#3291), перенос строк при импорте C-исходников (#3289), расширение popcount (#3300) и др. — в течение окна были обновления.
- Температура очереди: открытых PR — 116 (в прошлый период 112); за это окно слито 2 (#3293, #3305), картина «открывается много, сливается мало» сохраняется.
1.4 TileOPs: слиты четыре ядра INT8-квантизации и деквантизации — побитовое совпадение с эталоном torch (09-29/09-30)
Дата: 2026-09-29, 2026-09-30 Источники: по-тензорная деквантизация (#2304) / по-канальная деквантизация (#2306) / по-тензорная квантизация (#2307) / по-канальная квантизация (#2308)
- Прошлый принцип «сначала контракт, потом реализация» вступил в фазу исполнения ядер: всего четыре операторных слоя семейства INT8 для квантизации и деквантизации реализованы на уровне ядер, статус в перечне переведён в
implemented, выход побитово совпадает с эталонной реализацией torch (включая граничный случай с обнулением scale из-за недополнения). - По-тензорная деквантизация (#2304):
qчитается как плоская последовательность, каждый поток на каждом шаге преобразует один 16-байтовый выходной вектор, на каждый блок из 64 потоков — четыре шага, причём сначала выдаются все загрузки; кодовые точки преобразуются через целочисленное сложение со смещением экспоненты и FADD (в обход I2F); выход внутри блока сначала попадает в разделяемую память, затем выполняется пакетная запись (на SM90 используетсяcp.async.bulk); добавлен вспомогательный механизм загрузки с L1 evict-last (streaming_load.h). - По-канальная деквантизация (#2306): вектор при пересечении строк выбирает между масштабами двух строк, выполняется в одной программе при произвольном K; по-канальная квантизация (#2308): один CTA монопольно владеет строкой, строка постоянно живёт в регистрах, масштаб вычисляется через обратное значение и два FMA с корректным округлением, начало и конец строки совместно используют вектор с соседней строкой с применением маски.
- По-тензорная квантизация (#2307): выполняется за один кооперативный запуск — первая фаза читает и обменивает фрагменты amax (сеточный барьер), вторая фаза квантует фрагменты; ядро строится при каждом вызове с явным объявлением границ компиляции.
- Прогресс: из 9 spec-only позиций семейства квантизации 7 уже перешли в реализацию ядер (шесть INT8 + одна INT4), для поблочного FP8 и SmoothQuant PR ядер пока не наблюдается.
1.5 TileOPs: слито ядро по-групповой квантизации INT4, две блочные квантизации в очереди (09-30)
Дата: 2026-09-30 Источники: по-групповая квантизация INT4 (#2317) / поблочная квантизация (#2316, на рассмотрении) / поблочная деквантизация (#2318, на рассмотрении)
- INT4 групповое квантование заняло два ядра:
packed_weight,weight_scale,weight_zeroпобитово совпадают с эталоном torch и используют формат упаковкиGemmW4A16FwdOp.repack— выравнивание формата цепочки весов W4A16 является самым практичным пунктом совместимости в этот раз. - Ключевые моменты ядра: каждая lane хранит один блок из 32 элементов, в пределах шага K из 128 элементов не требуется межlane-пересылка данных; четырёхна четырёхсловный транспонированный вывод даёт 16 байт непрерывного хранения; размер группы поддерживает степени двойки от 32 до 1024; также предусмотрена строчная версия ядра.
- На рассмотрении два коммита: поблочное квантование INT8 (#2316) и поблочная деквантование (#2318) — оба используют шаблон планирования из #2304, закрывая последний из трёх уровней «тензор/канал/блок».
1.6 TileOPs: слой сэмплирующих операторов слит — шесть ядер, стоявших в очереди в прошлом выпуске, официально учтены (09-29)
Дата: 2026-09-29 Источник: слой сэмплирующих операторов (#2299)
- Шесть ядер слоя сэмплирующих операторов, отмеченных в прошлом отчёте как «в очереди на рассмотрение» (
TopKMask,MinPMask,TopPMask,TopKTopPMask,SamplingFromProbs,ChainSpeculativeSampling), были слиты 09-29 во второй половине дня: слой операторов, рабочие нагрузки и тесты подготовлены за один раз, эталонные значения выровнены с FlashInfer 0.6.16 (три уровня bf16/fp16/fp32), генерация случайных чисел реализована через целочисленную тензорную арифметику Philox4x32-10 и согласуется с известными векторами ответов Random123. Слой операторов по-прежнему декларативный (kernel_types = {}), реализация ядер ожидается в последующих PR.
1.7 TileOPs: внимание — четыре коммита: понижение выражения FP8, вынос varlen в разделяемую память, исправление головной размерности 512 для SM89 (09-29/09-30)
Дата: 2026-09-29, 2026-09-30 Источник: листовой оператор FP8 GQA (#2294)/ вынос varlen префилла (#2313)/ головная размерность 512 для SM89 (#2312)/ расслоение тестов скользящего окна (#2311)
- Понижение FP8 GQA (#2294): обнуление выходного аккумулятора заменено на
T.clear, маска хвоста KV выражена как учитывающий раскладку циклT.Parallel, удалены два ставших ненужными CUDA-вспомогательных элемента; относится к инкременту #2113. Рассмотренная замена softcap наT.tanhнамеренно исключена из-за отката — сохранён путь приближённого tanh. - Вынос varlen в SMEM (#2313): выход префилла varlen GQA больше не записывается разреженно из фрагмента
acc_o, а выводится целыми строками по 16 байт через ставший недействительным разделяемый буфер блока запроса, без дополнительных накладных расходов разделяемой памяти; для частичных блоков сохранена защищённая прямая запись. - Исправление головной размерности 512 для SM89 (#2312): 32-строчный блок одного warpgroup больше не оставляет блок оценок в регистрах (ранее конфликт вывода раскладки приводил к тому, что кандидат
block_m=32так и не компилировался успешно); в конфигурацию по умолчанию добавлен кандидат 32×16 (требует 68 KiB, что ниже предела SM89). - Расслоение тестов (#2311): 8 случаев varlen со скользящим окном помечены как специфичные для SM90 — ранее на SM89 они проявлялись как сбои, а не как пропуски.
1.8 TileOPs: интерфейс ядер и управление разделяемой памятью — два коммита (09-29)
Дата: 2026-09-29 Источник: интерфейс и диспетчеризация ядер (#2300)/ таблица лимитов разделяемой памяти (#2303)
- Интерфейсизация ядер (#2300): объявление интерфейса ядра для оператора с диспетчеризацией через единый поиск — семь концепций, включая «интерфейс ядра, реализация, спецификация вызова, доступность», внесены в проектный документ ops-design; замена реализации проверяется по контракту интерфейса, а не только по имени ключа, бэкенд может добавлять собственные реализации наряду со встроенными.
- Управление разделяемой памятью (#2303): лимиты разделяемой памяти сведены в единую таблицу; FP8 GEMM объявляет
supported_archs = [90](вызовы на SM89 явно отклоняются, а не ошибочно выбирают ядро TMA/WGMMA); разреженный MLA выполняет оценку нижней границы для вызовов, не помещающихся в память, и отклоняет их (например, сценарий на SM86/SM89 с 64 головами на блок и d=512 требует не менее 100 KB, что превышает лимит 99 KB, — ранее происходил сбой запуска).
1.9 TileOPs: CI и инженерные нормы — три коммита: восьмипоточный smoke-тест, абсолютные импорты, однократная проверка манифеста (09-29/09-30)
Дата: 2026-09-29, 2026-09-30 Источники: Дымовые тесты GPU с восемью параллельными процессами (#2314) / Спецификация абсолютных импортов (#2310) / Однократная проверка манифеста (#2319)
- Ускорение дымовых тестов (#2314): дымовые тесты PR переведены с одного процесса на одной карте на восемь рабочих процессов; ленивая генерация проверки подписи; попутно исправлен конфликт барьеров при декодировании bs1. Стоит отметить контекст: число тестов при пуше в основную ветку выросло с 4281 до 5174 (+21%), время выполнения pytest — с 324 секунд до 605 секунд (+87%), прирост в основном за счёт CPU-работы системы манифестов, а не тестов ядер.
- Спецификация (#2310): все импорты в
src/tileops/переведены на абсолютные и принудительно контролируются ruff TID252 (ban-relative-imports = "all", перезаписано 234 файла); проектная документация синхронизирована. - Проверка манифеста (#2319):
validate_manifest.pyзапускается один раз на PR вместо трёх (в дымовых тестах GPU этот тест занимает на критическом пути от 22 до 32 секунд), а метрика насыщения FMA теперь следует за выбранным GPU.
1.10 TileOPs: два ускорения поэлементных операций — откат деления один раз на поток, двойная 16-байтовая загрузка для f32 (09-29/09-30)
Дата: 2026-09-29, 2026-09-30 Источники: Откат деления (#2305) / Загрузка f32 и сохранение bool (#2309)
- Семейство деления (#2305):
Функции FloorDivide, Remainder и Div в режиме floor после перехода на побитовую точность в #2291 замедлились в 1,01–1,28 раза; теперьfast_funcвыполняет единую быструю проверку на поток, а точный откат с перечитыванием операндов выполняется только в потоках, где проверка не прошла; ядро сохраняет лимит в 32 регистра; в 16-битном быстром пути применяется восходящая коррекция черезa * (1/b)`. - Загрузка f32 (#2309): в двуместных ядрах с одинаковыми формами теперь выполняется две 16-байтовых загрузки на поток (в соответствии с формой XBLOCK 1024 и четырьмя warp в inductor); результаты сравнения и логических операций типа bool теперь сохраняются одним непрерывным участком на поток — строки, которые ранее отставали от torch-compile в 1,002–1,006 раза, тем самым сошлись.
1.11 Ночной снимок: 1030 проверок корректности, 1355 бенчмарков, ноль падений и ноль ошибок (раннее утро 09-30)
Дата: 2026-09-30 Источники: Коммит снимка b8f4329a35 / Метаданные окружения снимка
- В окне мониторинга — 1 снимок (09-30 02:53, run 36608962204; соответствует основной ветке TileOPs 2ce972f98f, то есть точке слияния #2313): 1030 проверок корректности (2 пропущено), ноль падений и ноль ошибок; 1355 бенчмарков (39 наборов), ноль падений и ноль ошибок. Окружение: H200, CUDA 13.2, torch 2.13, tilelang 0.1.11+cu132.
- По сравнению с предыдущим снимком (b7f5a1b4bd, 1027 проверок корректности, 1335 бенчмарков): корректность +3, бенчмарки +20; критерий по-прежнему — «ноль падений». Примечание: точка слияния этого снимка предшествует пакету квантизационных ядер (#2304–#2317); статус регрессий этого пакета отразится в следующем снимке.
2. Адаптация под множество бэкендов (Ascend / MetaX / Hygon / Moore Threads)
2.1 Ascend: 950 — снова исправления в окне релизной ветки — восстановление векторизации broadcast и скалярной редукции (09-30)
Дата: 2026-09-30 Источники: Релизная ветка ascend-950-0930
- Релизная ветка получила в этом окне мониторинга последний исправляющий коммит (раннее утро 09-30, коммит 39691ebaac): восстановлены векторизация broadcast и скалярная редукция — одно из последних исправлений PR «Public Release 9/30» в окне; ветка синхронизирована с main и опережает его на 134 коммита, основной PR всё ещё открыт. Технические подробности — в сегодняшнем фокусе.
2.2 Ascend: два исправления в репозитории ascend — однострочный патч TVM раскрывает истинную причину отката (09-29)
Дата: 2026-09-29 Источник: Патч TVM для выхода за границы при обратной трассировке (#1846)/ Очистка подмодулей CI (#1847)
- Истинная причина отката прояснилась (#1846): к фиксированному подмодулю TVM добавлена одна строка патча, исправляющая чтение за границами при генерации ошибочного стека вызовов TVM (конструкция
std::string tmp(symname, symsize)заменена на одноаргументный конструктор). Предыстория — зафиксированный в прошлом отчёте случай «#1829 откачен целиком через 4 дня после слияния»: 9 негативных компиляторных тестов, ожидающих выбросаtvm.error.InternalError, стабильно давали SIGSEGV на x86 runner и стабильно проходили на ARM runner; однофакторные A/B-эксперименты на той же машине показали, что падение вызвано именно этим дефектом TVM и не связано с логикой #1829. Патч использует существующий механизмapply_tvm_patches.sh(автоматически применяется на трёх точках входа сборки, уже применённые пропускаются, а при будущей неприменимости сборка падает с явной ошибкой, а не молча). - Очистка CI (#1847): на самохостинговых runner
actions/checkoutне очищает подмодули, аgit submodule updateпереключает указатель только при изменении commit, из-за чего патч, внесённый в TVM предыдущим PR, протекал во все последующие сборки (сборка #1846 как раз упала из-за остатка — патч не удалось применить); исправлено сбросом подмодуля перед сборкой. - Оценка: #1829 был откачен не из-за собственного дефекта — будет ли откаченная функциональность повторно предложена на чистой базовой линии, является следующей точкой наблюдения.
2.3 Hygon: улучшения асинхронного копирования и lowering кэш-swizzle слиты (09-29)
Дата: 2026-09-29 Источник: Асинхронное копирование Hygon (#13)/ коммит слияния 145fc5a8e7
- Открытый PR, зафиксированный в прошлом отчёте, слит в текущем окне (9 файлов, +497/-41): улучшены асинхронное копирование и lowering кэш-swizzle. Изменения сосредоточены в
codegen_hcu(+121/-29),op/copy.cc(+269/-8),tl_templates/hcu/copy.h(+47) иamd_buffer_addressing.hpp(+20), плюс тонкая настройка стратегии LDS для GEMM; Co-authored подпись Teng Huang. Hygon — единственный отечественный бэкенд этого выпуска, помимо Ascend, где есть продвижение кода.
2.4 MetaX / Moore Threads / MLIR Ascend: официальные репозитории молчат (проверка 09-30)
Дата: 2026-09-30 Источник: репозиторий MetaX/ репозиторий Moore Threads/ репозиторий MLIR Ascend
- MetaX (последний push 09-24), Moore Threads (09-17), MLIR Ascend (09-24) — в официальных репозиториях за окно мониторинга пушей не было; на стороне сообщества новых коммитов также нет. Активность отечественных бэкендов на этой неделе сосредоточена на Ascend (бэкенд 950 + два исправления) и Hygon (слияние #13).
3. Экосистема и потребители
3.1 TileFoundry: слияние четвёртого этапа AtomSched — понижение HIR в TIR и CLI планирования (09-29)
Дата: 2026-09-29 Источник: Четвёртый этап AtomSched (#192)/ репозиторий TileFoundry
- Поэтапное слияние объёмом 99 файлов +4885/-2885: добавлен модульный pass
ConvertHIRToTIR, понижающий подготовленный HIR планирования в проверенный TIR; добавлены три группы CLI-отчётовtilefoundry schedule finalize / facts / candidatesи удалён отклонённый workflowmatched. - Проектный подход: объявления IR и отношения доступа становятся единственным источником истины, удалены дублирующие проблемные планы, предварительное сканирование, выведенные распределения и написанные вручную аксессоры; список отчётов, сортировка, рендеринг режимов и сопоставление кандидатов HIR/TIR переведены на общую рефлексию и нейтральный реестр. Находится на стадии завершения path «планирование, управляемое объявлениями».
3.2 Сайт документации: операторы квантизации, сэмплирования и shared-expert MLP вошли в справочник API (09-30)
Дата: 2026-09-30 Источник: Обновление сайта документации (#57)
- Документационный сайт TileOPs синхронно обновляет справочник API после включения операторов квантизации, сэмплирования и MLP с общими экспертами — следует в тот же день за ритмом выхода операторов #2299, #2304–#2317.
3.3 Проверка adopters: TileKernels и FlashQLA без пушей в окне (09-30)
Дата: 2026-09-30 Источники: репозиторий TileKernels/ репозиторий FlashQLA
- DeepSeek TileKernels по-прежнему остановлен на 2026-04; последний пуш Qwen FlashQLA — 09-28 (предыдущее окно, уже сообщалось о SM100 tcgen05), в текущем окне новых коммитов нет. Публичная активность обоих adopters находится в паузе.
3.4 Ритм версий: PR повышения 0.1.15 открыт; страницы релизов TileRT и TileFoundry стагнируют (09-30)
Дата: 2026-09-30 Источники: страница релизов основного репозитория/ страница релизов TileRT/ страница релизов TileFoundry
- Основной репозиторий v0.1.14 (релиз 09-02) достиг 28 дней, PR повышения версии 0.1.15 открыт в текущем окне (см. сегодняшние ключевые пункты), официальный release пока не появился; у TileOPs отдельного релиза нет.
- Страница релизов TileRT по-прежнему на v0.1.5.post2 (упомянутый в прошлом выпуске релизный PR v0.1.6 после слияния не дал официальной публикации); последняя версия TileFoundry — по-прежнему v0.0.2 (09-10).
4. Сообщество, руководства и мероприятия
4.1 Проверка репозиториев сообщества: в окне новых коммитов нет (09-30)
Дата: 2026-09-30 Источники: репозиторий руководств сообщества/ репозиторий конвейеров Sophon BM1690/ инструмент профилирования S5000/ tvm_tilelang_cookbook
- Четыре репозитория сообщества (tilelang-tutorials, bm1690-pipelines, Tilelang_musa, tvm_tilelang_cookbook) в окне не имеют новых коммитов; в cookbook присутствует лишь автоматический пуш истории звёзд ветки
chart(не является содержательной активностью, не учитывается). Достижения по CPU-примерам сайта руководств и конвейерам BM1690, о которых сообщалось в прошлом выпуске, относятся к периоду до текущего и повторно не раскрываются.
4.2 Медиа и академическая сторона: нулевые попадания Google News, новых препринтов на arXiv нет (09-30)
Дата: 2026-09-30 Источники: Google News/ Hacker News/ arXiv
- Множественные запросы Google News RSS на китайском и английском (через прокси) дали ноль попаданий в 24-часовом окне; попадания по запросам «Ascend 950» на китайском и английском относятся к биржевым и макроэкономическим материалам до окна и не связаны напрямую с релизом бэкенда TileLang (публикация помечена 9/30, медиа ещё не отреагировали). Записи Hacker News в окне к теме не относятся; поиск «tilelang» на arXiv по-прежнему даёт последним TileSight от 07-24.
5. Наблюдения за трендами
5.1 От контракта к ядрам: семейство квантизации реализовано за 48 часов
Наблюдение прошлого выпуска состояло в том, что «в этом слое операторов пока нет ядер, дальнейший ритм определяется их появлением». Менее чем за 48 часов 7 из 9 представителей семейства квантизации вошли в реализацию ядер: четыре оператора INT8 слиты и побитово согласованы с эталоном torch, один оператор INT4 с группировкой слит и согласован с упаковочным форматом W4A16, два поблочных оператора INT8 на рассмотрении. Уже сформирован и шаблон описания для одной партии PR — по каждому указывается побитовое соответствие эталонной реализации, границы компиляции, состояние манифеста и семантика отклонения: «сначала доказать корректность, затем говорить о производительности». При таком ритме следующими точками наблюдения в предстоящем окне станут два оставшихся оператора — поблочный FP8 и SmoothQuant.
5.2 Ascend 950: нарратив о мультибэкендности от «репозитория адаптации» к «нативному в основном репозитории»
Бэкенд Ascend 950 направлен в основной репозиторий напрямую через PR из 379 файлов и около 80 тысяч строк добавлений, причём он был открыт в тот же день, что и повышение версии до 0.1.15 — «мультибэкендность» TileLang переходит от адаптации в зеркальном репозитории к возможностям основной ветки, а в качестве базовой линии для сравнения напрямую выбран собственный Torch NPU от Huawei. В подписях видны письма с домена deepseek.com и 10 соавторов-Co-author из числа ключевых разработчиков сообщества, что говорит о том, что линия Ascend — это полноформатные скоординированные вложения многих сторон, а не точечная адаптация. Следует трезво учитывать: PR ещё не влит, объём огромен, данные о производительности на данный момент ограничены лишь формулировками графиков внутри PR; стабильность основной ветки после влития и затраты на последующее сопровождение будут объектами наблюдения на более длинном цикле.
5.3 Инженерная нагрузка: рефакторинг CI при росте числа тестов на +21%
Число тестов основной ветки выросло с 4281 до 5174 (+21%), время выполнения pytest +87%, прирост в основном за счёт работ на стороне CPU в системе манифестов — это прямая стоимость стратегии «200 операторов, сначала контракты». Ответом дня стали три инженерных меры: восемь параллельных GPU-смоуков, ленивизация проверки подписей, однократность валидации манифестов (устранение двух дублирующихся проверок на каждый PR). Перековка CI из «достаточного» в «выдерживающий масштаб» в период экспансии возможностей — это недооценённое инфраструктурное повествование этой недели.
5.4 Пробелы и точки риска
Во-первых, дифференциация мультибэкендности продолжается: MetaX (после 09-24), Moore Threads (после 09-17), MLIR Ascend (после 09-24) молчат, активность сосредоточена на Ascend и Hygon; во-вторых, «много открывается, мало вливается» в основном репозитории не переломлено — в этом окне влито 2, открыто 7, количество открытых PR достигло 116, пропускная способность ревью по-прежнему остаётся узким местом, и темпы влития большого PR Ascend 950 напрямую это проверят; в-третьих, повторное поднятие откатанной функциональности в #1829, официальный релиз 0.1.15 и дополнительная запись о выпуске TileRT v0.1.6 остаются нерешёнными; в-четвёртых, валидация квантизации и сэмплирующих ядер на данный момент ограничена побитовым совпадением и однопроцессорными бенчмарками, публичной проверки влияния на точность сквозных моделей пока нет.
Приложение: материалы и пояснения к проверке
| Источник | Результат проверки |
|---|---|
| Организация tile-ai (29 репозиториев) | В окне были пуши в 7 репозиториев: tilelang (2 влито, 7 открыто), TileOPs (17 влито), TileOPs-nightly (1 снимок), tilelang-ascend (2 влито), tilelang-hygon (1 влито), TileFoundry (1 влито), TileOPs.github.io (1) |
| Основной репозиторий tilelang | Влиты #3293, #3305; открыты #3303–#3309, всего 7 (#3306 закрыт без влития); открытых PR — 116; релизная ветка и ветка повышения версии были активны в окне |
| TileOPs | 17 влитий (диапазон #2299–#2319); в том же окне открыто 17; на рассмотрении 4 (#2172, #2315, #2316, #2318); главную роль играет семейство квантизации |
| tvm (репозиторий-сабмодуль той же организации) | В окне коммитов нет |
| TileOPs-nightly | 1 снимок b8f4329a35: корректность 1030 пунктов (пропущено 2), ноль сбоев, ноль ошибок; бенчмарки 1355 пунктов (39 наборов), ноль сбоев, ноль ошибок |
| TileOPs.github.io | 1 (#57: квантизация, сэмплирование и операторы MLP добавлены в справочник API) |
| Пять репозиториев отечественных бэкендов | Ascend: релизный PR #3308 для 950 и два исправления в репозитории ascend; Hygon: влит #13; MetaX (после 09-24), Moore Threads (после 09-17), MLIR Ascend (после 09-24) — активности нет |
| Пользователи и сообщество | TileKernels, FlashQLA без пушей в окне; в четырёх репозиториях сообщества новых коммитов нет (в cookbook только автоматические пуши веток) |
| Google News / Hacker News / arXiv | Ноль совпадений по запросам на китайском и английском (совпадения по Ascend 950 относятся к публикациям о фондовом рынке и макроэкономике до окна); HN к теме не относится; на arXiv последнее по-прежнему TileSight от 07-24 |
Полный список источников
- [1] Список PR основного репозитория — https://github.com/tile-ai/tilelang/pulls
- [2] PR бэкенда Ascend 950 (#3308) — https://github.com/tile-ai/tilelang/pull/3308
- [3] PR повышения версии (#3309) — https://github.com/tile-ai/tilelang/pull/3309
- [4] Ветка релиза ascend-950-0930 — https://github.com/tile-ai/tilelang/tree/ascend-950-0930
- [5] Simplify неиспользуемых привязок (#3293) — https://github.com/tile-ai/tilelang/pull/3293
- [6] Исправление ccache при сборке Windows (#3305) — https://github.com/tile-ai/tilelang/pull/3305
- [7] Упакованное векторное сравнение (#3303) — https://github.com/tile-ai/tilelang/pull/3303
- [8] Тикет дефекта упакованного сравнения (#3302) — https://github.com/tile-ai/tilelang/issues/3302
- [9] Пример DeepSelect (#3304) — https://github.com/tile-ai/tilelang/pull/3304
- [10] Продолжение исправления атомарных операций (#3307) — https://github.com/tile-ai/tilelang/pull/3307
- [11] Тип атомарной ссылки (#3306, закрыт без слияния) — https://github.com/tile-ai/tilelang/pull/3306
- [12] SM120 регистровый A GEMM (#3286, на рассмотрении) — https://github.com/tile-ai/tilelang/pull/3286
- [13] Вывод потоков z3 (#3291, на рассмотрении) — https://github.com/tile-ai/tilelang/pull/3291
- [14] Перенос строк при импорте C-исходников (#3289, на рассмотрении) — https://github.com/tile-ai/tilelang/pull/3289
- [15] Расширение popcount (#3300, на рассмотрении) — https://github.com/tile-ai/tilelang/pull/3300
- [16] Страница релизов основного репозитория — https://github.com/tile-ai/tilelang/releases
- [17] Список PR TileOPs — https://github.com/tile-ai/TileOPs/pulls
- [18] Ядро per-tensor деквантования INT8 (#2304) — https://github.com/tile-ai/TileOPs/pull/2304
- [19] Ядро per-channel деквантования INT8 (#2306) — https://github.com/tile-ai/TileOPs/pull/2306
- [20] Ядро per-tensor квантования INT8 (#2307) — https://github.com/tile-ai/TileOPs/pull/2307
- [21] Ядро per-channel квантования INT8 (#2308) — https://github.com/tile-ai/TileOPs/pull/2308
- [22] Ядро per-group квантования INT4 (#2317) — https://github.com/tile-ai/TileOPs/pull/2317
- [23] Блочное квантование INT8 (#2316, на рассмотрении) — https://github.com/tile-ai/TileOPs/pull/2316
- [24] Блочное деквантование INT8 (#2318, на рассмотрении) — https://github.com/tile-ai/TileOPs/pull/2318
- [25] Интерфейсизация reduce и norm (#2315, на рассмотрении) — https://github.com/tile-ai/TileOPs/pull/2315
- [26] Слой операторов сэмплирования (#2299) — https://github.com/tile-ai/TileOPs/pull/2299
- [27] Листовой оператор FP8 GQA (#2294) — https://github.com/tile-ai/TileOPs/pull/2294
- [28] Выход varlen prefill (#2313) — <https://github.com/tile-ai/Ti
leOPs/pull/2313>
- [29] SM89 головная размерность 512 (#2312) — https://github.com/tile-ai/TileOPs/pull/2312
- [30] Многоуровневые сценарии скользящего окна (#2311) — https://github.com/tile-ai/TileOPs/pull/2311
- [31] Интерфейс ядра и диспетчеризация (#2300) — https://github.com/tile-ai/TileOPs/pull/2300
- [32] Таблица верхних границ разделяемой памяти (#2303) — https://github.com/tile-ai/TileOPs/pull/2303
- [33] GPU дымовой тест с восемью параллельными задачами (#2314) — https://github.com/tile-ai/TileOPs/pull/2314
- [34] Спецификация абсолютных импортов (#2310) — https://github.com/tile-ai/TileOPs/pull/2310
- [35] Однократная проверка манифеста (#2319) — https://github.com/tile-ai/TileOPs/pull/2319
- [36] Откат деления (#2305) — https://github.com/tile-ai/TileOPs/pull/2305
- [37] Загрузка f32 и сохранение bool (#2309) — https://github.com/tile-ai/TileOPs/pull/2309
- [38] Коммит ночного снимка (b8f4329a35) — https://github.com/tile-ai/TileOPs-nightly/commit/b8f4329a35
- [39] Метаданные окружения снимка — https://github.com/tile-ai/TileOPs-nightly/blob/snapshots/meta.json
- [40] Патч обратного портирования TVM для Ascend (#1846) — https://github.com/tile-ai/tilelang-ascend/pull/1846
- [41] Очистка подмодулей CI для Ascend (#1847) — https://github.com/tile-ai/tilelang-ascend/pull/1847
- [42] Асинхронное копирование для Hygon (#13) — https://github.com/tile-ai/tilelang-hygon/pull/13
- [43] Коммит слияния для Hygon (145fc5a8e7) — https://github.com/tile-ai/tilelang-hygon/commit/145fc5a8e7
- [44] AtomSched четвёртый этап (#192) — https://github.com/tile-ai/TileFoundry/pull/192
- [45] Страница релизов TileFoundry — https://github.com/tile-ai/TileFoundry/releases
- [46] Обновление справочника API сайта документации (#57) — https://github.com/tile-ai/TileOPs.github.io/pull/57
- [47] Сайт документации TileOPs — https://github.com/tile-ai/TileOPs.github.io
- [48] Страница релизов TileRT — https://github.com/tile-ai/TileRT/releases
- [49] Репозиторий MetaX — https://github.com/tile-ai/tilelang-metax
- [50] Репозиторий Moore Threads — https://github.com/tile-ai/tilelang-musa
- [51] Репозиторий MLIR Ascend — https://github.com/tile-ai/tilelang-mlir-ascend
- [52] Репозиторий TileKernels — https://github.com/deepseek-ai/TileKernels
- [53] Репозиторий FlashQLA — https://github.com/QwenLM/FlashQLA
- [54] Репозиторий обучающих материалов сообщества — https://github.com/easy-tilelang/tilelang-tutorials
- [55] Репозиторий конвейеров SOPHGO BM1690 — https://github.com/arcflute/tilelang-tpu-bm1690-pipelines
- [56] Инструмент профилирования S5000 — https://github.com/Rankf/Tilelang_musa
- [57] tvm_
tilelang_cookbook — https://github.com/RuneFang/tvm_tilelang_cookbook
- [58] Google News RSS (запросы на китайском и английском, через прокси) — https://news.google.com/
- [59] Поиск Hacker News — https://hn.algolia.com/
- [60] Поиск arXiv — https://arxiv.org/