CUDA 封装器
模块: polygraphy.cuda
- class MemcpyKind[source]
基类:
object
枚举不同类型的复制操作。
- HostToHost = c_int(0)
从主机内存复制到主机内存
- HostToDevice = c_int(1)
从主机内存复制到设备内存
- DeviceToHost = c_int(2)
从设备内存复制到主机内存
- DeviceToDevice = c_int(3)
从设备内存复制到设备内存
- class Cuda[source]
基类:
object
注意:不要手动构造此类。请使用
wrapper()
函数来获取全局封装器。封装器,用于公开底层 CUDA 功能。
- malloc(nbytes)[source]
在 GPU 上分配内存。
- 参数:
nbytes (int) – 要分配的字节数。
- 返回:
已分配区域的内存地址,即设备指针。
- 返回类型:
int
- 抛出:
PolygraphyException – 如果在分配期间遇到错误。
- free(ptr)[source]
释放 GPU 上分配的内存。
- 参数:
ptr (int) – 内存地址,即设备指针。
- 抛出:
PolygraphyException – 如果在释放期间遇到错误。
- memcpy(dst, src, nbytes, kind, stream_ptr=None)[source]
在主机和设备内存之间复制数据。
- 参数:
dst (int) – 目标内存地址,即指针。
src (int) – 源内存地址,即指针。
nbytes (int) – 要复制的字节数。
kind (MemcpyKind) – 要执行的复制类型。
stream_ptr (int) – CUDA 流的内存地址,即指针。如果未提供,则执行同步复制。
- 抛出:
PolygraphyException – 如果在复制期间遇到错误。
- class DeviceView(ptr, shape, dtype)[source]
基类:
object
GPU 内存区域的只读视图。
- 参数:
ptr (int) – 指向内存区域的指针。
shape (Tuple[int]) – 区域的形状。
dtype (DataType) – 区域的数据类型。
- ptr
底层 GPU 内存的内存地址
- 类型:
int
- shape
设备缓冲区的形状
- 类型:
Tuple[int]
- property nbytes
内存区域中的字节数。
- class DeviceArray(shape=None, dtype=None)[source]
基类:
DeviceView
GPU 上的数组。
- 参数:
shape (Tuple[int]) – 缓冲区的初始形状。
dtype (DataType) – 缓冲区的数据类型。
- copy_to(host_buffer, stream=None)
从此设备缓冲区复制到提供的主机缓冲区。
- 参数:
host_buffer (Union[numpy.ndarray, torch.Tensor]) – 要复制到的主机缓冲区。缓冲区在内存中必须是连续的(参见 np.ascontiguousarray 或 torch.Tensor.contiguous),并且足够大以容纳设备缓冲区。
stream (Stream) – Stream 实例。如果未提供流,则执行同步复制。
- 返回:
主机缓冲区
- 返回类型:
np.ndarray
- property dtype
- property nbytes
内存区域中的字节数。
- numpy()
创建一个新的 NumPy 数组,其中包含此设备缓冲区的内容。
- 返回:
新创建的 NumPy 数组。
- 返回类型:
np.ndarray
- ptr
底层 GPU 内存的内存地址
- 类型:
int
- shape
设备缓冲区的形状
- 类型:
Tuple[int]
- static raw(shape=None)[source]
创建指定形状的无类型设备数组。
- 参数:
shape (Tuple[int]) – 缓冲区的初始形状,以字节为单位。例如,形状为
(4, 4)
将分配一个 16 字节的数组。- 返回:
原始设备数组。
- 返回类型:
- resize(shape)[source]
调整数组大小或将其重塑为指定的形状。
如果已分配的内存区域足够大,则不会执行重新分配。
- 参数:
shape (Tuple[int]) – 新形状。
- 返回:
self
- 返回类型:
- copy_from(host_buffer, stream=None)[source]
从提供的主机缓冲区复制到此设备缓冲区。
- 参数:
host_buffer (Union[numpy.ndarray, torch.Tensor]) – 要从中复制的主机缓冲区。缓冲区在内存中必须是连续的(参见 np.ascontiguousarray 或 torch.Tensor.contiguous),并且不大于此设备缓冲区。
stream (Stream) – Stream 实例。如果未提供流,则执行同步复制。
- 返回:
self
- 返回类型: