Open3D (C++ API)  0.17.0
Loading...
Searching...
No Matches
DLPack.h
Go to the documentation of this file.
1// ----------------------------------------------------------------------------
2// - Open3D: www.open3d.org -
3// ----------------------------------------------------------------------------
4// Copyright (c) 2018-2023 www.open3d.org
5// SPDX-License-Identifier: MIT
6// ----------------------------------------------------------------------------
7//
8// This file is retrieved from:
9// https://github.com/dmlc/dlpack/blob/master/include/dlpack/dlpack.h
10// Commit: 3ec0443, Feb 16 2020
11//
12// License:
13// https://github.com/dmlc/dlpack/blob/master/LICENSE
14//
15// Open3D changes:
16// No changes except for automatic style changed by clang-format.
17
23#ifndef DLPACK_DLPACK_H_
24#define DLPACK_DLPACK_H_
25
26#ifdef __cplusplus
27#define DLPACK_EXTERN_C extern "C"
28#else
29#define DLPACK_EXTERN_C
30#endif
31
33#define DLPACK_VERSION 020
34
36#ifdef _WIN32
37#ifdef DLPACK_EXPORTS
38#define DLPACK_DLL __declspec(dllexport)
39#else
40#define DLPACK_DLL __declspec(dllimport)
41#endif
42#else
43#define DLPACK_DLL
44#endif
45
46#include <stddef.h>
47#include <stdint.h>
48
49#ifdef __cplusplus
50extern "C" {
51#endif
55typedef enum {
57 kDLCPU = 1,
59 kDLGPU = 2,
72 kDLVPI = 9,
74 kDLROCM = 10,
82
92
96typedef enum {
97 kDLInt = 0U,
98 kDLUInt = 1U,
102
111typedef struct {
117 uint8_t code;
121 uint8_t bits;
123 uint16_t lanes;
124} DLDataType;
125
129typedef struct {
149 void* data;
153 int ndim;
157 int64_t* shape;
162 int64_t* strides;
164 uint64_t byte_offset;
165} DLTensor;
166
188#ifdef __cplusplus
189} // DLPACK_EXTERN_C
190#endif
191#endif // DLPACK_DLPACK_H_
DLDataTypeCode
The type code options DLDataType.
Definition DLPack.h:96
@ kDLInt
Definition DLPack.h:97
@ kDLBfloat
Definition DLPack.h:100
@ kDLFloat
Definition DLPack.h:99
@ kDLUInt
Definition DLPack.h:98
DLDeviceType
The device type in DLContext.
Definition DLPack.h:55
@ kDLVulkan
Vulkan buffer for next generation graphics.
Definition DLPack.h:68
@ kDLMetal
Metal for Apple GPU.
Definition DLPack.h:70
@ kDLCPUPinned
Pinned CUDA GPU device by cudaMallocHost.
Definition DLPack.h:64
@ kDLOpenCL
OpenCL devices.
Definition DLPack.h:66
@ kDLCPU
CPU device.
Definition DLPack.h:57
@ kDLROCM
ROCm GPUs for AMD GPUs.
Definition DLPack.h:74
@ kDLGPU
CUDA GPU device.
Definition DLPack.h:59
@ kDLExtDev
Reserved extension device type, used for quickly test extension device The semantics can differ depen...
Definition DLPack.h:80
@ kDLVPI
Verilog simulator buffer.
Definition DLPack.h:72
A Device context for Tensor and operator.
Definition DLPack.h:86
int device_id
The device index.
Definition DLPack.h:90
DLDeviceType device_type
The device type used in the device.
Definition DLPack.h:88
The data type the tensor can hold.
Definition DLPack.h:111
uint16_t lanes
Number of lanes in the type, used for vector types.
Definition DLPack.h:123
uint8_t bits
Number of bits, common choices are 8, 16, 32.
Definition DLPack.h:121
uint8_t code
Type code of base types. We keep it uint8_t instead of DLDataTypeCode for minimal memory footprint,...
Definition DLPack.h:117
C Tensor object, manage memory of DLTensor. This data structure is intended to facilitate the borrowi...
Definition DLPack.h:174
void(* deleter)(struct DLManagedTensor *self)
Destructor signature void (*)(void*) - this should be called to destruct manager_ctx which holds the ...
Definition DLPack.h:186
DLTensor dl_tensor
DLTensor which is being memory managed.
Definition DLPack.h:176
void * manager_ctx
the context of the original host framework of DLManagedTensor in which DLManagedTensor is used in the...
Definition DLPack.h:180
Plain C Tensor object, does not manage memory.
Definition DLPack.h:129
int64_t * strides
strides of the tensor (in number of elements, not bytes) can be NULL, indicating tensor is compact an...
Definition DLPack.h:162
DLContext ctx
The device context of the tensor.
Definition DLPack.h:151
uint64_t byte_offset
The offset in bytes to the beginning pointer to data.
Definition DLPack.h:164
void * data
The opaque data pointer points to the allocated data. This will be CUDA device pointer or cl_mem hand...
Definition DLPack.h:149
int64_t * shape
The shape of the tensor.
Definition DLPack.h:157
int ndim
Number of dimensions.
Definition DLPack.h:153
DLDataType dtype
The data type of the pointer.
Definition DLPack.h:155