nndeploy.device

class nndeploy.device.BufferDesc(*args, **kwargs)[源代码]

基类:BufferDesc

__init__(*args, **kwargs)[源代码]

Constructs a BufferDesc object.

The constructor can be called in the following ways: 1. BufferDesc(): Constructs an empty BufferDesc. 2. BufferDesc(size): Constructs a BufferDesc with size. 3. BufferDesc(size_ptr, size): Constructs a BufferDesc from a size_t array of size. 4. BufferDesc(size_vector): Constructs a BufferDesc from a base::SizeVector. 5. BufferDesc(size, int_vector): Constructs a BufferDesc from a size and a base::IntVector. 6. BufferDesc(size_vector, int_vector): Constructs a BufferDesc from a base::SizeVector and a base::IntVector. 7. BufferDesc(size_ptr, size, int_vector): Constructs a BufferDesc from a size_t array of size and a base::IntVector.

get_size(self: nndeploy._nndeploy_internal.device.BufferDesc) int[源代码]
get_size_vector(self: nndeploy._nndeploy_internal.device.BufferDesc) list[int][源代码]
get_real_size(self: nndeploy._nndeploy_internal.device.BufferDesc) int[源代码]
get_real_size_vector(self: nndeploy._nndeploy_internal.device.BufferDesc) list[int][源代码]
get_config(self: nndeploy._nndeploy_internal.device.BufferDesc) list[int][源代码]
is_same_config(self: nndeploy._nndeploy_internal.device.BufferDesc, arg0: nndeploy._nndeploy_internal.device.BufferDesc) bool[源代码]
is_same_dim(self: nndeploy._nndeploy_internal.device.BufferDesc, arg0: nndeploy._nndeploy_internal.device.BufferDesc) bool[源代码]
is_1d(self: nndeploy._nndeploy_internal.device.BufferDesc) bool[源代码]
print(self: nndeploy._nndeploy_internal.device.BufferDesc, arg0: std::ostream) None[源代码]
just_modify(*args, **kwargs)[源代码]

Overloaded function.

  1. just_modify(self: nndeploy._nndeploy_internal.device.BufferDesc, arg0: int) -> bool

  2. just_modify(self: nndeploy._nndeploy_internal.device.BufferDesc, arg0: list[int]) -> bool

  3. just_modify(self: nndeploy._nndeploy_internal.device.BufferDesc, arg0: nndeploy._nndeploy_internal.device.BufferDesc) -> bool

clear(self: nndeploy._nndeploy_internal.device.BufferDesc) None[源代码]
class nndeploy.device.TensorDesc(*args, **kwargs)[源代码]

基类:TensorDesc

__init__(*args, **kwargs)[源代码]

Constructs a TensorDesc object.

The constructor can be called in the following ways: 1. TensorDesc(): Constructs an empty TensorDesc object. 2. TensorDesc(data_type, format, shape): Constructs a TensorDesc object from data type, data format and shape. 3. TensorDesc(data_type, format, shape, stride): Constructs a TensorDesc object from data type, data format, shape and stride. 4. TensorDesc(desc): Constructs a new TensorDesc object from another TensorDesc object.

print(self: nndeploy._nndeploy_internal.device.TensorDesc, stream: std::ostream) None[源代码]
property data_type
property data_format
property data_format_
property data_type_
deserialize(self: nndeploy._nndeploy_internal.device.TensorDesc, arg0: str) nndeploy._nndeploy_internal.base.Status
serialize(self: nndeploy._nndeploy_internal.device.TensorDesc, arg0: str) nndeploy._nndeploy_internal.base.Status
property shape
property shape_
property stride_
property stride
class nndeploy.device.Architecture(*args, **kwargs)[源代码]

基类:object

__init__(*args, **kwargs)[源代码]

Constructs an Architecture object.

The constructor can be called in the following ways: 1. str: Constructs an Architecture from a string. eg: “cpu”, “ascendcl”, etc. 2. DeviceTypeCode: Constructs an Architecture from a DeviceTypeCode enum value. 3. _C.base.DeviceTypeCode: Constructs an Architecture from a DeviceTypeCode enum value.

check_device(device_id: int = 0, library_path: str = '')[源代码]
enable_device(device_id: int = 0, library_path: str = '')[源代码]
disable_device()[源代码]
get_device(device_id: int)[源代码]
get_device_info(library_path: str = '')[源代码]
get_device_type_code()[源代码]
insert_device(device_id: int, device: Device)[源代码]
class nndeploy.device.Device(*args, **kwargs)[源代码]

基类:object

__init__(*args, **kwargs)[源代码]

Constructs a Device object.

The constructor can be called in the following ways: 1. Device(device_name_and_id): Constructs a Device from a string in the format “device_name:device_id” (e.g., “cuda:0”). 2. Device(device_name, device_id): Constructs a Device from a string device name and an integer device ID. 3. Device(device_type_code): Constructs a Device from a DeviceTypeCode enum value. The device ID defaults to 0. 4. Device(device_type_code, device_id): Constructs a Device from a DeviceTypeCode enum value and an integer device ID. 5. Device(): Constructs a default Device with DeviceTypeCode.cpu and device ID 0.

get_data_format_by_shape(shape)[源代码]
to_buffer_desc(desc, config)[源代码]
allocate(size_or_desc)[源代码]

Allocate memory that must be freed using deallocate() :param size_or_desc: int for allocation size, or BufferDesc for buffer descriptor

返回:

Memory pointer that must be freed using deallocate()

deallocate(ptr)[源代码]
allocate_pinned(size_or_desc)[源代码]

Allocate pinned memory that must be freed using deallocate_pinned() :param size_or_desc: int for allocation size, or BufferDesc for buffer descriptor

返回:

Memory pointer that must be freed using deallocate_pinned()

deallocate_pinned(ptr)[源代码]
copy(src, dst, size, stream=None)[源代码]
download(src, dst, size, stream=None)[源代码]
upload(src, dst, size, stream=None)[源代码]
copy_buffer(src, dst, stream=None)[源代码]
download_buffer(src, dst, stream=None)[源代码]
upload_buffer(src, dst, stream=None)[源代码]
get_context()[源代码]
create_stream(stream=None)[源代码]
create_event()[源代码]
create_events(events)[源代码]
get_device_type()[源代码]
init()[源代码]
deinit()[源代码]
class nndeploy.device.Stream(device_or_type, stream=None)[源代码]

基类:object

__init__(device_or_type, stream=None)[源代码]
get_device_type()[源代码]
get_device()[源代码]
synchronize()[源代码]
record_event(event)[源代码]
wait_event(event)[源代码]
on_execution_context_setup()[源代码]
on_execution_context_teardown()[源代码]
get_native_stream()[源代码]
class nndeploy.device.Event(device_or_type)[源代码]

基类:object

__init__(device_or_type)[源代码]
get_device_type()[源代码]
get_device()[源代码]
query_done()[源代码]
synchronize()[源代码]
get_native_event()[源代码]
class nndeploy.device.MemoryPool(*args, **kwargs)[源代码]

基类:object

__init__(*args, **kwargs)[源代码]

MemoryPool构造函数。

参数:
  • device (Device) – 设备对象。

  • memory_pool_type (MemoryPoolType) – 内存池类型。

  • memory_pool (_C.device.MemoryPool) – 内部内存池对象。

init(*args)[源代码]
deinit()[源代码]
allocate(desc: BufferDesc)[源代码]
deallocate(ptr)[源代码]
allocate_pinned(desc: BufferDesc)[源代码]
deallocate_pinned(ptr)[源代码]
get_device()[源代码]
get_memory_pool_type()[源代码]
class nndeploy.device.Buffer(*args, **kwargs)[源代码]

基类:Buffer

__init__(*args, **kwargs)[源代码]

Overloaded function.

  1. __init__(self: nndeploy._nndeploy_internal.device.Buffer, device: nndeploy._nndeploy_internal.device.Device, size: int) -> None

  2. __init__(self: nndeploy._nndeploy_internal.device.Buffer, device: nndeploy._nndeploy_internal.device.Device, desc: nndeploy._nndeploy_internal.device.BufferDesc) -> None

  3. __init__(self: nndeploy._nndeploy_internal.device.Buffer, device: nndeploy._nndeploy_internal.device.Device, size: int, ptr: capsule) -> None

  4. __init__(self: nndeploy._nndeploy_internal.device.Buffer, device: nndeploy._nndeploy_internal.device.Device, desc: nndeploy._nndeploy_internal.device.BufferDesc, ptr: capsule) -> None

  5. __init__(self: nndeploy._nndeploy_internal.device.Buffer, device: nndeploy._nndeploy_internal.device.Device, size: int, ptr: capsule, memory_type: nndeploy._nndeploy_internal.base.MemoryType) -> None

  6. __init__(self: nndeploy._nndeploy_internal.device.Buffer, device: nndeploy._nndeploy_internal.device.Device, desc: nndeploy._nndeploy_internal.device.BufferDesc, ptr: capsule, memory_type: nndeploy._nndeploy_internal.base.MemoryType) -> None

  7. __init__(self: nndeploy._nndeploy_internal.device.Buffer, memory_pool: nndeploy._nndeploy_internal.device.MemoryPool, size: int) -> None

  8. __init__(self: nndeploy._nndeploy_internal.device.Buffer, memory_pool: nndeploy._nndeploy_internal.device.MemoryPool, desc: nndeploy._nndeploy_internal.device.BufferDesc) -> None

  9. __init__(self: nndeploy._nndeploy_internal.device.Buffer, memory_pool: nndeploy._nndeploy_internal.device.MemoryPool, size: int, ptr: capsule, memory_type: nndeploy._nndeploy_internal.base.MemoryType) -> None

  10. __init__(self: nndeploy._nndeploy_internal.device.Buffer, memory_pool: nndeploy._nndeploy_internal.device.MemoryPool, desc: nndeploy._nndeploy_internal.device.BufferDesc, ptr: capsule, memory_type: nndeploy._nndeploy_internal.base.MemoryType) -> None

  11. __init__(self: nndeploy._nndeploy_internal.device.Buffer, buffer: nndeploy._nndeploy_internal.device.Buffer) -> None

clone()[源代码]

Clone the buffer

copy_to(dst)[源代码]

Copy the buffer to the destination buffer

serialize(bin_str: str)[源代码]

Serialize the buffer to a binary string

deserialize(bin_str: str)[源代码]

Deserialize the buffer from a binary string

print()[源代码]

Print buffer information

just_modify(size)[源代码]

Modify the buffer size

empty()[源代码]

Check if the buffer is empty

get_device_type()[源代码]

Get the device type of the buffer

get_device()[源代码]

Get the device of the buffer

get_memory_pool()[源代码]

Get the memory pool of the buffer

is_memory_pool()[源代码]

Check if the buffer is from a memory pool

get_desc()[源代码]

Get the buffer descriptor

get_size()[源代码]

Get the size of the buffer

get_size_vector()[源代码]

Get the size vector of the buffer

get_real_size()[源代码]

Get the real size of the buffer

get_real_size_vector()[源代码]

Get the real size vector of the buffer

get_config()[源代码]

Get the configuration of the buffer

get_data()[源代码]

Get the data pointer of the buffer

get_memory_type()[源代码]

Get the memory type of the buffer

add_ref()[源代码]

Increase the reference count of the buffer

sub_ref()[源代码]

Decrease the reference count of the buffer

to_numpy(*args, **kwargs)[源代码]

Convert the buffer to numpy array 支持两种调用方式: 1. to_numpy(dtype) - 直接传入dtype对象 2. to_numpy(dtype_obj) - 传入可转换为dtype的对象

static from_numpy(array)[源代码]

Convert numpy array to buffer

to_numpy_v0(self: nndeploy._nndeploy_internal.device.Buffer, dtype: numpy.dtype) numpy.ndarray

Convert buffer to numpy array with specified dtype

to_numpy_v1(self: nndeploy._nndeploy_internal.device.Buffer, dtype: object) numpy.ndarray

Convert buffer to numpy array with dtype object

class nndeploy.device.Tensor(*args, **kwargs)[源代码]

基类:Tensor

__init__(*args, **kwargs)[源代码]

Tensor构造函数。

参数:
  • name (str, optional) – Tensor的名称。

  • desc (TensorDesc, optional) – Tensor的描述信息,包含数据类型、形状等。

  • buffer (Buffer, optional) – 已存在的Buffer对象,用于直接构造Tensor。

  • device (Device, optional) – 设备对象,指定Tensor所在的设备。

  • data_ptr (void*, optional) – 外部数据指针,用于直接使用已有内存构造Tensor。

  • memory_pool (MemoryPool, optional) – 内存池对象,用于从内存池中分配内存。

  • config (List[int], optional) – 配置参数,用于指定内存对齐等配置。

  • *args – 其他位置参数。

  • **kwargs – 其他关键字参数。

备注

构造函数有以下几种形式: 1. Tensor(name) - 仅指定名称创建空Tensor 2. Tensor(desc, name=””) - 使用TensorDesc创建Tensor 3. Tensor(desc, buffer, name=””) - 使用已有Buffer创建Tensor 4. Tensor(device, desc, name=””, config=[]) - 在指定设备上创建Tensor 5. Tensor(device, desc, data_ptr, name=””, config=[]) - 使用已有内存在设备上创建Tensor 6. Tensor(memory_pool, desc, name=””, config=[]) - 从内存池创建Tensor 7. Tensor(memory_pool, desc, data_ptr, name=””, config=[]) - 使用已有内存从内存池创建Tensor

备注

  • 如果第一个参数是Device对象,它将被转换为_C.device.Device对象。

  • 如果第一个参数是MemoryPool对象,它将被转换为_C.device.MemoryPool对象。

create(*args, **kwargs)[源代码]

创建Tensor。

参数:
  • *args – 传递给父类create函数的位置参数。

  • **kwargs – 传递给父类create函数的关键字参数。

返回:

None

clear()[源代码]

清空Tensor。

返回:

None

allocate(*args, **kwargs)[源代码]

分配Tensor内存。

参数:
  • *args – 传递给父类allocate函数的位置参数。

  • **kwargs – 传递给父类allocate函数的关键字参数。

返回:

None

deallocate()[源代码]

释放Tensor内存。

返回:

None

set(value)[源代码]

设置Tensor的值。

参数:

value – 要设置的值。

返回:

None

reshape(shape)[源代码]

重塑Tensor的形状。

参数:

shape (tuple) – 新的Tensor形状。

返回:

None

just_modify(desc=None, buffer=None, is_external=True)[源代码]

修改Tensor描述符或缓冲区。

参数:
  • desc (TensorDesc, optional) – 新的Tensor描述符。默认为None。

  • buffer (Buffer, optional) – 新的缓冲区。默认为None。

  • is_external (bool, optional) – 缓冲区是否为外部的。默认为True。

返回:

None

抛出:

ValueError – 如果desc和buffer都没有提供。

clone()[源代码]

克隆Tensor。

返回:

克隆的Tensor。

返回类型:

Tensor

copy_to(dst)[源代码]

将Tensor复制到目标Tensor。

参数:

dst (Tensor) – 目标Tensor。

返回:

None

serialize(bin_str: str)[源代码]

序列化Tensor到流。

参数:

stream – 输出流。

返回:

None

deserialize(bin_str: str)[源代码]

从流反序列化Tensor。

参数:

stream – 输入流。

返回:

None

print(stream=None)[源代码]

打印Tensor信息。

参数:

stream – 输出流。默认为None。

返回:

None

is_same_device(tensor)[源代码]

检查Tensor是否在同一设备上。

参数:

tensor (Tensor) – 要比较的Tensor。

返回:

如果Tensor在同一设备上,则为True,否则为False。

返回类型:

bool

is_same_memory_pool(tensor)[源代码]

检查Tensor是否在同一内存池中。

参数:

tensor (Tensor) – 要比较的Tensor。

返回:

如果Tensor在同一内存池中,则为True,否则为False。

返回类型:

bool

is_same_desc(tensor)[源代码]

检查Tensor是否具有相同的描述符。

参数:

tensor (Tensor) – 要比较的Tensor。

返回:

如果Tensor具有相同的描述符,则为True,否则为False。

返回类型:

bool

empty()[源代码]

检查Tensor是否为空。

返回:

如果Tensor为空,则为True,否则为False。

返回类型:

bool

is_continue()[源代码]

检查Tensor数据是否连续。

返回:

如果Tensor数据连续,则为True,否则为False。

返回类型:

bool

is_external_buffer()[源代码]

检查Tensor缓冲区是否为外部的。

返回:

如果Tensor缓冲区为外部的,则为True,否则为False。

返回类型:

bool

get_name()[源代码]

获取Tensor名称。

返回:

Tensor名称。

返回类型:

str

set_name(name)[源代码]

设置Tensor名称。

参数:

name (str) – 新的Tensor名称。

返回:

None

get_desc()[源代码]

获取Tensor描述符。

返回:

Tensor描述符。

返回类型:

TensorDesc

get_data_type()[源代码]

获取Tensor数据类型。

返回:

Tensor数据类型。

返回类型:

DataType

set_data_type(data_type)[源代码]

设置Tensor数据类型。

参数:

data_type (DataType) – 新的Tensor数据类型。

返回:

None

get_data_format()[源代码]

获取Tensor数据格式。

返回:

Tensor数据格式。

返回类型:

DataFormat

set_data_format(data_format)[源代码]

设置Tensor数据格式。

参数:

data_format (DataFormat) – 新的Tensor数据格式。

返回:

None

get_shape()[源代码]

获取Tensor形状。

返回:

Tensor形状。

返回类型:

tuple

get_shape_index(index)[源代码]

获取指定索引处的形状值。

参数:

index (int) – 索引。

返回:

指定索引处的形状值。

返回类型:

int

get_batch()[源代码]

获取Tensor批次大小。

返回:

Tensor批次大小。

返回类型:

int

get_channel()[源代码]

获取Tensor通道数。

返回:

Tensor通道数。

返回类型:

int

get_depth()[源代码]

获取Tensor深度。

返回:

Tensor深度。

返回类型:

int

get_height()[源代码]

获取Tensor高度。

返回:

Tensor高度。

返回类型:

int

get_width()[源代码]

获取Tensor宽度。

返回:

Tensor宽度。

返回类型:

int

get_stride()[源代码]

获取Tensor步长。

返回:

Tensor步长。

返回类型:

tuple

get_stride_index(index)[源代码]

获取指定索引处的步长值。

参数:

index (int) – 索引。

返回:

指定索引处的步长值。

返回类型:

int

get_buffer()[源代码]

获取Tensor缓冲区。

返回:

Tensor缓冲区。

返回类型:

Buffer

get_device_type()[源代码]

获取Tensor设备类型。

返回:

Tensor设备类型。

返回类型:

DeviceType

get_device()[源代码]

获取Tensor设备。

返回:

Tensor设备。

返回类型:

Device

get_memory_pool()[源代码]

获取Tensor内存池。

返回:

Tensor内存池。

返回类型:

MemoryPool

is_memory_pool()[源代码]

检查Tensor是否来自内存池。

返回:

如果Tensor来自内存池,则为True,否则为False。

返回类型:

bool

get_buffer_desc()[源代码]

获取Tensor缓冲区描述符。

返回:

Tensor缓冲区描述符。

返回类型:

BufferDesc

get_size()[源代码]

获取Tensor大小。

返回:

Tensor大小。

返回类型:

int

get_size_vector()[源代码]

获取Tensor大小向量。

返回:

Tensor大小向量。

返回类型:

list

get_real_size()[源代码]

获取Tensor实际大小。

返回:

Tensor实际大小。

返回类型:

int

get_real_size_vector()[源代码]

获取Tensor实际大小向量。

返回:

Tensor实际大小向量。

返回类型:

list

get_config()[源代码]

获取Tensor配置。

返回:

Tensor配置。

返回类型:

list

get_data()[源代码]

获取Tensor数据指针。

返回:

Tensor数据指针。

返回类型:

int

get_memory_type()[源代码]

获取Tensor内存类型。

返回:

Tensor内存类型。

返回类型:

MemoryType

add_ref()[源代码]

增加Tensor引用计数。

返回:

None

sub_ref()[源代码]

减少Tensor引用计数。

返回:

None

to_numpy()[源代码]

将Tensor转换为numpy数组。

返回:

numpy数组。

返回类型:

numpy.ndarray

to(device_type)[源代码]

将Tensor移动到指定设备。

参数:

device_type (DeviceType) – 目标设备类型。

返回:

移动后的Tensor。

返回类型:

Tensor

static from_numpy(array, device_type=<nndeploy.base.common.DeviceType object>)[源代码]

从numpy数组创建Tensor。

参数:
返回:

创建的Tensor。

返回类型:

Tensor

property shape
nndeploy.device.create_tensor_from_numpy(np_data, device='cpu')[源代码]
nndeploy.device.create_numpy_from_tensor(tensor)[源代码]

Modules

nndeploy.device.buffer

nndeploy.device.device

nndeploy.device.memory_pool

nndeploy.device.tensor

nndeploy.device.type