Арифметике нужны данные
Weights могут находиться в device memory, затем попадать в кеш или shared memory и регистры. Конкретные уровни зависят от устройства. Capacity, bandwidth и latency — разные величины: большая память не обязательно быстрее, а высокая пропускная способность не устраняет стартовую задержку.
Для C=AB, если прочитать каждый input один раз и записать output один раз, минимальный трафик модели:
гдеb — байт на скаляр. СтарыйCне читается: рассматриваетсяβ=0, не general GEMMсβC. Приtile t без reuse между выходными blocks модель даёт:
Для2×2матриц иb=2получаем минимум24байта. Приtile1 модель считает40байт, приtile2—24. МатематическийCодинаков, трафик различен.
Эксперимент. В оценке большого GEMM увеличьтеtileпри тех жеm,k,n. Сравните ideal и modeled traffic, а не подменяйте один другим. Формула не учитывает загрузку адресов, cache eviction, синхронизацию и двойную буферизацию.
Под капотом. КопированиеweightsсCPUнаGPU — ещё один перенос, не включённый в device-memory traffic. KV-cache, activations и optimizer states также не следует прятать в строке «память весов». На следующей странице учтём эти объекты отдельно.