目录
torch.cuda.current_blas_handle()
torch.cuda.current_device()
torch.cuda.current_stream(device=None)
torch.cuda.default_stream(device=None)
class torch.cuda.device(device)
torch.cuda.device_count()
class torch.cuda.device_of(obj)
torch.cuda.empty_cache()
torch.cuda.get_device_capability(device=None)
torch.cuda.get_device_name(device=None)
torch.cuda.init()
torch.cuda.ipc_collect()
torch.cuda.is_available()
torch.cuda.max_memory_allocated(device=None)
torch.cuda.max_memory_cached(device=None)
torch.cuda.memory_allocated(device=None)
torch.cuda.memory_cached(device=None)
torch.cuda.reset_max_memory_allocated(device=None)
torch.cuda.reset_max_memory_cached(device=None)
torch.cuda.set_device(device)
torch.cuda.stream(stream)
torch.cuda.synchronize(device=None)
Random Number Generator
torch.cuda.get_rng_state(device='cuda')
torch.cuda.get_rng_state_all()
torch.cuda.set_rng_state(new_state, device='cuda')
torch.cuda.set_rng_state_all(new_states)
torch.cuda.manual_seed(seed)
torch.cuda.seed()
torch.cuda.seed_all()
torch.cuda.initial_seed()
Communication collectives
torch.cuda.comm.broadcast(tensor, devices)
torch.cuda.comm.broadcast_coalesced(tensors, devices, buffer_size=10485760)
torch.cuda.comm.reduce_add(inputs, destination=None)
torch.cuda.comm.scatter(tensor, devices, chunk_sizes=None, dim=0, streams=None)
torch.cuda.comm.gather(tensors, dim=0, destination=None)
Streams and events
class torch.cuda.Stream
query()
record_event(event=None)
synchronize()
wait_event(event)
wait_stream(stream)
class torch.cuda.Event
elapsed_time(end_event)
ipc_handle()
query()
record(stream=None)
synchronize()
wait(stream=None)
Memory management
torch.cuda.empty_cache()
torch.cuda.memory_allocated(device=None)
torch.cuda.max_memory_allocated(device=None)
torch.cuda.reset_max_memory_allocated(device=None)
torch.cuda.memory_cached(device=None)
torch.cuda.max_memory_cached(device=None)
torch.cuda.reset_max_memory_cached(device=None)
NVIDIA Tools Extension (NVTX)
torch.cuda.nvtx.mark(msg)
torch.cuda.nvtx.range_push(msg)
torch.cuda.nvtx.range_pop()
这个包增加了对CUDA张量类型的支持,它实现了与CPU张量相同的功能,但是它们利用gpu进行计算。它是惰性初始化的,所以你总是可以导入它,并使用is_available()来确定您的系统是否支持CUDA。CUDA语义提供了更多关于使用CUDA的细节。
返回指向当前cuBLAS句柄的cublasHandle_t指针。
返回当前选定设备的索引。
返回给定设备当前选定的流。
参数:
torch.cuda.
default_stream
(device=None)返回给定设备的默认流。
参数:
torch.cuda.
device
(device)更改所选设备的上下文管理器。
参数:
torch.cuda.
device_count
()返回可用的gpu数量。
torch.cuda.
device_of
(obj)将当前设备更改为给定对象的设备的上下文管理器。您可以同时使用张量和存储作为参数。如果一个给定的对象没有分配在GPU上,这是一个no-op。
参数:
obj (Tensor or Storage) – 在选定设备上分配的对象。
torch.cuda.
empty_cache
()释放缓存分配器当前持有的所有未占用的缓存内存,以便这些内存可以在其他GPU应用程序中使用,并在nvidia-smi中可见。
注意
empty_cache()不会增加PyTorch可用的GPU内存。有关GPU内存管理的更多细节,请参见内存管理。
torch.cuda.
get_device_capability
(device=None)获取设备的cuda功能。
参数:
返回值:
tuple(int, int)
torch.cuda.
get_device_name
(device=None)获取设备的名称。
参数:
torch.cuda.
init
()初始化PyTorch的CUDA状态。如果您通过PyTorch的C API与它进行交互,可能需要显式地调用这个函数,因为在初始化之前,CUDA功能的Python绑定不会这样做。普通用户不应该需要这样做,因为PyTorch的所有CUDA方法都会根据需要自动初始化CUDA状态。如果CUDA状态已经初始化,则不执行任何操作。
torch.cuda.
ipc_collect
()Force在CUDA IPC释放GPU内存后收集GPU内存。
注意:
检查是否有任何已发送的CUDA张量可以从内存中清除。如果没有活动计数器,则强制关闭用于引用计数的共享内存文件。当生成器进程停止主动发送张量并希望释放未使用的内存时,此函数非常有用。
torch.cuda.
is_available
()返回一个bool,指示CUDA当前是否可用。
torch.cuda.
max_memory_allocated
(device=None)返回给定设备张量占用的最大GPU内存(以字节为单位)。默认情况下,这将返回自该程序开始以来分配的内存峰值。reset_max_memory_assigned()可用于重置跟踪此指标的起始点。例如,这两个函数可以测量训练循环中每个迭代的分配内存使用量峰值。
参数:
注意
有关GPU内存管理的更多细节,请参见内存管理。
torch.cuda.
max_memory_cached
(device=None)返回缓存分配器为给定设备管理的最大GPU内存(以字节为单位)。默认情况下,这将返回自该程序开始以来的峰值缓存内存。reset_max_memory_cached()可用于重置跟踪此指标的起始点。例如,这两个函数可以测量训练循环中每个迭代的峰值缓存内存量。
参数:
注意
有关GPU内存管理的更多细节,请参见内存管理。
torch.cuda.
memory_allocated
(device=None)返回给定设备的张量占用的当前GPU内存(以字节为单位)。
参数:
注意
这可能比nvidia-smi中显示的要少,因为缓存分配器可以保存一些未使用的内存,并且需要在GPU上创建一些上下文。有关GPU内存管理的更多细节,请参见内存管理。
torch.cuda.
memory_cached
(device=None)返回缓存分配器为给定设备管理的当前GPU内存(以字节为单位)。
参数:
注意:
有关GPU内存管理的更多细节,请参见内存管理。
torch.cuda.
reset_max_memory_allocated
(device=None)重置跟踪给定设备的张量占用的最大GPU内存的起始点。有关详细信息,请参见max_memory_assigned()。
参数:
注意
有关GPU内存管理的更多细节,请参见内存管理。
torch.cuda.
reset_max_memory_cached
(device=None)重置跟踪由给定设备的缓存分配器管理的最大GPU内存的起始点。有关详细信息,请参见max_memory_cached()。
参数:
注意
有关GPU内存管理的更多细节,请参见内存管理。
torch.cuda.
set_device
(device)设置当前设备。这个功能的使用是不鼓励有利于设备。在大多数情况下,最好使用CUDA_VISIBLE_DEVICES环境变量。
参数:
torch.cuda.
stream
(stream)选择给定流的上下文管理器。在其上下文中排队的所有CUDA内核都将在选定的流上排队。
参数:
stream (Stream) – selected stream. This manager is a no-op if it’s None
.
注意
流是种每设备。如果所选的流不在当前设备上,此函数还将更改当前设备以匹配流。
torch.cuda.
synchronize
(device=None)等待CUDA设备上所有流中的所有内核完成。
参数:
device (torch.device or int, optional) – 用于同步的设备。如果设备为None(默认),则使用current_device()提供的当前设备。
torch.cuda.
get_rng_state
(device='cuda')以字节张量的形式返回指定GPU的随机数生成器状态。
参数:
device (torch.device or int, optional) – 返回的RNG状态的设备。默认值:“cuda”(即torch.device('cuda'),当前cuda设备)。
警告
这个函数急切地初始化CUDA。
torch.cuda.
get_rng_state_all
()返回一个字节张量元组,表示所有设备的随机数状态。
torch.cuda.
set_rng_state
(new_state, device='cuda')设置指定GPU的随机数生成器状态。
参数:
torch.cuda.
set_rng_state_all
(new_states)设置所有设备的随机数生成器状态。
参数:
torch.cuda.
manual_seed
(seed)设置为当前GPU生成随机数的种子。如果CUDA不可用,调用这个函数是安全的;在这种情况下,它将被静静地忽略。
参数:
警告
如果您使用的是多gpu模型,这个函数不足以获得确定性。要为所有gpu播种,请使用manual_seed_all()。
torch.cuda.
manual_seed_all
(seed)[source]
设置在所有gpu上生成随机数的种子。如果CUDA不可用,调用这个函数是安全的;在这种情况下,它将被静静地忽略。
参数
seed (int) – The desired seed.
torch.cuda.
seed
()将生成随机数的种子设置为当前GPU的随机数。如果CUDA不可用,调用这个函数是安全的;在这种情况下,它将被静静地忽略。
警告
如果你使用的是多GPU模型,这个函数只会在一个GPU上初始化种子。要初始化所有gpu,请使用seed_all()。
torch.cuda.
seed_all
()将生成随机数的种子设置为所有gpu上的随机数。如果CUDA不可用,调用这个函数是安全的;在这种情况下,它将被静静地忽略。
torch.cuda.
initial_seed
()返回当前GPU的当前随机种子。
警告
torch.cuda.comm.
broadcast
(tensor, devices)参数:
返回值:
torch.cuda.comm.
broadcast_coalesced
(tensors, devices, buffer_size=10485760)向指定的gpu广播序列张量。首先将小张量合并到缓冲区中,以减少同步的数量。
参数:
返回值:
torch.cuda.comm.
reduce_add
(inputs, destination=None)从多个gpu求和张量。所有输入都应该有匹配的形状。
参数:
返回值:
torch.cuda.comm.
scatter
(tensor, devices, chunk_sizes=None, dim=0, streams=None)在多个gpu上散射张量。
参数:
返回值:
torch.cuda.comm.
gather
(tensors, dim=0, destination=None)从多个gpu收集张量。不同于dim的张量大小必须匹配。
参数:
返回值:
torch.cuda.
Stream
包装一个CUDA流。CUDA流是一个线性执行序列,属于一个特定的设备,独立于其他流。详见CUDA语义。
参数:
query
()检查提交的所有工作是否已经完成。
返回值:
record_event
(event=None)记录一个事件。
参数:
返回值:
synchronize
()等待流中的所有内核完成。
注意
这是一个cudaStreamSynchronize()的包装器:有关更多信息,请参见“CUDA文档”_。
wait_event
(event)让所有提交到流的未来工作等待一个事件。
参数:
注意:
wait_stream
(stream)与另一个流同步。所有提交到此流的未来工作都将等待,直到调用时提交到给定流的所有内核都完成。
参数:
注意:
torch.cuda.
Event
包装CUDA事件。CUDA事件是同步标记,可以用来监控设备的进程,准确地测量时间,并同步CUDA流。当事件首次被记录或导出到另一个进程时,底层的CUDA事件被惰性地初始化。创建后,只有同一设备上的流才能记录事件。然而,任何设备上的流都可以等待事件。
参数
elapsed_time
(end_event)返回事件被记录后和end_event被记录前经过的时间(以毫秒为单位)。
classmethod from_ipc_handle
(device, handle)[source]
从给定设备上的IPC句柄重构事件。
ipc_handle
()返回此事件的IPC句柄。如果尚未记录,事件将使用当前设备。
query
()检查事件当前捕获的所有工作是否已完成。
返回值:
record
(stream=None)在给定的流中记录事件。如果没有指定流,则使用torch.cuda.current_stream()。流的设备必须匹配事件的设备。
synchronize
()等待事件完成。直到完成此事件中当前捕获的所有工作。这将阻止CPU线程在事件完成之前继续执行。
注意
这是一个cudaEventSynchronize()的包装器:有关更多信息,请参见“CUDA documentation”_。
wait
(stream=None)使提交给给定流的所有未来工作等待此事件。如果没有指定流,那么使用torch.cuda.current_stream()。
torch.cuda.
empty_cache
()释放缓存分配器当前持有的所有未占用的缓存内存,以便这些内存可以在其他GPU应用程序中使用,并在nvidia-smi中可见。
注意
empty_cache()不会增加PyTorch可用的GPU内存。有关GPU内存管理的更多细节,请参见内存管理。
torch.cuda.
memory_allocated
(device=None)返回给定设备的张量占用的当前GPU内存(以字节为单位)。
参数:
current_device()
, if device
is None
(default).注意
这可能比nvidia-smi中显示的要少,因为缓存分配器可以保存一些未使用的内存,并且需要在GPU上创建一些上下文。有关GPU内存管理的更多细节,请参见内存管理。
torch.cuda.
max_memory_allocated
(device=None)返回给定设备张量占用的最大GPU内存(以字节为单位)。默认情况下,这将返回自该程序开始以来分配的内存峰值。reset_max_memory_assigned()可用于重置跟踪此指标的起始点。例如,这两个函数可以测量训练循环中每个迭代的分配内存使用量峰值。
参数:
注意
有关GPU内存管理的更多细节,请参见内存管理。
torch.cuda.
reset_max_memory_allocated
(device=None)重置跟踪给定设备的张量占用的最大GPU内存的起始点。有关详细信息,请参见max_memory_assigned()。
参数
注意
有关GPU内存管理的更多细节,请参见内存管理。
torch.cuda.
memory_cached
(device=None)返回缓存分配器为给定设备管理的当前GPU内存(以字节为单位)。
参数:
注意:
torch.cuda.
max_memory_cached
(device=None)返回缓存分配器为给定设备管理的最大GPU内存(以字节为单位)。默认情况下,这将返回自该程序开始以来的峰值缓存内存。reset_max_memory_cached()可用于重置跟踪此指标的起始点。例如,这两个函数可以测量训练循环中每个迭代的峰值缓存内存量。
参数:
注意:
torch.cuda.
reset_max_memory_cached
(device=None)重置跟踪由给定设备的缓存分配器管理的最大GPU内存的起始点。有关详细信息,请参见max_memory_cached()。
参数:
注意
有关GPU内存管理的更多细节,请参见内存管理。
torch.cuda.nvtx.
mark
(msg)描述某一时刻发生的瞬时事件。
参数:
torch.cuda.nvtx.
range_push
(msg)将范围推到嵌套范围跨度的堆栈上。返回启动的范围的从零开始的深度。
参数:
torch.cuda.nvtx.
range_pop
()从嵌套范围范围堆栈中弹出一个范围。返回结束的范围的从零开始的深度。