NVIDIA CCCL 3.1 додає контроль детермінізму з плаваючою комою для обчислень на GPU
Caroline Bishop 17:46, 5 березня 2026
NVIDIA CCCL 3.1 впроваджує три рівні детермінізму для паралельних редукцій, дозволяючи розробникам обирати між продуктивністю та відтворюваністю в обчисленнях на GPU.
NVIDIA випустила засоби контролю детермінізму в CUDA Core Compute Libraries (CCCL) 3.1, вирішуючи постійну проблему в паралельних обчисленнях на GPU: отримання ідентичних результатів від операцій з плаваючою комою при різних запусках і на різному обладнанні.
Оновлення представляє три налаштовувані рівні детермінізму через новий однофазний API CUB, надаючи розробникам явний контроль над компромісом між відтворюваністю та продуктивністю, який турбує застосунки GPU роками.
Чому детермінізм з плаваючою комою важливий
Ось проблема: додавання з плаваючою комою не є строго асоціативним. Через округлення при кінцевій точності (a + b) + c не завжди дорівнює a + (b + c). Коли паралельні потоки комбінують значення в непередбачуваному порядку, ви отримуєте трохи різні результати при кожному запуску. Для багатьох застосунків—фінансового моделювання, наукових симуляцій, обчислень блокчейну, навчання машинного навчання—ця непослідовність створює реальні проблеми.
Новий API дозволяє розробникам точно вказати, скільки відтворюваності їм потрібно, через три режими:
Негарантований детермінізм надає пріоритет чистій швидкості. Він використовує атомарні операції, які виконуються в будь-якому порядку, в якому запускаються потоки, завершуючи редукції в одному запуску ядра. Результати можуть трохи відрізнятися між запусками, але для застосунків, де достатньо приблизних відповідей, виграш у продуктивності є значним—особливо на менших вхідних масивах, де домінують накладні витрати на запуск ядра.
Детермінізм від запуску до запуску (за замовчуванням) гарантує ідентичні результати при використанні однакових вхідних даних, конфігурації ядра та GPU. NVIDIA досягає цього шляхом структурування редукцій як фіксованих ієрархічних дерев замість покладання на атомарні операції. Елементи спочатку комбінуються в межах потоків, потім між warp через shuffle інструкції, потім між блоками з використанням спільної пам'яті, при цьому друге ядро агрегує остаточні результати.
Детермінізм від GPU до GPU забезпечує найсуворішу відтворюваність, гарантуючи ідентичні результати на різних GPU NVIDIA. Реалізація використовує відтворюваний акумулятор з плаваючою комою (RFA), який групує вхідні значення в фіксовані діапазони експонент—за замовчуванням три бінарні розряди—для протидії проблемам неасоціативності, які виникають при додаванні чисел з різними порядками.
Компроміси продуктивності
Тести NVIDIA на GPU H200 визначають вартість відтворюваності. Детермінізм від GPU до GPU збільшує час виконання на 20% до 30% для великих розмірів задач порівняно зі спрощеним режимом. Детермінізм від запуску до запуску знаходиться між двома крайнощами.
Конфігурація RFA з трьома бінарними розрядами пропонує те, що NVIDIA називає "оптимальним за замовчуванням", балансуючи точність і швидкість. Більше бінарних розрядів покращують числову точність, але додають проміжні підсумовування, які уповільнюють виконання.
Деталі реалізації
Розробники отримують доступ до нових засобів контролю через cuda::execution::require(), який конструює об'єкт середовища виконання, переданий функціям редукції. Синтаксис простий—встановіть детермінізм на not_guaranteed, run_to_run або gpu_to_gpu залежно від вимог.
Функція працює лише з однофазним API CUB; старіший двофазний API не приймає середовища виконання.
Ширші наслідки
Міжплатформна відтворюваність з плаваючою комою є відомою проблемою у високопродуктивних обчисленнях і застосунках блокчейну, де різні компілятори, прапори оптимізації та апаратні архітектури можуть виробляти розбіжні результати з математично ідентичних операцій. Підхід NVIDIA до явного викладення детермінізму як налаштовуваного параметра замість приховування деталей реалізації представляє прагматичне рішення.
Компанія планує розширити засоби контролю детермінізму за межі редукцій до додаткових паралельних примітивів. Розробники можуть відстежувати прогрес і запитувати конкретні алгоритми через репозиторій GitHub NVIDIA, де відкрите питання відстежує розширену дорожню карту детермінізму.
Джерело зображення: Shutterstock- nvidia
- обчислення на gpu
- cccl
- детермінізм з плаваючою комою
- cuda



