Еженедельный отчёт TileLang (2026-10-26 ~ 2026-10-30)
Отчётный период: с 26 октября 2026 г. (понедельник) по 30 октября 2026 г. (пятница), всего 5 рабочих дней Источники материалов: 5 выпусков ежедневного отчёта о динамике сообщества TileLang (10-26, 10-27, 10-28, 10-29, 10-30); суммарное окно сбора пяти выпусков — с 10-23 07:00 по 10-30 07:00 (выпуск понедельника охватывал 72-часовое окно, включая предыдущие выходные; выпуски со вторника по пятницу — 24-часовые окна); дополнительно проведена проверка репозиториев организации tile-ai в 168-часовом окне, сверка страниц релизов и тегов репозиториев, а также файлов VERSION (подробности в приложении)
1. Главные новости недели
-
Официальный релиз TileOPs 0.1.0 — первая стабильная версия со 206 операторами, публичный API заморожен (10-27): артефакт PyPI загружен 10-27 в 07:45 (пекинское время), страница релиза на GitHub опубликована в 13:15; это первый официальный тег репозитория. В примечаниях к релизу приведены три группы жёстких показателей: все 206 операторов имеют записи в manifest (сигнатуры, тестовые и эталонные нагрузки, формулы roofline, построчная проверка в CI); из 2265 строк ночного бенчмарка на H200 2262 строки не медленнее самой быстрой эталонной реализации, геометрическое среднее — 1,37×, среди эталонов — torch.compile, FlashAttention 2 и 3, FlashInfer, FlashMLA, vLLM, DeepGEMM, flash-linear-attention, FlagGems и QuACK; из 206 операторов 195 слияний с меткой foundry были сгенерированы ядрами TileFoundry и прошли в репозиторий через тот же CI. Одновременно с релизом заморожен публичный API и добавлен скрипт проверки совместимости API: любой PR, вызов в котором по старому образцу предыдущей версии приведёт к поломке, сразу отклоняется; далее в ветке 0.x API только дополняется, но не изменяется. Четыре известных пробела и три шага дорожной карты опубликованы в тот же день; последняя указывает на fused-операторы, целые модели и слияние вычислений с коммуникациями. Источники: https://github.com/tile-ai/TileOPs/releases/tag/v0.1.0, https://pypi.org/project/tileops/
-
Весь бэкенд NPUIR для Ascend 910 A2/A3 влит в основную ветку mlir-ascend; критерии приёмки впервые записаны в цифрах (слияние 10-28): один коммит на 55 файлов, +21490/−1: на стороне Python — пакет tilelang/ascend910 (backend, adapter, codegen, compiler, execution_backend, jit, pipeline, runtime, target, а также kernel, copy, gemm и грань диалекта npuir в language), на стороне C++ — два генератора кода в src/ascend910/target (для разработчиков и экспертный), слой операторов и три прохода LowerNpuirBlock, NpuLoopVectorize, RewriteFDivToMul, в runtime добавлены npu_launcher.h и npu_utils; псевдоним target принимает ascend910, ascend-910, a2, a3, npuir. Заявленная автором приёмка: все 504 теста pytest testing/npuir проходят; из 72 примеров в examples проходят 71, 0 таймаутов и 0 ошибок; единственный неудачный пример на той же машине также падает и на старом бэкенде — это вопрос окружения и допусков. Источник: https://github.com/tile-ai/tilelang-mlir-ascend/pull/207
-
Находящийся на рассмотрении в основном репозитории рефакторинг TIRx заменяет встроенный TVM внешней зависимостью, масштаб растёт с 1043 до 1194 файлов (с 10-25, обновляется всю неделю): план состоит в удалении 3rdparty/tvm и записей его подмодулей, переносе фронтенда, нативных тензоров и IR областей видимости, проходов понижения, конвейера бэкенда и адаптации исполнения целиком в отдельно собираемый и публикуемый TIRx, а также в фиксации версии непропатченного upstream-кода (apache/tvm-tirx 9af5544d, зависимости apache-tvm-tirx==0.1.0a2 и apache-tvm-ffi==0.1.15.post0); ранее необходимые интеграционные патчи с суффиксом +tilelang.1 больше не требуются. С выходных до середины недели этот PR обновлялся трижды, масштаб вырос с 1043 файлов +71428/−104176 до 1194 файлов +106648/−104497; это самый крупный коммит в очереди за неделю, и он определяет, как в дальнейшем исправления со стороны TVM будут попадать в основную ветку. По состоянию на пятницу всё ещё на рассмотрении, не влит. Источник: https://github.com/tile-ai/tilelang/pull/3666
-
Недельная работа над корректностью в основном репозитории сосредоточилась на семействе проблем «компилируется, выполняется без ошибок, результат неверный» (10-26 — 10-30): типичные записи — поток выделения вывода (#3649, три адаптера принимают stream вызывающей стороны, но выделяют выходные данные out_idx в текущем потоке; кэширующий аллокатор сортирует и переиспользует по потоку выделения; на H100 три из пяти запусков давали повреждённый вывод, после исправления — ноль), полный warp-редукции переведён на redux.sync (#3692, четыре FP32-максимума по 32 lane превратились из 20 shuffle в 4 аппаратные редукции), статические границы для slice-заполнения и отрицательных индексов (T.fill в #3352 при записи As[6:12] в буфер длиной 8 ранее пропускался, фактически записывалось в 6–11; A[-9] в #3347 ранее молча заворачивался в -1), область T.ws(-1) выполняется на нуле потоков (#3354, все сохранения отбрасываются без диагностики), семь стандартных математических функций ROCm больше не понижаются до быстрых встроенных (#3621, на MI300X погрешность sin/cos снизилась с 7.8e-04 до 6.6e-08). Источники: https://github.com/tile-ai/tilelang/pull/3649, https://github.com/tile-ai/tilelang/pull/3692, https://github.com/tile-ai/tilelang/pull/3621
-
Список операторов на стороне Ascend разворачивается последовательно по структуре вышестоящих моделей (10-26 — 10-30): за неделю вошли situ_glu, выравнивающий активацию гейта Kimi K3 Stable LatentMoE (#1891), оператор сжатия kpool для indexer разреженного внимания GLM-5.3 (#1910, однокернельный чисто Vector-путь, кодирование E4M3 реализовано чисто целочисленными битовыми операциями, без зависимости от типа FP8 и без аппроксимации), прямой проход Chunk Scaled Dot KKT блочного линейного внимания с гейтом (#1803, статическое разворачивание на четыре блока, нулевой рабочий буфер GM, степень совпадения 1.0000 на трёх примерах для L0 и трёх для L1), корневая причина и исправление полного рассогласования результатов int4×int4 GEMM для W4A4 (#1731, тип с полубайтовой упаковкой трактовался как 1 байт, все stride копирования и число повторов имели двукратное отклонение, симптом — 99.6% несовпадений), а также упакованный ввод FP4×FP4 в примере DeepGEMM основного репозитория (#3589). Источники: https://github.com/tile-ai/tilelang-ascend/pull/1910, https://github.com/tile-ai/tilelang-ascend/pull/1803, https://github.com/tile-ai/tilelang-ascend/pull/1731
-
Hygon: четыре магистральных изменения за неделю, переход от «работает» к «раскладке по структуре аппаратуры» (10-26 — 10-30): слиты регистровый конвейер с дивергенцией warp (#18, 28 файлов +5312/-64, сходилось более двух недель, вывод автора — example_gemm достигает производительности, сопоставимой с rocblas), слиты нативное хранилище B16 и динамический WASP GEMM (#28, 6 файлов +340/-230), буфер scale разделён на независимые двойные банки и отделён от банков LDS (#29, 12 файлов +1389/-314, крупнейшее изменение программной части в этом окне), ветка функции LDS swizzle для обычного пути копирования на рассмотрении (#30, 18 файлов +2000/-84, включая пять новых тестов). Источники: https://github.com/tile-ai/tilelang-hygon/pull/18, https://github.com/tile-ai/tilelang-hygon/pull/29
-
Релизный образ впервые объединяет библиотеку операторов и TileFoundry в одном образе (10-29): образ раннера поверх dev-образа устанавливает PyPI-релизы TileOPs и планировщика, тег — tileops0.1.0 плюс tilefoundry0.0.3 плюс три идентификатора окружения cuda13.2, torch2.13 и tilelang0.1.12; прилагаемый скрипт после извлечения образа запускает на GPU проверку стека, проверку базовой линии, упаковочные тесты и опциональные бенчмарки, поскольку тесты и бенчмарки не входят в wheel, все они берутся из тега, соответствующего версии самого образа. Одновременно удалена базовая линия sgl-kernel. Источники: https://github.com/tile-ai/TileOPs/pull/2793
-
В экосистеме появились целые ответвления и общественные репозитории: TileLang используется как основа собственного аппаратного стека (26–30 октября): в репозитории ответвления tilelang-for-sail под именем T-HEAD опубликовано 13 веток; помимо зеркал версий видны исправления общей раскладки матриц PPU, пакет языка PPU и функции компиляции во время выполнения; репозиторий операторов ops-tilelang сообщества CANN после создания 20 октября непрерывно пополняется и уже с помощью семи операторов собирает фрагмент модели DeepSeek V4.1 Flash; бэкенд Hexagon от Qualcomm за один день получил 15 коммитов, охватывающих векторизацию HVX, арену VTCM, раскладку Crouton и встроенные функции DMA вплоть до отображения и редукции; кроме того, в тот же день продвигались узловой репозиторий сообщества RISC-V, двойные репозитории банка задач и эталонных тестов PTO-ISA, а также репозиторий знаний tilelang-knowledge. Источники: https://github.com/t-head/tilelang-for-sail, https://github.com/Atlas-Ascend-Fork/ops-tilelang
2. Прогресс ключевых проектов (основной репозиторий tilelang)
Версии и релизы
- Последний тег и релиз основного репозитория по-прежнему v0.1.15 (выпущен 30 сентября); за всю неделю не появилось ни новых тегов, ни новых записей на странице релизов, и к пятнице этой недели прошло уже 30 дней. Проверка файла VERSION по-прежнему показывает 0.1.15.
- TileOPs v0.1.0 — единственная новая официальная версия в организации на этой неделе (27 октября), а также второй новый тег после TileFoundry 0.0.3 с 30 сентября. Последняя версия TileFoundry остановилась на 0.0.4rc1 (25 октября) и ещё не стала официальной.
- Теги линий адаптации за всю неделю не менялись: tilelang-ascend v0.1.2.000 (9 сентября), tilelang-metax v0.1.15 (16 октября), tilelang-musa v0.1.15+musa.1 (30 сентября), tilelang-mlir-ascend остановился на серии v0.1.2.020.
- Объём слияний и ритм: выпуск понедельника охватывал 72-часовое окно (с 07:00 23 октября до 07:00 26 октября), было слито 78 коммитов (TileOPs 51, tilelang 10, TileFoundry 10, сайт документации 4, репозиторий Ascend 1, репозиторий Hygon 1, Sunrise 1); поскольку этот выпуск пересекается с предыдущим еженедельным отчётом (19–23 октября) за 23 октября, его не суммировали с последующими четырьмя выпусками. Четыре 24-часовых окна со вторника по пятницу в сумме дали 86 слитых коммитов: tilelang 47, TileOPs 26, tilelang-ascend 5, TileFoundry 4, tilelang-hygon 3, tilelang-mlir-ascend 1; по дням соответственно 30, 20, 24 и 12 коммитов, что демонстрирует сходящуюся форму с высоким началом и низким завершением. Обновления на рассмотрении всю неделю держались в диапазоне от 45 до 76 коммитов, новых issue было открыто соответственно 19, 11, 7, 6 и 4.
Компилятор, языковой уровень и путь исполнения
- Полное warp-свёртывание переведено на аппаратный redux (#3692, влито 29-10, 4 файла +337/-35): ранее даже если вся группа представляла собой выровненный полный warp, обычное межпоточное свёртывание всё равно разворачивалось в дерево shuffle. На основной ветке 837486a четыре независимых 32-lane FP32 max в sm_103a с CUDA 13.1 компилировались в 20 инструкций shuffle и ноль redux; после изменения — четыре redux.sync.max.f32 и ноль shuffle. Подход — переиспользование существующего помощника warp_reduce для скалярного и пакетного полного свёртывания, вызывающая сторона проверяет только геометрию потоков. Целочисленное свёртывание на SM80 и выше идёт через аппаратный redux; FP32 max/min доступны только на sm_100a, sm_100f и sm_103a, sm_103f; узкие плавающие типы повышаются до FP32 и затем передаются помощнику, FP64 без потери точности остаётся на пути shuffle. Автор явно не заявляет о сквозном ускорении, приводя лишь сопоставление на уровне инструкций.
- Независимые JIT-конфигурации autotuner переведены на параллельную компиляцию (#3476, влито 29-10, 2 файла +54/-46): прежняя реализация удерживала одну блокировку на весь период компиляции, даже конфигурации только с опциями компиляции по умолчанию выполнялись последовательно, фронтенд, понижение и компиляция под устройство выстраивались в очередь. Изменение — для каждой переопределённой конфигурации через dataclasses копируется независимый JITImpl, опции по умолчанию по-прежнему идут по исходному ленивому пути с сохранением кэша ядер и идентичности объектов, последовательно выполняются только кандидаты с общим ключом первой стадии, запись отладочного вывода на диск остаётся последовательной. Данные приёмки по бэкендам: Ascend 1797 элементов пройдено (Python 3.12.14, torch_npu 2.10.0, CANN 9.3.0, примеры AscendC 50 из 50 пройдено, примеры PTO 44 пройдено, 6 пропущено), ROCm 7.2 на gfx942 3220 элементов пройдено, Metal 95 элементов пройдено, CUDA на H100 PCIe cu130 5500 элементов пройдено, CuTeDSL 75 пройдено, 17 пропущено.
- Раскладка и единицы указателей представлений буферов Ascend больше не распространяются через псевдонимы (#3623, влито 29-10, 23 файла +1139/-438): несколько буферов, созданных через T.view или T.reshape, могут разделять один участок памяти, требуя разных раскладок; ранее раскладка разрешалась по общей переменной данных, что могло выбрать неверное отображение Cube или адрес DMA. Этот коммит привязывает раскладку к отдельному представлению Buffer, проходя через вывод раскладки, нормализацию фрактального хранения, материализацию множественных буферов и понижение копирования и матричного умножения; смещения голых указателей пересчитываются в единицах соответствующих элементов. На одном версионном размещении представление Cube теперь может использовать разные раскладки MajorK и MajorMN при условии плотных логических шагов, нулевого смещения базового адреса, совместимости типов операндов и равенства размеров хранения после заполнения.
- Копирование GM в L1 и заполнение за границами объединены в одну задачу планирования (#3543, влито 29-10): оба вместе готовят один участок данных L1, ранее заполнение могло выделяться в отдельную задачу планирования, и вставка синхронизации добавляла лишний барьер конвейера MTE2. После изменения потребитель ожидает полные данные, включая заполнение; хвостовое заполнение K для FP8 MX также объединяется с сохранением условного заполнения внутри задачи, прежняя очередь отложенного заполнения MX удалена. 47 целевых тестов пройдено.
- Набор исправлений для ROCm и контекста выполнения: семь функций по умолчанию exp, exp10, log, log2, log10, sin, cos на HIP больше не понижаются до быстрых встроенных функций независимо от настройки fast_math, для восьми быстрых операторов с подчёркиванием добавлены правила минимального понижения (#3621); автоматическая цель теперь читает текущее устройство HIP, а не фиксированную карту 0 (#3594); NVRTC и CuTeDSL берут текущий поток по устройству первого входного тензора (#3359); profiler при неуказанном устройстве использует текущее устройство, сброс кэша больше не бьёт по карте 0 (#3357).
- Мелкие исправления языкового уровня и понижения: целочисленные строчные индексы TMA gather/scatter в Python преобразуются в int32, литеральная запись больше не вызывает крах компиляции на Blackwell (#3365); эпилог конвейера с длиной прохода, известной во время выполнения, разворачивается напрямую, постраничное декодирование снова компилируется (дефект сообщён нижележащим TileOPs#1852) (#3356); VectorizeLoop больше не игнорирует шаг цикла молча ([#3345](https://github.com/tile-ai
/tilelang/pull/3345)); распространение NaN в понижении T.clamp откатано, возвращена семантика min/max (#3628); coalesced_width в T.Parallel единообразно приводится к IntImm (#3374); дескриптор TMA записывает только проверенные имена (#3484); суффикс handle для параметров без restrict больше не обрезается (#3366).
Корректность и исправление дефектов
- Идентичность потоков и кэша: после выделения вывода в потоке вызывающей стороны (#3649) и получения потока в NVRTC и CuTeDSL (#3359) в этом окне ключ кэша автотюнинга включён в compile_flags (#3338, при смене опций компиляции для одного и того же ядра старый бинарник больше не переиспользуется), а на стороне Ascend идентичность сборки Bisheng включена в ключ бинарного кэша (#3691). Два независимых направления сделали одно и то же на одной неделе: если кэш ключуется только по исходному коду и форме, при смене компилятора происходят ложные попадания.
- Синхронизация и планирование памяти: ThreadSync помечает address_of как запись, добавлен барьер после непрозрачного вызова (#3346, ранее форма T.address_of(B[0]) после extern не имела барьера, а форма T.access_ptr(B, “w”) имела); T.ws(-1) теперь выполняется на всех потоках (#3354); дублирование номеров именованных барьеров между доменами памяти (#3643) и отсутствие CTA-барьера при освобождении TMEM на sm_100 (#3645 / #3663 / #3664) обработаны в начале недели. В среду всплыли три дефекта смещённых барьеров ThreadSync (#3680): барьер помещён в дивергентную ветвь, барьер в ветви ошибочно сбрасывает внешние отложенные зависимости, положение барьера в цикле со счётчиком по потокам; в паре с #3682 и #3681 два исправления на рассмотрении.
- Статические границы и типы: заполнение среза проверяется по концу области, а не по длине; отрицательный индекс отклоняется, если после обёртки остаётся отрицательным (#3352 / #3347); добавлена проверка формы области SIMT-атомиков (#3465); хвостовой блок K разреженного MMA больше не пропускается молча (#3367); dtype цели atomic_addx4 сужен до float* (#3369); унифицирована проверка индексов вывода profiler (#3486); коэффициент индекса скалярного чтения больше не примешивается к числу lane (#3453, закрыто падение компиляции при ширине строки выше 32768); пакетный all-reduce разрешает интервал потоков по скалярной ветви (#3341, при batch>1 все 2048 выходов были неверными); падения int64 атомарных max/min и AtomicStore для int64, bf16, fp16 (#3307); нефинитные константы FP8/FP4 в редукции выводили недопустимый литерал (#3189). В четверг шесть тестов, предполагавших холодную компиляцию, переведены на without_kernel_cache (#3695 / #3696).
- Направленность новых дефектов: три открытых в четверг дефекта лежат на границе статических проверок — копирование разделяемого буфера с заполнением через пакетное копирование сообщает о несоответствии формы (#3704, глобальный тензор с последним измерением, не выровненным по 16, копируется в разделяемый буфер с заполнением, BK берётся как cdiv на 16, при понижении сообщается 112 против 100), итерационный граф с отрицательным масштабированием мисскомпилирует обратный индекс (#3705, окружение воспроизведения — v0.1.15 и сборка из исходников репозитория ветки T-HEAD, относится к общему вышестоящему пути), переполнение при умножении разрядности представления как int32 (#3707, вес lm_head Qwen3.8 248320 умножается на 2560 байт NVFP4, всего 5 085 593 600 бит, после обёртки становится 790 626 304 и выдаётся ошибка превышения литерала). В той же партии — сбой 13 примеров на sm_120, экспоненциальная компиляция IfStmtBinding, without_kernel_cache не форсирует перекомпиляцию (#3701 / #3700 / #3699), а также пустой граф при захвате CUDA graph в CuTeDSL (#3693). В пятницу три исправления ушли на рассмотрение: разрядность переведена на int64, скалярный GEMM на CPU очищает только целевую область, при отключённом кэше обходятся два уровня внутрипроцессного кэша (#3708 / #3709 / #3710).
Среда выполнения, CI и инструментарий
- CI возвращает задачи ROCm и Metal к совместимым wheel-пакетам PyTorch (#3706, влито 29.10): CI для ROCm через индексную переменную предоставляет соответствующий источник PyTorch ROCm, но политика «небезопасного оптимального сопоставления» на уровне рабочего процесса позволяет победить более позднему кандидату из PyPI, и разрешается PyTorch 2.15.0 (CUDA 13.2) вместо 2.14.1 со сборкой ROCm 7.2; распространение той же партии 2.15.0 также привело к тому, что ARM64-раннер macOS 26.6.2 отвергает полувиртуализированный GPU Apple. Три исправления: установить переменную бэкенда согласно настроенной стабильной версии ROCm, для ночной установки использовать первый индекс, добавить шаг быстрой проверки перед тестами (подтвердить, что это сборка HIP, а не CUDA, и что доступен GPU раннера).
- CI для Ascend разделяет AscendC и PTO на две матричные задачи, которые можно перезапускать по отдельности (#3687); образ CI обновлён до еженедельной версии cann9.3.0 (#3630).
- Четыре изменения в управлении процессом контрибуции (26.10, все вокруг стоимости ревью): в CONTRIBUTING.md указано, что описание PR должно содержать проблему, решение и компромиссы, а доказательства приводятся рядом с утверждением, которое они поддерживают (#3671); PR, состоящие только из документации, пропускают сборку и тесты CUDA, ROCm, Metal, Ascend и CuTeDSL, белый список намеренно сужен (#3672); в навык коммита добавлен шаг подтверждения — сначала предложенный заголовок показывается контрибьютору для подтверждения (#3673); отключены автоматические сводки ревью-бота и проверка покрытия docstring, требуется привязывать находки к текущему diff и фактическим путям вызова (#3674).
- Языковой сервис запускает экспериментальную отладку CUDA (26.10): tilelang-lsp получает первый отладочный коммит, добавлен лаунчер tlsp.debug для сопоставления номеров строк Python, компиляция с -G и -lineinfo, изолированный кэш и захват сгенерированных исходников, cuda-gdb из Nsight подключён в VS Code, поддерживаются точки останова Python, проверки перед запуском и просмотр сгенерированных исходников CUDA. Это первый содержательный коммит в этом репозитории с августа.
- Документационный сайт всю неделю непрерывно автосинхронизируется: 26.10 — восемь коммитов, 27.10 — шесть, 28.10 — два, плюс регулярные обновления документационного сайта TileOPs и репозитория локализации.
Наблюдение за очередью ревью
- Крупнейшим по объёму остаётся рефакторинг TIRx (#3666, 1194 файла +106648/-104497), он накладывает нулевой патч на фиксированную upstream-базу и является единственным изменением в очереди, которое определит, «в каком темпе последующие исправления со стороны TVM попадут в основную ветку».
- Миграция планировщика a2a3 в репозитории Ascend занимает 100 файлов +18453/-666 (#1951) — крупнейшее на ревью в специализированном репозитории, что говорит о том, что объём изменений следующего этапа находится в слое планирования, а не в слое операторов.
- Очередь на ревью линии PTO в течение недели продвигается: векторизация T.Parallel, канал AutoSimVF, пакетный трёхмерный ND2NZ, многобуферная запись со счётчиком (#3512 / #3320 / #3689 / #3629), цель PTO по умолчанию использует бэкенд исполнения tvm_ffi (#3516), плюс три исправления представлений и broadcast (#1962 / #1960 / #1961) и исправление представления беззнакового байтового рабочего пространства для побитового XOR (#1959).
- Количество обновлений на ревью за неделю колебалось от 45 до 76, в пятницу вернулось к 54, что контрастирует с падением объёма вливаний: эта неделя — «неделя закрытия счетов», а не «неделя открытия заявок».
3. Мультибэкендная адаптация (Ascend / Hygon / ROCm / Hexagon)
Ascend: бэкенд влит в основную ветку, операторы развёртываются по моделям
- На уровне бэкенда: путь NPUIR для 910 A2/A3 влит в основную ветку mlir-ascend (#207, 55 файлов +21490/-1), переключатель режима TILELANG_ASCEND_MODE принимает значения expert или developer, по умолчанию expert; второй коммит построчно выравнивает различия в поведении со старым бэкендом, с акцентом на легализацию bf16 (HIVM не принимает операнды bf16, вычисления переводятся в fp32 с последующим явным преобразованием) и опускание копирования для динамических extent.
- Планирование и адресация: в основной репозиторий добавлен T.annotate_buffer_addresses, позволяющий выполнять точную побайтовую адресацию выделений в пулах UB, L1, L0A, L0B, L0C и SS в конвейере Ascend после планирования; буфер, помещаемый в адресацию, должен сначала объявить фиксированное число копий через T.annotate_buffer_versions, проверка покрывает отсутствующие или неподдерживаемые числа копий, перекрытия, невыравненность, динамические размеры и переполнение ёмкости (#3607, 14 файлов +982/-26). Кандидатные тела PerCoreTask допускают внутренние if/else, условное заполнение L1 больше не отклоняется целиком (#3686); рукописный конвейер сохраняет фазу конфигурационного регистра (#3624).
- Поставка операторов: за неделю влиты situ_glu (#1891), сжатие kpool для GLM-5.3 (#1910), прямой проход Chunk Scaled Dot KKT (#1803), исправление первопричины W4A4 int4×int4 (#1731), повторная подача примера depthwise_conv_2d (#1920, переход на каналы тестирования на основе манифеста во избежание параллельных пакетов); на рассмотрении ещё два примера GroupNorm и fla_chunk (#1607 / #1953 / #1952), три изменения по представлениям и broadcast NPUIR (#1962 / #1960 / #1961). Общая черта этих операторов — квантизация и фузия записываются в само ядро, а не оставляются на исправление на стороне хоста.
- Инженерные практики: добавлен skill профилирования производительности операторов, использующий вывод msprof op для определения направлений оптимизации (#1931); двойное исправление секции SHMEM установщика, пустой wheel больше не даёт ложного успеха (#1943 / #1946); копирование GM в UB размерностью более двух сворачивает ведущие измерения по числу строк DMA (#1805); проблема пересоздания анализатора при каждом вызове в обёртке Cython (около 0,28 мс) сначала задокументирована (#1945), затем исправлена ленивой конструкцией, находящейся на рассмотрении (#1948).
- Состояние регрессии: ежедневный полный прогон тестов 25.10 сообщил о 2903 успешно пройденных пунктах, тестовое задание ранним утром 26.10 сообщило о сбое (#1944), 27.10 и 28.10 два дня подряд все 2903 пункта проходят (#1950). Масштаб тест-кейсов уже достаточен для роли шлюза, срок действия выводов измеряется неделями.
- Изменения совместимости на рассмотрении: Carver читает бюджет ресурсов A3 в соответствии с выбранным SDK, чтобы не размещать аккумулятор FP32 256×256 в L0C объёмом всего 128 KiB (#1955); зависимости AI Core Exception Dump снижены до CANN 9.2.0 с дополнением четырёх обязательных полей (#1956); документация переведена на T.Tensor, интерфейс DSL T.Buffer объявлен устаревшим (#1957). Четыре замечания по фактической проверке документации репозитория Ascend достигли максимум 46 раундов в одном комментарии (#1628 / #1655 / #1656 / #1659).
Hygon: четыре изменения за неделю, размещение по структуре оборудования
- Конвейер регистров может взаимодействовать с существующим конвейером разделяемой памяти, соответствующие инструкции фиксации и барьеров вставляются по ступеням конвейера, при числе warp более 4 включается расхождение warp (#18). Это изменение открыто 08.10 и сошлось за более чем две недели, при вливании это было крупное слияние — сначала в основную ветку, затем через ветку, поэтому число строк значительно превышает другие изменения той же партии.
- Нативное хранилище B16 и динамический WASP GEMM (#28): сохранение порядка испускания параметров Let в MLS, распространение разбиения warp GEMM на хранение матриц, отклонение алиасинга упакованного вывода B16 в B32, а также динамичность размерности WASP с выравниванием, выводимым по осям.
- Планирование строк буфера scale переведено на независимое двухбанковое разбиение, отдельное от банков LDS; одно и то же отображение строк передаётся одновременно в три места — выделение, копирование scale и опускание MMAC, — чтобы избежать трёх независимых выводов раскладки (#29, 12 файлов +1389/-314). Это изменение продолжает #28; Hygon за два дня выполнил три вливания в основную ветку.
- Фаза записи LDS и стратегия swizzle обычного пути копирования на рассмотрении, с двумя ширинами данных b8 и fp8 (#30, 18 файлов +2000/-84, добавлено пять тестов).
Источники: https://github.com/tile-ai/tilelang-hygon/pull/18, https://github.com/tile-ai/tilelang-hygon/pull/28, https://github.com/tile-ai/tilelang-hygon/pull/29, https://github.com/tile-ai/tilelang-hygon/pull/30
ROCm: pip-версия SDK и семантика плавающей точки
- Поддержка pip-версии SDK ROCm 10 добавлена (#3549, 2 файла +106/-19): образы rocm/pytorch для ROCm 10.x распространяют ROCm в виде Python wheel — нет ни дерева каталогов /opt/rocm, ни apt-пакетов rocm-*; функция get_rocm_arch() ранее жёстко использовала префикс /opt/rocm и при отсутствии пути откатывалась к gfx900, из-за чего на MI355X (gfx950) статическая проверка rocwmma сразу падала, и установка ROCM_PATH не помогала. Исправление — разрешение по порядку: префикс вызывающей стороны, find_rocm_path(), gcnArchName из torch, запасной вариант gfx900; каждая проба rocminfo получает тайм-аут 10 секунд, добавлен новый Dockerfile на основе rocm/pytorch:rocm10.1.0_ubuntu24.04_py3.12. Автор протестировал на MI355X: определение архитектуры изменилось с gfx900 на gfx950.
- Исправления точности exp/sin/cos и три контекстных исправления — автоматическая цель, получение потока и profiler — см. во второй главе. Преобразование FP4 и тип E8M0 на стороне ROCm, а также определение архитектуры в pip-образе всё ещё на рассмотрении (сопутствующие #3665 / #3549).
MetaX / Moore Threads (MUSA): существенных коммитов в окне нет
- В представлении организации tilelang-metax есть метка времени push (10-26 15:08), но после проверки по веткам коммитов в окне нет: последний коммит ветки main по умолчанию — повышение номера версии от 09-29, последний коммит ветки dev — 10-16, образы версий 0.1.14 и более ранних не изменялись, в потоке событий также нет push-событий в окне. Последний официальный релиз — по-прежнему 0.1.15 от 10-16.
- В tilelang-musa за всю неделю нет коммитов в основную ветку в пределах окна, последний тег — по-прежнему v0.1.15+musa.1 от 09-30. Moore Threads и MetaX на этой неделе фигурируют только в таблице проверки и не образуют отдельных пунктов.
Источники: https://github.com/tile-ai/tilelang-metax, https://github.com/tile-ai/tilelang-musa
Третья сторона: бэкенд Hexagon DSP
- 27 октября за один день 15 коммитов, которые провели векторизацию HVX, арену VTCM, раскладку Crouton и встроенные функции DMA вплоть до отображения и редукции на Crouton. По состоянию на 10-29 последний коммит основной ветки всё ещё остаётся на обновлении зависимостей CI от 08-24; метка времени push репозитория обновилась, но новых кода в основной ветке нет, поэтому это рассматривается лишь как наблюдение за интенсивностью вклада сообщества и не засчитывается как прогресс в upstream.
- Также есть обёртка версии PPU с нулевыми изменениями (во время выполнения перехватывает протокол import и механизм site, не изменяет исходный код upstream и не пересобирает пакет; функции CUDA, не имеющие аналога в PPU, явно сообщают об ошибке, а не тихо деградируют) — это третья форма миграции бэкенда.
Источники: https://github.com/xwhzz/tilelang-hexagon, https://github.com/flytiger-eco/tilelang-wrapper-for-sail
4. Экосистема и стороны внедрения
TileOPs: вторая неделя после 0.1.0
- Темп слияний после релиза заметно замедлился: во вторник 14 коммитов, в среду 4, в четверг 7, в пятницу 1; акцент сместился с «заморозки интерфейсов» на завершение работ по производительности и корректности.
- Четыре конкретных цифры по производительности: селектор больше не подгоняется вплотную к manifest, а перекалибруется на занятости (device_busy_ms) по 160 плотным shape, 60 shape с m от 9 до 32 и 264 shape с m≤8; координатный спуск выполняется по ожидаемому логарифмическому сожалению softmin, сквозное сожаление по занятости на отложенном manifest снизилось с 5.79% до 0.48%, а на отложенном наборе m≤8 — с 14.18% до 1.79% (#2784); не-NT раскладки переведены на транспонированное постоянное ядро coop2_swap, 2112×7168×4096 TN снизился с 195.3 микросекунды до 175.3 микросекунды, на другой H200 той же машины — с 174.3 до 158.5 микросекунды, оба результата превосходят QuACK с 187.9 и 167.0 микросекунды (#2789); cumsum для длинных строк переведён на двухсегментное сканирование с затравкой, (8,65536) снизился с 12.75 микросекунды до 5.18 микросекунды и устранён сбой запуска на tile выше 65535 (#2790); восстановление extrema переведено на PTX max.NaN / min.NaN, amax (2048,4096) bf16 вернулся с 8.352 микросекунды к 6.976 микросекунды, быстрее FlagGems (#2792).
- Сценарий «спина к спине» выделен в отдельную задачу: в четверг открыт новый вопрос — при одиночном вызове данная реализация опережает QuACK, но в тренировочных сценариях «спина к спине» с ограничением мощности шесть из десяти крупных строк отстают (#2791); затем рассматриваемое изменение GEMM пересчитывает группировку сетки и число постоянных блоков с учётом ограничения мощности, объём чтения памяти на q-b shape предзаполнения DeepSeek V3 снизился с 168 MB до 94 MB (#2794).
- Дополнение корректности и возможностей: плотный прямой проход D128 разделён по key, prefill-rope снизился с 31.04 микросекунды до 17.09 (#2777); постоянный прямой проход D128 переписан по потокам с записью LSE (#2774); LayerNorm со слитым сложением разбит по строкам между CTA, дефект точности вынесен в отдельный тикет (#2768 / #2773); три исправления смещённого хранения, а также сгруппированный GEMM для SM90 и выходной ABI (#2761 / #2765 / #2762).
- Форма релиза: релизный образ слит (#2793), библиотека операторов и TileFoundry впервые попали в один образ; известный пробел — проблема точности FusedAddLayerNormFwdOp — в течение недели так и не исправлен, слитых операторов первого шага дорожной карты пока нет.
Источники: https://github.com/tile-ai/TileOPs/pull/2784, https://github.com/tile-ai/TileOPs/pull/2789, https://github.com/tile-ai/TileOPs/pull/2790, https://github.com/tile-ai/TileOPs/pull/2792
TileFoundry: от разделения на три пакета к статическому контракту
- В начале недели проект разделён на три дистрибутивных пакета core / nvidia / apple, тестовый ввод загружается только один раз (#268 / #269); для sm_89 добавлен warp MMA для E4M3, а проверка возможностей расширена с «только MMA» до каждой инструкции — ранее bulk copy, TMA copy и формы mbarrier проходили валидацию и падали лишь на codegen или ptxas (#261 / #262 / #264).
- В середине недели исправлены адресация целевой раскладки cp.async и обратная раскладка MLA (#263 / #260 / #257), а также передача всего окна по самому операнду (#273, GEMM для sm_89 снова компилируется) и размер динамической разделяемой памяти по фактическому использованию ядром (#271; автор не принял предложение «выдавать по полной ёмкости цели», поскольку статическая и динамическая разделяемая память считаются в одном лимите, и от того, сколько запрашивает каждый блок, зависит, сколько блоков поместится в один SM).
- В четверг слито одно разрушающее изменение (#279): 24 семейства runtime-операторов AMX описаны как 39 статически зарегистрированных контрактов TIR с доменами параметров, операндами и шаблонами раскладок, наборами побочных эффектов и возможностями целей от M1 до M4; добавлены Python-оценщик и эталонный C-симулятор в качестве золотого стандарта, добавлены 59 репрезентативных атомарных случаев, покрывающих все 39 статических операторов, случаи высокоуровневого и среднеуровневого промежуточного представления выполняются в реальных доменах на 2, 4, 8, 12 потоков с проверкой принятия и отклонения кандидатов. Верификация — 46 сфокусированных тестов пройдено.
- Новый дефект отмечен отдельно: аналитическая сторона завышает пик разделяемой памяти и не передаёт его в TIR (#272), источник тот же, что у семейства ThreadSync в основном репозитории.
Принимающие стороны и ветки сообщества
- Оба известных потребителя молчали всю неделю: TileKernels от DeepSeek (2018 звёзд) и FlashQLA со стороны Tongyi (742 звезды) — их основные ветки остановились на 10-14, в окне мониторинга новых пушей не было. На этой неделе сигналы экосистемы исходили в основном от репозиториев, созданных сообществом, а не от этих двух внутренних потребителей.
- tilelang-for-sail от T-HEAD: репозиторий создан 09-22, это ветка основного upstream-репозитория, публично доступны 13 веток; помимо основной ветки и зеркал версий с v0.1.11 по v0.1.14, видны исправление общего layout матрицы PPU, пакет языка PPU, особенности runtime-компиляции и несколько веток исправления дефектов. Последний коммит основной ветки остановился на 10-22, время пуша репозитория обновлено до 10-29 19:27; внутри репозитория нет ни документации, ни записей о релизах, поэтому его можно использовать только как ориентир для наблюдения. Примечательно, что дефект № #3705 в пятницу был воспроизведён именно сборкой из исходников этого репозитория — пользователи ветки столкнулись с реальной проблемой сборки раньше, чем upstream.
- ops-tilelang сообщества CANN: репозиторий создан 10-20, позиционируется как репозиторий высокопроизводительных операторов сообщества для Ascend NPU, централизованно управляет реализациями kernel, автоматизированными тест-кейсами, стандартными рабочими нагрузками и базовыми показателями производительности; в README явно указано, что поддерживается только Ascend 950 и выше, требуется CANN 9.3.0 и выше и используется weekly-версия сообщества. Уже с помощью семи операторов собрана фрагмент «выход Attention плюс предобработка перед FFN» для DeepSeek V4.1 Flash, HIDDEN=5120, MHC=4, при B от 1 до 256 измеренная выгода SuperKernel составила от 1.17% до 2.75%. Его связь с официальным tilelang-ascend пока неясна, это только наблюдение за экосистемой.
- Двойные сопутствующие репозитории PTO-ISA: репозиторий задач перенёс широковещательную загрузку PTO на PTOAS 0.70, неделей ранее велась работа по разъяснению знака при квантованном масштабировании и переписыванию условий задач; в репозиторий бенчмарков добавлены два коммита — блочное масштабирование SV2 и поколоночный анализ, основанием послужило количество вариантов инструкции абсолютного максимума в библиотеке 31.39, приложены анализ пропускной способности инструкций во время выполнения и анализ roof line, явно указано, что это не единая методология буфера.
- Дистрибутив: PR выпуска 0.1.15+sunrise.1.2.0 от Sunrise влит в начале недели (#9), это второй пример нижестоящей формы дистрибуции внутри организации; если миграция TIRx в основном репозитории будет реализована, таким дистрибутивам придётся соответственно изменить объявления зависимостей — это связанное влияние, заслуживающее отслеживания на следующей неделе.
- Хабовый репозиторий сообщества по направлению RISC-V: TongmingLAIC/tilelang-riscv создан 10-23, пуш 10-26, позиционируется как хаб сообщества TileLang на RISC-V, объединяющий бэкенды компилятора, AI-операторы, инструменты разработки и документацию. Сейчас это всё ещё пустой каркас, работающих операторов или реализованного бэкенда не видно.
Источники: https://github.com/t-head/tilelang-for-sail, https://github.com/Atlas-Ascend-Fork/ops-tilelang, https://github.com/PTO-ISA/tilelang-puzzles-ascend, https://github.com/TongmingLAIC/tilelang-riscv
5. Сообщество, руководства и мероприятия
- Знаниевые активы становятся новой категорией на стороне сообщества на этой неделе: tilelang-knowledge создан 29.10, четыре коммита в тот же день образуют фундамент знаний, ориентированный на агентов — структура репозитория, 33 проектных кейса операторов (каждый с фиксированным источником), 20 карточек знаний по программированию с источниками, 7 подкреплённых доказательствами паттернов оптимизации GPU. Заявленное назначение репозитория — дать агенту возможность при столкновении с оператором определить, какие практики применимы, как следует изменить код, как проверить и куда обратиться после неудачи. Это та же категория попыток, что контракт операторов TileFoundry и skill профилирования в репозитории Ascend.
- Постоянные вложения в учебные пособия и упражнения: tilelang-puzzles-ascend делает учебное пособие по квантованным kernel PTO для Ascend; китайский сайт практики для собеседований по операторам TileLang — 9 модулей, 18 задач; сопроводительный репозиторий иллюстрированного курса, по заявлению, использует оригинальные сценарии и анимацию для исчерпывающего объяснения каждой темы и публикуется вместе с видео; экспериментальный репозиторий распределённых раскладок создан в тот же день.
- Документация и локализация: tilelang.github.io всю неделю автоматически синхронизируется при слиянии в основной репозиторий (26.10 — восемь коммитов, 27.10 — шесть, 28.10 — два), сторонний репозиторий локализации tilelang-docs-l10n обновляется штатно, китайский узловой репозиторий сообщества RISC-V завершил первый содержательный коммит, что свидетельствует о нормальной работе цепочки синхронизации документации.
- Сторона обсуждений: пользователь TileScale спрашивает, можно ли обновить используемую версию TileLang (#72). Последний push в этом репозитории остановился на 25.08, документация и примеры по-прежнему указывают на более раннюю версию; такие вопросы обычно возникают после того, как вышестоящий интерфейс вступает в фазу быстрых переименований — рассматриваемая на этой неделе в основном репозитории замена на TIRx и переименование 26 классов операторов в TileOPs увеличат издержки нижестоящих проектов по сопровождению версий.
- На стороне новостей за всю неделю ноль существенных попаданий: шесть групп запросов Google News на китайском и английском (точные слова плюс два дня, китайский плюс Ascend, китайский плюс оператор, название организации плюс два дня, английский плюс GPU, китайский плюс компилятор плюс семь дней) в пяти окнах сбора вернули лишь одну перепечатку о клиническом искусственном интеллекте, не связанную с языком операторов; все релевантные попадания Hacker News оказались вне окна, ближайшее — перепечатка обсуждения стека программирования Ascend от 02.10; в arXiv по запросу TileLang новых статей нет. Основное содержание ежедневного отчёта поэтому по-прежнему опирается на репозитории и экосистемные репозитории. На промышленной стороне лишь 26.10 появился материал о сокращении разрыва экосистемы Ascend и DeepSeek, представляющий собой вторичный комментарий без новых технических данных.
6. Наблюдения за трендами
Релизная инженерия прошла путь от «застревания на последней клетке» до «доставки через образы». В выпуске ежедневного отчёта в понедельник ещё писали, что первый релиз TileOPs «документация готова, артефакты не загружены», а на PyPI последней оставалась версия 0.0.1.dev2 от 09.10.2025; во вторник в 07:45 артефакты загружены, в 13:15 опубликована страница релиза, а в четверг релизный образ уже связал воедино библиотеку операторов, TileFoundry и три идентификатора окружения (cuda13.2, torch2.13, tilelang0.1.12). За неделю эта линия прошла путь от «можно ли выпустить» до «как комбинировать при доставке». Для библиотеки с более чем 200 операторами устанавливаемость в большей степени, чем оптимизация ещё одного процентного пункта, определяет скорость внешнего принятия; ответ этой недели — сделать артефактом и сам путь установки.
Типы дефектов сильно сконцентрированы на «компилируется, при запуске не падает, результат неверен» и тесно связаны с аппаратурой или контекстом. Вывод размещается в неправильном потоке (повреждается только в нестандартном потоке и при наличии поставленных в очередь работ), T.ws(-1) выполняется на нулевом числе потоков, заполнение среза проверяется по длине, а не по концу, отрицательный индекс после обёртки остаётся отрицательным, address_of воспринимается как чтение — все пять не дают предупреждений на этапе компиляции и исключений во время выполнения. Цена таких дефектов гораздо выше, чем у ошибок компиляции, потому что они загрязняют саму предпосылку «все тесты пройдены»; шесть тестов, всплывших в среду и предполагающих холодную компиляцию, и семантическая дыра without_kernel_cache в четверг как раз показывают, что тестовая инфраструктура находится в той же зоне риска. Ответ этой недели — перенести проверку границ на этап компиляции; направление верное, но три новых дефекта #3704, #3705, #3707 показывают, что эта граница ещё далеко не очерчена.
Ascend переходит от «переноса бэкенда» к «дополнению операторов» и впервые даёт воспроизводимые критерии приёмки. В среду NPUIR влит в основную ветку (504 самотеста, 71/72 примера), из пяти слияний с четверга по пятницу четыре — это операторы и примеры, и все они выстроены по потребностям вышестоящих моделей: сжатие indexer в GLM-5.3, скалярное произведение блочно-гейтованного внимания, четырёхбитное квантованное матричное умножение, глубокая свёртка квантованной визуальной модели. Общее в них — квантование и слияние записываются в само тело kernel (чисто целочисленное кодирование E4M3, соглашение об упаковке четырёх бит, двойной kernel плюс быстрый путь 1 на 1), а не оставляются на исправление на стороне хоста; одновременно skill профилирования и канал чеклистовых тестов оформляются в процесс. Основное противоречие меняется с «можно ли скомпилировать» на «можно ли стабильно принять численные значения и производительность оператора», а миграция планировщика a2a3 с её 100 файлами предвещает, что изменения следующего этапа будут в слое планирования.
Вычитание в путях исполнения, сложение в списке бэкендов. Основной репозиторий на этой неделе собрал общерезервное (all-warp) приведение в redux.sync, раздробил блокировку компиляции autotuner, объединил копирование и заполнение из GM в L1 в одну задачу, вернул раскладку представления buffer из разделяемых переменных в единое представление; в то же время список бэкендов продолжает расширяться — ROCm добавляет pip-версию SDK и FP4, Hexagon — 15 коммитов за день, PPU — обёртку с нулевыми изменениями, Intel AMX в TileFoundry превращается в 39 статических контрактов. Эти два направления не противоречат друг другу: вышестоящий уровень сходится в путях исполнения, нижестоящие уровни упаковывают и распространяют самостоятельно — та же идея, что и превращение TVM во внешнюю зависимость в TIRx.
«Форк как явление» — самый сильный сигнал принятия на этой неделе, и он же приносит самые реальные издержки синхронизации. T-HEAD использует TileLang как основу собственного аппаратного стека для ветки PPU, сообщество CANN создаёт собственный репозиторий операторов, PTO-ISA превращает набор задач и бенчмарки в сопутствующие репозитории, в RISC-V появляется общественный узловой репозиторий — всё это не находится в организации tile-ai, но зависит от стабильности языкового уровня; именно в этом смысл заморозки публичного API в 0.1.0 и превращения её в CI-гейт. Цена столь же очевидна: в пятницу дефект #3705 сначала был обнаружен реальной сборкой пользователя ветки, и только затем upstream выпустил исправление; чем больше веток, тем длиннее путь «downstream нашёл раньше, upstream исправил позже», и главному репозиторию пора начать отвечать на долгосрочный вопрос о том, как синхронизировать ветки с upstream.
Проблема методологии начинает решаться как продуктовая. В четверг TileOPs выделил в отдельный пункт «опережение при одиночном вызове, отставание при последовательных вызовах» (#2791); в пятницу изменение GEMM пересчитало группировку сетки с учётом ограничения по мощности и снизило чтение DRAM со 168 MB до 94 MB (#2794); селектор также перешёл от подгонки по манифесту к калибровке по пиковой нагрузке. По сравнению с «на сколько микросекунд быстрее стала некая строка», такие изменения признают, что реальная картина вызовов при обучении и выводе отличается от бенчмарков, и записывают это различие в политику планирования. Для языка, на котором предстоит писать ядра для больших моделей, это в большей степени определяет его долгосрочное принятие, чем наращивание количества операторов.
Приложение: материалы и описание проверки
Таблица проверки источников
| Источник | Результат проверки |
|---|---|
| По репозиториям организации GitHub tile-ai (tilelang / TileOPs / TileFoundry / tilelang-ascend / tilelang-mlir-ascend / tilelang-hygon / tilelang-metax / tilelang-musa / TileRT / tilescale / DeepStack / сайт документации / ночной зеркальный репозиторий) | В окне были push-события: tilelang, TileOPs, TileFoundry, tilelang-ascend, tilelang-mlir-ascend, tilelang-hygon, tilelang.github.io, TileOPs.github.io, TileOPs-nightly; в tilelang-metax, tilelang-musa, TileRT, tilescale, DeepStack, tilelang-puzzles коммитов в главную ветку в окне не было |
| Проверка фактов слияния (is:pr is:merged) | В понедельничном 72-часовом окне 78 PR; в четырёх 24-часовых окнах со вторника по пятницу суммарно 86 PR (tilelang 47, TileOPs 26, tilelang-ascend 5, TileFoundry 4, tilelang-hygon 3, tilelang-mlir-ascend 1), по дням соответственно 30, 20, 24, 12 |
| Проверка фактов на рассмотрении (is:pr is:open updated) | Пять окон — 76, 49, 45, 48, 54 PR, включая рефакторинг TIRx, миграцию планировщика a2a3, пакет проверки документации Ascend и изменения планирования GEMM в TileOPs |
| Проверка новых issue | Пять окон — 19, 11, 7, 6, 4 записи, причём ежедневно включая уведомления о сбоях от тестового робота репозитория Ascend |
| Проверка на уровне коммитов главной ветки | Число слияний в каждом окне совпадает с числом коммитов в главную ветку; в tilelang по дням 10, 14, 13, 15, 5 |
| Страницы релизов и теги | В tilelang последним остаётся v0.1.15 (релиз 09-30), за всю неделю новых версий нет; в TileOPs последний — v0.1.0 (10-27); в TileFoundry последний — 0.0.4rc1 (10-25); в tilelang-ascend последний — v0.1.2.000 (09-09); в tilelang-metax — v0.1.15 (10-16) |
| Сторонние и экосистемные репозитории | В репозитории операторов сообщества Ascend, двух репозиториях PTO-ISA, репозитории инструментов разработки, репозитории знаний, репозитории иллюстрированного курса, репозитории распределённой раскладки, репозитории фьюжн-операторов DCU, репозитории переноса моделей, репозитории бэкенда Hexagon, репозитории ветки T-HEAD, общественном узловом репозитории RISC-V в окне были push-события; в главной ветке Hexagon новых коммитов нет, обновилось только время push в репозитории |
| Принимающие стороны | Главные ветки TileKernels и FlashQLA остановились на 10-14, в окне push-событий не было |
| Google News (шесть групп на китайском и английском) | Только одна перепечатка на китайском о клиническом искусственном интеллекте с добавлением Ascend и один отраслевой обзорный комментарий, оба не содержат новых технических данных и не включены как записи |
| Hacker News | За последние четыре дня все релевантные попадания оказались вне окна |
| arXiv | Поиск по TileLang новых статей не дал |
Основные ссылки
- [1] Страница релиза TileOPs v0.1.0 — https://github.com/tile-ai/TileOPs/releases/tag/v0.1.0
- [2] Артефакт TileOPs на PyPI — https://pypi.org/project/tileops/
- [3] Бэкенд NPUIR для Ascend 910 влит в основную ветку (#207) — https://github.com/tile-ai/tilelang-mlir-ascend/pull/207
- [4] Рефакторинг TIRx (#3666) — https://github.com/tile-ai/tilelang/pull/3666
- [5] Исправление потока выделения выходных данных (#3649) — https://github.com/tile-ai/tilelang/pull/3649
- [6] Полноwarpное сокращение переведено на redux.sync (#3692) — https://github.com/tile-ai/tilelang/pull/3692
- [7] Параллельная компиляция в autotuner (#3476) — https://github.com/tile-ai/tilelang/pull/3476
- [8] Исправление точности математических функций в ROCm (#3621) — https://github.com/tile-ai/tilelang/pull/3621
- [9] Интерфейс точной адресации буферов для Ascend (#3607) — https://github.com/tile-ai/tilelang/pull/3607
- [10] Оператор сжатия kpool для Ascend (#1910) — https://github.com/tile-ai/tilelang-ascend/pull/1910
- [11] Исправление первопричины W4A4 int4×int4 (#1731) — https://github.com/tile-ai/tilelang-ascend/pull/1731
- [12] Двойной bank scale-буфера для Hygon (#29) — https://github.com/tile-ai/tilelang-hygon/pull/29
- [13] Конвейер регистров для Hygon (#18) — https://github.com/tile-ai/tilelang-hygon/pull/18
- [14] Поддержка pip-версии SDK ROCm 10 (#3549) — https://github.com/tile-ai/tilelang/pull/3549
- [15] Статический контракт AMX в TileFoundry (#279) — https://github.com/tile-ai/TileFoundry/pull/279
- [16] Образ релиза TileOPs (#2793) — https://github.com/tile-ai/TileOPs/pull/2793
- [17] Калибровка селектора TileOPs по пиковой нагрузке (#2784) — https://github.com/tile-ai/TileOPs/pull/2784
- [18] Ветка-репозиторий T-HEAD — https://github.com/t-head/tilelang-for-sail
- [19] Репозиторий операторов сообщества CANN — https://github.com/Atlas-Ascend-Fork/ops-tilelang
- [20] Репозиторий бэкенда Hexagon — https://github.com/xwhzz/tilelang-hexagon
- [21] Хаб-репозиторий сообщества RISC-V — https://github.com/TongmingLAIC/tilelang-riscv
- [22] База знаний tilelang-knowledge — https://github.com/qiuuuuu622/tilelang-knowledge
Примечание: факты, номера версий и даты в настоящем отчёте взяты из оригинальных текстов пяти выпусков ежедневного отчёта за период и соответствующих им первоисточников, без спекулятивных дополнений; окно мониторинга выпуска за понедельник составило 72 часа (охватывает предыдущие выходные), и число влитых изменений в нём включает один день 10-23, что пересекается с предыдущим еженедельным отчётом, поэтому в настоящем отчёте оно не суммировалось с четырьмя последующими выпусками. Все пять рабочих дней периода охвачены ежедневными отчётами полностью, пропусков нет.