2 #ifndef _NNDEPLOY_DEVICE_BUFFER_H_
3 #define _NNDEPLOY_DEVICE_BUFFER_H_
14 #ifdef ENABLE_NNDEPLOY_SAFETENSORS_CPP
15 #include "safetensors.hh"
51 if (data_ ==
nullptr) {
55 T *value_ptr =
nullptr;
57 value_ptr = (T *)data_;
60 value_ptr = (T *)(host_device->
allocate(desc_));
63 size_t size = this->getSize();
64 size_t ele_size =
sizeof(T);
65 size_t ele_count = size / ele_size;
66 for (
size_t i = 0; i < ele_count; ++i) {
70 device_->upload(value_ptr, data_, size);
85 #ifdef ENABLE_NNDEPLOY_SAFETENSORS_CPP
86 base::Status serializeToSafetensors(safetensors::safetensors_t &st,
87 const safetensors::tensor_t &tensor);
95 void print(std::ostream &stream = std::cout)
const;
116 inline int addRef()
const {
return NNDEPLOY_XADD(ref_count_, 1); }
117 inline int subRef()
const {
return NNDEPLOY_XADD(ref_count_, -1); }
123 Device *device_ =
nullptr;
128 int *ref_count_ =
nullptr;
136 void *data_ =
nullptr;
bool isMemoryPool() const
Device * getDevice() const
void print(std::ostream &stream=std::cout) const
bool justModify(const BufferDesc &desc)
Buffer(MemoryPool *memory_pool, size_t size)
base::Status deserialize(const std::string &bin_str)
Buffer(Device *device, const BufferDesc &desc, void *ptr, base::MemoryType memory_type)
size_t getRealSize() const
Buffer(MemoryPool *memory_pool, const BufferDesc &desc)
Buffer(Device *device, const BufferDesc &desc)
base::SizeVector getSizeVector() const
MemoryPool * getMemoryPool() const
bool justModify(const base::SizeVector &size)
Buffer(MemoryPool *memory_pool, size_t size, void *ptr, base::MemoryType memory_type)
Buffer(const Buffer &buffer)
Buffer & operator=(Buffer &&buffer) noexcept
BufferDesc getDesc() const
base::Status serialize(std::string &bin_str)
Buffer(Device *device, const BufferDesc &desc, void *ptr)
bool justModify(const size_t &size)
Buffer(Device *device, size_t size, void *ptr, base::MemoryType memory_type)
Buffer(Device *device, size_t size, void *ptr)
Buffer(Buffer &&buffer) noexcept
base::Status copyTo(Buffer *dst)
base::MemoryType getMemoryType() const
Buffer(Device *device, size_t size)
base::DeviceType getDeviceType() const
Buffer(MemoryPool *memory_pool, const BufferDesc &desc, void *ptr, base::MemoryType memory_type)
Buffer & operator=(const Buffer &buffer)
base::Status set(T value)
base::SizeVector getRealSizeVector() const
base::IntVector getConfig() const
virtual void * allocate(size_t size)=0
分配内存
virtual void deallocate(void *ptr)=0
释放内存
#define NNDEPLOY_LOGE(fmt,...)
#define NNDEPLOY_CC_API
api
@ kStatusCodeErrorNullParam
std::vector< int > IntVector
std::vector< size_t > SizeVector
bool isHostDeviceType(base::DeviceType device_type)
判断是否为主机设备类型
Device * getDefaultHostDevice()
获取默认主机设备