CUDAGraph#
- class torch.cuda.CUDAGraph(keep_graph=False)[source]#
CUDA 图的包装器。
- 参数
keep_graph (bool, optional) – 如果
keep_graph=False,则 cudaGraphExec_t 将在capture_end结束时实例化在 GPU 上,并且底层的 cudaGraph_t 将被销毁。希望在实例化之前查询或以其他方式修改底层 cudaGraph_t 的用户可以在capture_end之后设置keep_graph=True并通过raw_cuda_graph访问它。请注意,在这种情况下,cudaGraphExec_t 不会在capture_end结束时实例化。相反,它将通过显式调用instantiate来实例化,或者在首次调用replay时自动实例化(如果尚未调用instantiate)。建议在手动调用replay之前手动调用instantiate,以防止首次调用replay时延迟增加。允许在首次调用instantiate后修改原始 cudaGraph_t,但用户必须再次手动调用instantiate以确保实例化的图具有这些更改。PyTorch 无法跟踪这些更改。- 返回类型
自我
警告
此 API 处于 Beta 版,未来版本中可能会更改。
- capture_begin(pool=None, capture_error_mode='global')[source]#
在当前流上开始捕获 CUDA 工作。
通常,您不应自行调用
capture_begin。请使用graph或make_graphed_callables(),它们会在内部调用capture_begin。- 参数
pool (optional) – Token(由
graph_pool_handle()或other_Graph_instance.pool()返回)表示此图可能与指示的池共享内存。请参阅 图内存管理。capture_error_mode (str, optional) – 指定捕获流的 cudaStreamCaptureMode。可以是“global”、“thread_local”或“relaxed”。在 cuda 图捕获期间,某些操作(如 cudaMalloc)可能不安全。“global”会报错其他线程的操作,“thread_local”只报错当前线程的操作,“relaxed”不会报错这些操作。除非您熟悉 cudaStreamCaptureMode,否则请勿更改此设置。
- capture_end()[source]#
结束当前流上的 CUDA 图捕获。
在
capture_end之后,可以对该实例调用replay。通常,您不应自行调用
capture_end。请使用graph或make_graphed_callables(),它们会在内部调用capture_end。
- debug_dump(debug_path)[source]#
- 参数
debug_path (required) – 要将图转储到的路径。
如果通过 CUDAGraph.enable_debug_mode() 启用了调试,则调用调试函数将图转储到指定路径。
- instantiate()[source]#
实例化 CUDA 图。如果
keep_graph=False,则由capture_end调用;如果keep_graph=True且尚未显式调用instantiate,则由replay调用。不会销毁raw_cuda_graph返回的 cudaGraph_t。
- pool()[source]#
返回一个不透明的 token,表示此图的内存池的 ID。
此 ID 可选择性地传递给另一个图的
capture_begin,这会提示另一个图可能与同一内存池共享。- 返回类型
_POOL_HANDLE
- raw_cuda_graph()[source]#
返回底层的 cudaGraph_t。
keep_graph必须为 True。有关如何操作此对象的 API,请参阅: Graph Managmement 和 cuda-python Graph Management 绑定
- 返回类型
- raw_cuda_graph_exec()[source]#
返回底层的 cudaGraphExec_t。如果
keep_graph为 True,则必须已调用instantiate;如果keep_graph为 False,则必须已调用capture_end。如果您在调用raw_cuda_graph_exec()后调用instantiate(),则之前返回的 cudaGraphExec_t 将被销毁。您有责任不要在此对象被销毁后使用它。有关如何操作此对象的 API,请参阅: Graph Execution 和 cuda-python Graph Execution 绑定
- 返回类型