更新时间:2021-03-18 GMT+08:00
AISimpleTensor
简单类型的数据Tensor。该类在ai_tensor.h中定义。
class AISimpleTensor : public IAITensor { public: AISimpleTensor(); ~AISimpleTensor(); /* * @brief 获取类型名称 */ virtual const char* const GetTypeName() override; /*获取数据地址*/ void* GetBuffer(); /* @brief 设置数据地址 @param [in] data 数据指针 @param [in] size 大小 @param [in] isown 是否在tensor生命周期结束后,由tensor释放data地址内存 */ void SetBuffer(void *data, const int32_t size, bool isown=false); /* @brief 获取数据占用空间大小 */ uint32_t GetSize(); /* @brief 分配数据空间 */ void* MallocDataBuffer(uint32_t size); /* * @brief 获取序列化后字节长度 */ virtual uint32_t ByteSizeLong() override; /* * @brief 通过AITensorDescription设置参数 * @param [in] tensor_desc tensor描述 * @return true: init成功 * @return false: init失败,失败的可能原因比如tensor_desc与当前tensor不符 */ virtual bool Init(const AITensorDescription &tensor_desc) override; #if defined( __ANDROID__) || defined(ANDROID) /* * @brief 序列化到buffer,用于数据跨进程交互 * @param [in] buffer 序列化输出的内存区域地址,由调用方分配 * @param [in] size 输出内存区域的大小 * @return SUCCESS: 成功 * FAILED: 失败,如果该Tensor不支持跨进程,则不需要实现此接口,直接返回失败 */ virtual AIStatus SerializeTo(void* buffer, const uint32_t size) override; /* * @brief 从buffer反序列化回tensor,用于数据跨进程交互 * @param [in] buffer 输入的内存区域地址 * @param [in] size 输入内存区域的大小 * @return SUCCESS: 成功 * FAILED: 失败,如果该Tensor不支持跨进程,则不需要实现此接口,直接返回失败 */ virtual AIStatus DeserializeFrom(const void* buffer, const uint32_t size) override; #endif /* @brief 构建tensor描述 */ static AITensorDescription BuildDescription(const std::string& size = ""); /* @brief 根据描述创建tensor */ static std::shared_ptr<IAITensor> CreateTensor(const AITensorDescription& tensor_desc); bool IsSupportZerocpy(); /* @brief 设置数据地址 @param [in] data 数据指针 @param [in] size 大小 @param [in] isown 是否在tensor生命周期结束后,由tensor释放data地址内存 @param [in] is_data_support_mem_share_ 是否在tensor生命周期结束后,由tensor释放data地址内存 */ void SetBufferAttr(void *data, int32_t size, bool isowner, bool is_support_mem_share) override; private: void* data_; uint32_t size_; bool isowner_ ; static std::string type_name_; }
父主题: 其他用于编译依赖的接口