Окно мониторинга: 2026-10-16 07:00 ~ 2026-10-19 07:00 (пекинское время, 72 часа, с учётом выходных).

Источники: GitHub (полная проверка пушей в 29 репозиториях организации tile-ai; в окне пуши были в 8 репозиториях: TileOPs, TileOPs.github.io, TileOPs-nightly, TileFoundry, tilelang, tilelang-hygon, tilelang-metax, tilelang.github.io; в организации за окно смержено 61〔TileOPs 44, TileOPs.github.io 5, tilelang 5, tilelang-hygon 3, TileFoundry 2, tilelang-metax 2〕, на рассмотрении 69〔tilelang 51, TileOPs 8, tilelang-ascend 5, tvm 2, TileFoundry 1, tilelang-hygon 1, tilelang-mlir-ascend 1〕; поимённая проверка не-дефолтных веток〔ascendc_pto / dev / snapshots〕) + проверка страниц релизов и файлов версий + проверка репозиториев потребителей (TileKernels / FlashQLA) + проверка репозиториев сообщества (tilelang.github.io, TileOPs.github.io, easy-tilelang, AnacondaRecipes, learn-tilelang, BM1690 pipelines) + проверка ночных пайплайнов + множественные запросы Google News на китайском и английском (через прокси) + Hacker News + arXiv.


Индекс этого выпуска

  • Главное за день: TileOPs за один день 20 коммитов довели восемь операторов до статуса реализованных, три коммита по Ascend и закрытие блочного масштабирования для Hygon — фреймворк векторизации PTO перешёл на рассмотрение (10-16)
    1. Основной прогресс проекта
      • 1.1 Основной репозиторий: чистый TMA-продюсер включён в прямой барьер, исправлен дедлок warp-specialization (#3503) (10-16)
      • 1.2 Основной репозиторий: разделяемый буфер братских пайплайнов разворачивается только один раз, исправлен краш LayoutInference (#2342) (10-16)
      • 1.3 Основной репозиторий на рассмотрении: три исправления Profiler и локализация исходников eager-фронтенда (#3559 / #3560 / #3561 / #3558) (10-18)
    1. Мультибэкендная адаптация (Ascend / MetaX / Hygon / Moore Threads)
      • 2.1 Ascend: буфер SS, сброс состояния RNG и редукция SimdVF — три коммита смержены (#3514 / #3331 / #3437) (10-16)
      • 2.2 Ascend: векторизация T.Parallel в фреймворк PTO VMI на рассмотрении, 44 файла, почти двадцать тысяч строк (#3512) (10-18)
      • 2.3 Hygon: три коммита scale copy для блочно-масштабированного GEMM — K-major упаковка, FP32 MLS, конвейеризация (#22 / #23 / #24) (10-17)
      • 2.4 MetaX и Moore Threads: линия metax dev синхронизирована с основной веткой и исправлен xfail; в окне по musa пушей нет (10-16)
    1. Экосистема и потребители (TileOPs / TileFoundry / библиотеки операторов)
      • 3.1 TileOPs: два коммита на стороне внимания переведены в основной статус — MLAVarlen переведён в implemented, DSAPaged реализован (#2629 / #2633) (10-18)
      • 3.2 TileOPs: два оператора CausalConv1d, преобразование Hadamard и SM90 W4A8 GEMM добавлены (#2627 / #2624 / #2590) (10-18)
      • 3.3 TileOPs: точечное закрытие производительности четырёх семейств линейного внимания (GLA / GDN / KDA / DeltaNet) (10-18)
      • 3.4 TileOPs: расщепление Softmax по кластеру из 16 CTA и срезы состояния GLA decode (#2632 / #2631) (10-18)
      • 3.5 TileFoundry: разделение плана хранения и плана запуска, исправление вехи schedule (#243 / #241) (10-18)
      • 3.6 Потребители и ночные пайплайны: в TileKernels / FlashQLA пушей нет; ночные снапшоты восстановлены до 4 (10-19)
    1. Сообщество, руководства и мероприятия
      • 4.1 Документация: согласование китайского руководства по trace, восемь новых операторов внесены на страницу API (#76) (10-18)
      • 4.2 Линия версий: TileOPs по-прежнему pin TileLang 0.1.12, PR обновления до 0.1.15 закрыт без мержа (#2554) (10-18)
      • 4.3 Медиа и академия: в окне нулевых приростов в Google News / Hacker News / arXiv (10-18)
    1. Наблюдения за трендами
      • 5.1 Переход от «дополнения операторов» к «точечному закрытию производительности»
      • 5.2 Цепочка внимания выровнена под производственный формат DeepSeek-V3.2
      • 5.3 Ascend: от «работает» к «автоматической векторизации скалярного параллелизма»
      • 5.4 Компилятор вступил в фазу упрочнения корректности
  • Приложение: материалы и пояснения по проверке
  • Полный список источников

Ключевые события дня: TileOPs за один день 20 коммитов перевели восемь операторов в реализованные, три коммита Ascend и закрытие блочного масштабирования Hygon — векторизационный фреймворк PTO перешёл на рассмотрение (10-16)

За три выходных дня центр тяжести сместился с основного репозитория на библиотеку операторов: TileOPs 10-18 влил 20 коммитов за день, суммарно 44 за окно мониторинга, сразу переведя 8 операторов, ранее имевших лишь spec, в состояние implemented, охватив MLA varlen prefill, постраничное декодирование DSA, причинную свёртку, преобразование Hadamard, W4A8 GEMM, постраничную агрегацию KV и слияние состояний внимания. Основной репозиторий tilelang за то же окно влил 5 коммитов: два — исправления корректности CUDA warp-specialization и разметки конвейера, три относятся к Ascend; репозиторий Hygon дополнил блочное масштабирование GEMM копированием scale от упаковки через нативизацию до конвейеризации. Больше внимания заслуживает очередь на рассмотрении: векторизационный фреймворк Ascend PTO #3512 с 44 файлами и почти двадцатью тысячами добавленных строк компилирует T.Parallel в PTO VMI, нацеливаясь напрямую на Ascend 950; из 51 коммита основного репозитория на рассмотрении 27 помечены BugFix, что говорит о том, что проект находится в фазе ужесточения корректности после развёртывания операторов.


1. Прогресс ключевых проектов

1.1 Основной репозиторий: чистый TMA-производитель включён в прямой барьер, исправлена взаимоблокировка warp-specialization (#3503)

В конфигурации с чистым TMA-производителем ProducerConsumerWSRewriter заставляет цикл производителя проходить по всем производительным warp, но ранее только выбранные потоки достигали прямого (full) барьера, а производительные warp с 1 по 3 ждали лишь барьер обратного давления (empty), не синхронизируясь с потребителями, могли отставать на две фазы и зависать на переиспользуемом parity, блокируя весь блок. Изменение заставляет каждый производительный поток достигать прямого барьера (arrive_count берётся из producer_extent), что согласуется с существующей практикой для SIMT и cp.async производителей, исправляет #3470.

Источник: tile-ai/tilelang#3503 (10-16)

1.2 Основной репозиторий: общий буфер соседних конвейеров разворачивается только один раз, исправлено падение LayoutInference (#2342)

Когда два смежных цикла T.Pipelined используют общий буфер alloc_shared, но с разными num_stages (например, 2 и 4), первый конвейер разворачивает буфер из (64,32) в (2,64,32), а на этапе сбора второго конвейера уже развёрнутый буфер принимается за исходное выделение и добавляется ещё одно измерение, получая четырёхмерный (4,2,64,32), из-за чего ICHECK в LayoutInference сразу падает. Изменение распознаёт по исходному выделению и разворачивает только один раз, заменяет предыдущий #2337, исправляет #2309, добавляет 349 строк, удаляет 6 строк.

Источник: tile-ai/tilelang#2342 (10-16)

1.3 Основной репозиторий на рассмотрении: тройное исправление Profiler и локализация исходников eager-фронтенда (#3559 / #3560 / #3561 / #3558)

Три коммита Profiler касаются погрешности бенчмарков и меж­устройственных проблем: #3559 исправляет пустой захват CUDA Graph на другом устройстве (поток захвата переиспользуется из кеша предыдущей карты, replay не выполняется, счётчик регрессии равен 9 вместо 27); #3560 делает снимок вывода до перезаписи последующими вызовами; #3561 исключает время cache-flush из критерия ранней остановки, чтобы избежать изменения итогового победителя из-за сначала опробованного медленного кандидата. Кроме того, #3558 отображает номера строк шаблона eager-переписчика обратно на первую строку пользовательского оператора, исправляя рассинхронизацию traceback и покрытия.

Источник: tile-ai/tilelang#3559, #3561, #3558 (10-18)


2. Мультибэкендная адаптация (Ascend / MetaX / Hygon / Moore Threads)

2.1 Ascend: три влитых коммита — SS-буфер, сброс состояния RNG и редукция SimdVF (#3514 / #3331 / #3437)

#3514 добавляет T.alloc_ss: на dav-3510 скалярное хранилище, разделяемое одним AIC и двумя его AIV, каждый AIV может публиковать своё uint32-слово, AIC читает через упакованное представление uint64; пул SS на 3 KiB в группе, база с выравниванием на 32 байта, счётчик версий и синхронизация идут через стандартный конвейер буферов. #3331 сбрасывает состояние RNG в AddFunction, чтобы остаточный __asc_rng_state от соседних ядер не вызывал у bisheng ошибку необъявленного идентификатора. #3437 заставляет редукцию dim=1 внутри SimdVF сохранять только lane 0.

Источники: tile-ai/tilelang#3514, #3331, #3437 (16.10)

2.2 Ascend: векторизация T.Parallel до фреймворка PTO VMI на рассмотрении, 44 файла, почти двадцать тысяч строк (#3512)

Этот PR позволяет пользователям писать скалярный параллельный T.Parallel (поэлементный, управляющие потоки, редукция) внутри T.SimdVF(lanes=L), компилятор векторизует его в инструкции PTO VMI, которые затем через PTOAS компилируются для выполнения на Ascend 950. В разделении обязанностей сторона TileLang отвечает за логическую раскладку lane, конвейер векторизационных pass-ов, генерацию инструкций VMI и логическое отображение Fragment, а сторона инструментальной цепочки — за разбиение физических регистров, материализацию mask и распределение векторных регистров. Изменено 44 файла, добавлено 18988 строк, удалено 67 строк — ключевой шаг линии PTO от маршрутизации исполнения к автоматической векторизации.

Источник: tile-ai/tilelang#3512 (18.10)

2.3 Hygon: три коммита scale copy для блочно-масштабируемого GEMM — K-major упаковка, FP32 MLS, конвейеризация (#22 / #23 / #24)

#22/#23 поддерживают упакованный scale copy для K-major LDS, а также нативный FP32 MLS GEMM для gfx946 (kPack=2), одновременно добавляя регрессии блочного масштабирования, TF32 и FP32; #24 дополнительно поддерживает конвейеризованный scale copy в блочно-масштабируемом GEMM, добавлено 357 строк, удалено 47 строк, 5 файлов. Все три коммита влиты в период с 16 по 17 октября; линия Hygon по блочно-масштабируемому GEMM продвинулась от «способности считать» до согласования с конвейером основного репозитория.

Источники: tile-ai/tilelang-hygon#22, #24 (17.10)

2.4 MetaX и Moore Threads: ветка metax dev синхронизирована с основной линией и исправлен xfail; в окне musa нет пушей (16.10)

Ветка по умолчанию tilelang-metax — dev; в окне влиты два коммита: #160 исправляет xfail-случаи MetaXGPU (включая test_cuda_fma_fmul.py и др.), #161 вливает main в dev — регулярная синхронизация вслед за базовой линией основного репозитория. У tilelang-musa ветка по умолчанию main, в окне ноль коммитов, последний — от 30.09 «Prepare public TileLang MUSA 0.1.15». Последний коммит tilelang-mlir-ascend остановился на 15.10, пушей в окне нет.

Источник: tile-ai/tilelang-metax (16.10)


3. Экосистема и принимающие стороны (TileOPs / TileFoundry / библиотеки операторов)

3.1 TileOPs: два коммита по вниманию переведены в основной статус — MLAVarlen переведён в implemented, DSAPaged реализован (#2629 / #2633)

#2629 меняет статус MLAVarlenFwdOp на implemented; ранее ядро prefill MLA с упакованным varlen уже было влито, этот коммит дополняет требования manifest и заставляет MLAVarlenCall строить вызовы в трёх конфигурациях: DeepSeek-V3 8×4K, DeepSeek-V3 смешанная 512–16K, Kimi K2 4×8K; регистрируются бенчмарки двойной точности BF16 и FP16, с ориентацией на flash_attn_varlen_func из FA3 и BatchPrefillWithRaggedKVCacheWrapper из FlashInfer. #2633 добавляет DSAPagedFwdOp — блочное декодирование странично организованного FP8 латентного кэша в формате строк по 656 байт DeepSeek-V3.2 из FlashMLA, возвращает o и lse; ядро SM90 с двумя буферами ключевых блоков по 64 слота чередуется между тремя группами warp, при 128 головах два сегмента по 64 головы взаимодействуют в кластере 2-CTA.

Источники: tile-ai/TileOPs#2629, #2633 (18.10)

3.2 TileOPs: двойной оператор CausalConv1d, преобразование Hadamard и дополнение SM90 W4A8 GEMM (#2627 / #2624 / #2590)

#2627 добавлены CausalConv1dFwdOp и CausalConv1dUpdateFwdOp, ширина от 2 до 4, опциональные bias и SiLU, накопление в FP32, префилл идёт через упакованные последовательности (cu_seqlens и опциональный has_initial_state), декодирование продвигается на один шаг на последовательность, форма состояния [B, D, W-1] согласована с causal_conv1d_update из vLLM. HadamardTransformFwdOp из #2624 поддерживает base_order 1/12/20/28/40, n до 2^28, fp16/bf16 с накоплением в FP32, использует одну пару 16-битных MMA для выполнения четырёхуровневой бабочки. GemmW4A8FwdOp из #2590 на SM90 выполняет активацию FP8 e4m3, умноженную на групповые масштабы весов INT4, с выходом BF16, ядро decode обслуживает M≤32, при большем M используется warp-специализированное ядро префилла.

Источники: tile-ai/TileOPs#2627, #2624, #2590 (10-18)

3.3 TileOPs: точечное закрытие производительности четырёх семейств линейного внимания (GLA / GDN / KDA / DeltaNet) (10-18)

В окне мониторинга подавляющее большинство мержей TileOPs помечено [Perf] и сосредоточено на четырёх линиях линейного внимания. GLA: в цепочке состояний префилла убрано одно матричное умножение (#2626), состояние decode режется по value — один ключ на блок (#2631), для SM89 BF16 развёрнуто сокращение градиента gate (#2618) и частично развёрнуто сокращение по ключам (#2617). GDN: префилл разделяется на партиции только тогда, когда обход оставляет простаивающие SM (#2628), при сильном затухании gate префилл остаётся ограниченным (#2594). KDA: chunk scan разделён на обход состояний и блочно-параллельный вывод (#2623), хвостовое условие состояния заменено на булево суждение (#2630). DeltaNet: обратный градиент состояния выполняет матричное умножение только один раз на блок (#2625).

Источники: tile-ai/TileOPs#2626, #2631, #2628, #2623 (10-18)

3.4 TileOPs: разделение Softmax по кластеру из 16 CTA и срезы состояния GLA decode (#2632 / #2631)

#2632 для случаев с малым числом строк и длинными строками, таких как lm-head (4×102400, FP16/BF16), добавляет SoftmaxClusterSplitKernel: старая реализация обменивалась (max, sum) для 58 сегментов каждой строки через глобальную память и использовала межгридный барьер; новая реализация раскладывает одну строку по регистрам кластера из 16 CTA, каждый элемент берёт экспоненту только один раз, свёртка выполняется по дереву shuffle с приоритетом max между warp, между CTA и между кластерами, и каждый CTA отправляет в разделяемую память партнёра только одну пару значений. #2631 заменяет схему «один блок на голову» в GLA decode на один срез value на блок, читает состояние только один раз, а сокращение по оси ключей сначала выполняет локальную сумму 16-байтовыми векторами, затем один пакетный обмен.

Источники: tile-ai/TileOPs#2632, #2631 (10-18)

3.5 TileFoundry: разделение плана хранения и плана выдачи, исправление вехи schedule (#243 / #241) (10-18)

#243 оставляет исходные решения о размещении на уровне analysis, удаляет публикацию исполняемых псевдонимов и MemoryMetadata.alias, выделяет только для чтения StoragePlan / IssuePlan, TirBuilder, именование и единый LoweringContext; результаты доступа мемоизируются, пересылка повторно использует их значения, а также исправлена проблема размещения разделяемой памяти, которая резервировалась по логическим байтам при разреженной физической раскладке — 39 файлов, добавлено 2543 строки, удалено 1889 строк. #241 — это исправление вехи на 314 файлов (добавлено 53049 строк, удалено 69314 строк), охватывающее M1–M8: исправлены трафик и псевдонимы Reshard, сравнение экземпляров хранения, каноническая раскладка и локальные проекции, привязка окна и проверка лексической области видимости, а также перенесены два примера Qwen, перегенерированы 31 полная длинная группа и все 64 коротких файла TIR.

Источники: tile-ai/TileFoundry#243, #241 (18.10)

3.6 Адаптеры и ночной конвейер: TileKernels / FlashQLA без пушей; ночные снимки восстановлены до 4 (19.10)

Последний коммит deepseek-ai/TileKernels остановился на слиянии v2.1.0-release от 14.10, QwenLM/FlashQLA — на fix-sm120 от 14.10, в окне мониторинга у обоих пушей не было. Ветка snapshots TileOPs-nightly в окне мониторинга создала 4 снимка: 16.10 11:35, 17.10 04:13, 18.10 06:02, 19.10 05:41 — все в формате «bench: (run )», что указывает на восстановление ежедневного продвижения ночного конвейера бенчмарков.

Источники: TileOPs-nightly snapshots (19.10)


4. Сообщество, руководства и мероприятия

4.1 Документация: согласование китайского руководства по trace, восемь новых операторов внесены на страницу API (#76)

В TileOPs.github.io за окно мониторинга влито 5 изменений, из них #76 приводит китайское руководство по trace в соответствие с английской страницей, следуя изменению trace.run в TileOPs #2619 (слоты теперь обычно выделяются из отслеживаемой сборки и декодируются с записью в HTML только при включённом трейсинге), а также вносит восемь операторов, уже реализованных в основном репозитории, на соответствующие страницы семейств: GemmW4A8FwdOp, HadamardTransformFwdOp, MergeAttentionStatesFwdOp, PagedKVCacheGatherFwdOp, MLAVarlenFwdOp, DSAPagedFwdOp, CausalConv1dFwdOp и CausalConv1dUpdateFwdOp; на странице Transform при этом убрана пометка «ещё не реализовано». В tilelang.github.io есть ещё одно обновление документации, автоматически сгенерированное GitHub Actions.

Источники: tile-ai/TileOPs.github.io#76 (18.10)

4.2 Линейка версий: TileOPs по-прежнему pin TileLang 0.1.12, PR обновления до 0.1.15 закрыт без слияния (#2554)

Последний релиз основного репозитория — по-прежнему v0.1.15 от 30.09, тогда как в pyproject.toml TileOPs до сих пор жёстко указан tilelang==0.1.12. Попытка обновления до 0.1.15 в #2554 закрыта и не слита; в описании PR блокером названы 29 smoke-тестов, проходивших на 0.1.12, но падающих на 0.1.15: 28 из них вызваны тем, что T.Pipelined с динамическим extent оставляет в эпилоге cp.async ptx_wait_group(3 - t * 2), а CUDA codegen сообщает об ошибке Downcast (связано с закрытием значения по умолчанию explicit_unroll в основном репозитории #2859), ещё 1 — тем, что LegalizeSafeMemoryAccess падает при проверке на null в ветке, свёрнутой в False. В этом PR также планировалось добавить на стороне TileOPs обходной путь FIXME(staged-rollout), а затем пересобрать образ runner.

Источники: tile-ai/TileOPs#2554 (18.10)

4.3 Медиа и академическая сфера: Google News / Hacker News / arXiv — ноль новых записей за окно мониторинга (18.10)

13 групп запросов Google News на китайском и английском (TileLang, операторы tilelang, tile-ai, TileOPs, TileFoundry, TileKernels, tilelang Ascend, tilelang отечественные чипы и др.) в окне мониторинга не дали результатов; последняя запись по-прежнему относится к серии репортажей от 02.10 об открытых компонентах Ascend от DeepSeek; запрос tilelang в Hacker News — ноль совпадений; поиск по TileLang и tile-level в arXiv не выявил новых статей за окно мониторинга, ближайшая релевантная запись — TileSight от 24.07.

Источники: поиск TileLang в Google News (18.10)


5. Наблюдения за трендами

5.1 От «дополнения операторов» к «точечной доработке производительности»

В рамках окна из 44 коммитов TileOPs, принятых в основную ветку, подавляющее большинство помечены [Perf], и почти каждый из них явно указывает базовые линии для сравнения: torch-compile, quack, FA3, FlashInfer, а также конкретные формы (serving-b1-h8, serving-b1-h16, lm-head 4×102400, строки RMSNorm от 8192 до 16384). Это говорит о том, что после расширения охвата операторов центр тяжести работы сместился к точечному устранению разрывов в десятые доли процентного пункта на реальных сервисных формах, а не к дальнейшему наращиванию количества операторов.

5.2 Согласование цепочки внимания с производственным форматом DeepSeek-V3.2

DSAPagedFwdOp напрямую реализует постраничное декодирование FP8-латентного кэша с построчным форматом 656 байт, MLAVarlenFwdOp регистрирует бенчмарки по реальным конфигурациям DeepSeek-V3 и Kimi K2, а PagedKVCacheGatherFwdOp и MergeAttentionStatesFwdOp дополняют сборку KV и слияние состояний. Эта цепочка вместе с четырьмя семействами линейного внимания уже покрывает полный путь инференса от предзаполнения длинного контекста до декодирования, причём эталоном служит раскладка хранения vLLM и FlashMLA.

5.3 Ascend: от «работает» к «автоматической векторизации скалярного параллелизма»

Главной линией прошлого выпуска было принятие маршрутизации исполнения PTO; в текущем выпуске #3512 компилирует T.Parallel напрямую в PTO VMI, явно нацеливаясь на Ascend 950 и разделяя с PTOAS ответственность за физические регистры и материализацию масок. Три параллельных небольших исправления (буфер SS, состояние RNG, редукция SimdVF) дополняют семантику хранения и синхронизации на dav-3510. Эта линия движется от «запустить kernel» к «пусть пользователь пишет в скалярном стиле, а компилятор отвечает за векторизацию».

5.4 Компилятор вступает в фазу упрочения корректности

В основном репозитории из 69 PR на рассмотрении 51 относится к tilelang, из них 27 помечены [BugFix] и сосредоточены в ThreadSync (определение записи по адресу, порядок предикатов), Transform (нормализация домена векторизации, WAW между потоками, транзитивные зависимости конвейера) и codegen (глубина ожидания cp_async, константы ROCm FP4, hoisting в Metal). Эти проблемы в основном проявляются лишь при определённых комбинациях и относятся к типичным граничным условиям, возвращающимся после масштабного использования; #243 в TileFoundry, выделяющий объект плана только для чтения, — это структурное упорядочивание в том же направлении.


Приложение: материалы и примечания по проверке

  • Данное окно — трёхдневное окно начала недели, охватывающее период с 10-16 07:00 по 10-19 07:00, не пересекается с предыдущим выпуском (10-15 07:00 — 10-16 07:00).
  • Список репозиториев на уровне организации получен полной выгрузкой через GitHub API: из 29 репозиториев 8 имели push в рамках окна; коммиты в основную ветку различных репозиториев сверены по Atom feed по одному, неосновные ветки (dev в tilelang-metax, snapshots в TileOPs-nightly, ascendc_pto в tilelang-ascend) проверены отдельно.
  • Количество принятых и находящихся на рассмотрении PR взято из достоверного поиска через поисковый интерфейс GitHub (по одному запросу is:merged и is:open), без суммирования по спискам pulls отдельных репозиториев во избежание двойного учёта.
  • Последний коммит ветки по умолчанию ascendc_pto в tilelang-ascend остановился на 10-14, в рамках окна принятий в основную ветку не было; его 5 PR на рассмотрении обновлены 10-16, это продолжение рассмотрения, в новые поступления текущего выпуска не включены.
  • tile-ai/tvm является форком apache/tvm (ветка tilelang_main); в рамках окна обновлены 2 PR на рассмотрении, последний push — 10-07, прямой связи с основной линией TileLang по поставкам нет, только фиксируется без раскрытия.
  • Отсутствие новых новостей проверено голым запросом, подтвердившим работоспособность прокси-канала (тот же запрос возвращает 37 исторических результатов), что подтверждает отсутствие новых публикаций в рамках окна, а не сбой сбора.

Полный перечень источников

l/2623>