torch.cuda

此包提供了对CUDA张量类型的支持。

它与CPU张量实现相同的功能,但使用GPU来进行计算。

它是延迟初始化的,所以你可以随时导入它,并使用is_available() 来判断你的系统是否支持 CUDA。

CUDA语义 提供了更多关于如何使用 CUDA 的详细信息。

StreamContext

用于选择指定流的上下文管理器。

can_device_access_peer

检查两个设备之间是否可以互相访问。

current_blas_handle

返回当前 cuBLAS 处理句柄的 cublasHandle_t 指针

current_device

返回当前选定设备的索引。

current_stream

返回给定设备当前选择的 Stream

cudart

获取CUDA运行时API模块。

default_stream

返回给定设备的默认 Stream

torch.cuda.device

用于更改选定设备的上下文管理器。

device_count

返回可用GPU的数量。

device_of

一个上下文管理器,用于将当前设备切换为给定对象的设备。

get_arch_list

返回此库编译所针对的CUDA架构列表。

get_device_capability

获取设备的 CUDA 能力。

get_device_name

获取设备名称。

get_device_properties

获取设备的属性。

get_gencode_flags

返回此库编译时所使用的NVCC gencode标志。

get_sync_debug_mode

返回当前cuda同步操作的调试模式值。

init

初始化 PyTorch 的 CUDA 状态。

ipc_collect

在CUDA IPC释放后,强制收集GPU内存。

is_available

返回一个布尔值,指示当前是否可用 CUDA。

is_initialized

返回 PyTorch 的 CUDA 是否已经初始化。

memory_usage

返回过去采样期间内,全球(设备)内存被读取或写入时间的百分比,根据nvidia-smi显示的数据。

set_device

设置当前设备。

set_stream

设置当前流。这是一个用于设置流的包装 API。

set_sync_debug_mode

设置CUDA同步操作的调试模式。

torch.cuda.stream

使用上下文管理器 StreamContext 来选择指定的流。

synchronize

等待CUDA设备上所有流中的所有内核完成执行。

utilization

返回过去采样期间内,一个或多个内核在 GPU 上执行所占用的时间百分比,由 nvidia-smi 给出。

temperature 由于链接中的字符需要分开以符合中文书写习惯,但这里保持原样返回,因为原文格式可能有特殊含义。如果只需要自然通顺的文本描述,则可以改为: temperature(详情见 文档

返回 GPU 传感器的平均温度(摄氏度)。

power_draw

返回GPU传感器的平均功耗值,单位为毫瓦(mW)

clock_rate

返回过去采样期内GPU SM的时钟速度(以赫兹 Hz 为单位),数据来源于 nvidia-smi

OutOfMemoryError

内存不足时设备抛出的异常

随机数生成器

get_rng_state

将指定GPU的随机数生成器状态以ByteTensor形式返回。

get_rng_state_all

返回一个包含所有设备随机数状态的ByteTensor列表。

set_rng_state

设置指定GPU上的随机数生成器状态。

set_rng_state_all

为所有设备设置随机数生成器的状态。

manual_seed

为当前GPU生成随机数设置种子。

manual_seed_all

为所有GPU上的随机数生成设置种子。

torch.cuda.seed

将生成随机数的种子设置为当前 GPU 的一个随机值。

seed_all

将所有GPU上生成随机数的种子设置为一个随机值。

initial_seed

返回当前GPU的随机种子。

通信集合体

comm.broadcast

将张量广播到指定的GPU设备上。

comm.broadcast_coalesced

将张量序列传输到指定的GPU。

comm.reduce_add

对来自多个GPU的张量进行求和。

comm.scatter

将张量分布在多个GPU上。

comm.gather

从多个GPU设备收集张量。

流与事件

Stream

CUDA流的封装类。

torch.cuda.ExternalStream

CUDA流的外部分配封装器。

Event

CUDA事件的封装类。

图形(测试版)

is_current_stream_capturing

如果当前的 CUDA 流正在执行 CUDA 图捕获,则返回 True,否则返回 False。

graph_pool_handle

返回一个代表图内存池ID的不透明令牌。

CUDAGraph

CUDA图的封装类。

graph

这是一个上下文管理器,它将CUDA工作捕获到一个torch.cuda.CUDAGraph对象中,以便后续重播。

make_graphed_callables

接受可调用对象(如函数或nn.Module)并返回其图形表示版本。

内存管理

empty_cache

释放当前由缓存分配器持有的所有未使用的缓存内存,使这些内存可供其他 GPU 应用程序使用,并在 nvidia-smi 中显示。

list_gpu_processes

返回给定设备上正在运行的进程及其 GPU 内存使用的易读输出。

mem_get_info

使用 cudaMemGetInfo 获取并返回给定设备的全局空闲和总 GPU 内存。

memory_stats

为指定设备返回CUDA内存分配器的统计信息字典。

memory_summary

返回给定设备当前内存分配器统计信息的易读输出。

memory_snapshot

返回所有设备上CUDA内存分配器状态的快照。

memory_allocated

以字节为单位返回给定设备上张量当前占用的 GPU 内存。

max_memory_allocated

以字节为单位返回给定设备上张量占用的最大 GPU 内存。

reset_max_memory_allocated

重置给定设备上最大GPU内存占用的起始点。

memory_reserved

以字节为单位返回缓存分配器管理的给定设备上的当前GPU内存。

max_memory_reserved

返回给定设备上缓存分配器管理的最大GPU内存(以字节为单位)。

set_per_process_memory_fraction

为一个进程设定内存分数。

memory_cached

已弃用;请参见memory_reserved()

max_memory_cached

已弃用;请参见max_memory_reserved()

reset_max_memory_cached

重置给定设备上缓存分配器管理的最大 GPU 内存跟踪的起点。

reset_peak_memory_stats

重置 CUDA 内存分配器跟踪的“峰值”统计数据。

caching_allocator_alloc

使用CUDA内存分配器进行内存分配。

caching_allocator_delete

删除使用CUDA内存分配器分配的内存。

get_allocator_backend

返回一个字符串,描述由 PYTORCH_CUDA_ALLOC_CONF 设置的当前分配器后端。

CUDAPluggableAllocator

CUDA 内存分配器从 so 文件中加载。

change_current_allocator

将当前使用的内存分配器更换为提供的那个。

MemPool

MemPool 表示缓存分配器中的一个内存池。

MemPoolContext

MemPoolContext 保存当前活跃的池,并存放之前的池。

classtorch.cuda.use_mem_pool(pool, device=None)[源代码]

一个上下文管理器,将分配任务路由到指定的池中。

参数

NVIDIA工具扩展(NVTX)

nvt.mark

描述一个在某个时刻发生的瞬间事件。

nvt xrange_push 改为更自然的版本: torch.cuda.nvtx.range_push

将一个范围压入嵌套范围栈。

nvt_range_pop 注:此处进行了简化处理,去掉了重复的"torch.cuda."部分以使链接更简洁。如果需要保持原始格式不变,请告知。

从嵌套范围跨度的栈中弹出一个范围。

nvt.range

这是一个上下文管理器和装饰器,它在作用域开始时启动一个NVTX范围,并在作用域结束时停止该范围。

Jiterator(测试版)

jiterator._create_jit_fn

为一个元素级操作创建一个由jiterator生成的CUDA内核。

jiterator._create_multi_output_jit_fn

为一个元素级操作创建一个由jiterator生成的支持返回一个或多个输出的CUDA内核。

TunableOp

某些操作可以使用不同的库或技术来实现。例如,GEMM 可以分别在 CUDA 和 ROCm 上使用 cublas/cublasLt 库或 hipblas/hipblasLt 库进行实现。如何确定哪种实现方式最快并选择它呢?这就是 TunableOp 的作用所在。某些操作已作为可调用算子采用多种策略来实现。运行时,所有策略都会被评估,并且会选择最快的策略用于后续的所有操作。

参见文档以了解更多使用方法。

流净化器(原型版)

CUDA Sanitizer 是一个用于检测 PyTorch 中流之间同步错误的原型工具。关于如何使用它,请参阅文档

本页目录