更新时间: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_;
    }
分享:

    相关文档

    相关产品