Граф
-
class torch.accelerator.Graph(keep_graph=False, *, pool=None, capture_error_mode='default')[источник] -
Обёртка вокруг графа ускорителя, поддерживающая захват и воспроизведение.
Граф захватывает последовательность операций и их зависимости, позволяя эффективно воспроизводить их с меньшими накладными расходами. Этот класс можно использовать как менеджер контекста для автоматического захвата операций в текущем потоке.
- Параметры:
-
-
keep_graph (bool, необязательный) – Если
False, базовый граф уничтожается, а исполняемый граф создаётся на GPU в концеcapture_end. ЕслиTrue, базовый граф сохраняется послеcapture_end. В этом случае исполняемый граф не создаётся автоматически; его необходимо явно создать, вызвавinstantiate, иначе он будет создан при первом вызовеreplay. По умолчанию —False. -
pool (tuple[int, int], необязательный) – Идентификатор пула памяти для этого графа. Несколько графов могут совместно использовать один пул, если передать один и тот же идентификатор, что позволяет снизить накладные расходы на память. По умолчанию —
None. -
capture_error_mode (Literal["default", "global", "thread_local", "relaxed"], необязательный) – Определяет поведение захвата графа. Точная семантика зависит от бэкенда.
"default": поведение захвата по умолчанию, определяемое бэкендом."global": потенциально небезопасные вызовы API запрещены. Могут возникать ошибки, если захват в текущем потоке влияет на другие потоки."thread_local": потенциально небезопасные вызовы API запрещены. Ошибки возникают только в том случае, если захват в текущем потоке влияет на сам текущий поток."relaxed": текущему потоку разрешено выполнять потенциально небезопасные вызовы API, за исключением вызовов, которые непосредственно конфликтуют с захватом потока. Значение по умолчанию:"default".
-
keep_graph (bool, необязательный) – Если
- Тип возвращаемого значения:
-
Self
Пример:
>>> x = torch.zeros([2000], device=0) >>> stream = torch.Stream() >>> graph = torch.accelerator.Graph() >>> with stream, graph: ... x += 1 >>> graph.replay()
-
capture_begin()[источник] -
Начать захват графа в текущем потоке.
Все операции в текущем потоке после этого вызова будут записываться в граф до вызова
capture_endс использованием пула памяти и режима ошибок захвата, заданных при создании.
-
capture_end()[источник] -
Завершить захват графа в текущем потоке текущего устройства.
После этого вызова граф можно воспроизвести с помощью
replay.
-
debug_dump(path)[источник] -
Сохранить захваченный граф в файл для отладки, если режим отладки включён с помощью
enable_debug_mode.- Параметры:
-
path (str) – Путь, по которому следует сохранить граф.
- Пример::
-
>>> s = torch.Stream() >>> g = torch.accelerator.Graph() >>> g.enable_debug_mode()
>>> with s, g: >>> # ... operations ...
>>> # Dump captured graph to a file "graph_dump.dot" >>> g.debug_dump("graph_dump.dot")
-
enable_debug_mode()[источник] -
Включить режим отладки для
debug_dump.
-
instantiate()[источник] -
Создать экземпляр базового графа. Вызывается методом
capture_end, еслиkeep_graph=False, или методомreplay, еслиkeep_graph=Trueиinstantiateещё не был вызван явно.
-
pool()[источник] -
Вернуть непрозрачный токен, представляющий идентификатор пула памяти этого графа.
Этот идентификатор можно передать методу
capture_beginдругого графа, чтобы подсказать, что другой граф может использовать тот же пул памяти.- Пример::
-
>>> g1 = torch.accelerator.Graph() >>> g1.capture_begin() >>> # ... operations ... >>> g1.capture_end()
>>> # Share g1's memory pool with a new graph >>> pool_id = g1.pool() >>> g2 = torch.accelerator.Graph(pool=pool_id)
-
replay()[источник] -
Воспроизвести работу, захваченную этим графом.
-
reset()[источник] -
Удалить граф, хранящийся в этом экземпляре.
После этого вызова граф можно захватить заново. Задайте
graph_poolилиcapture_error_modeзаранее, чтобы использовать другие параметры при следующем захвате.
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.accelerator.Graph.html