model_process.h 1.11 KB
#ifndef _MODEL_PROCESS_H_
#define _MODEL_PROCESS_H_

#include <iostream>
#include <vector>
#include "utils.h"
#include "acl/acl.h"

class ModelProcess {
public:
    ModelProcess();
    ~ModelProcess();

    int LoadModelFromFileWithMem(const char *modelPath);
    void Unload();

    int CreateDesc();
    void DestroyDesc();
    aclmdlDesc* GetmodelDesc() { return modelDesc_;};

    int CreateOutput(vector<vector<int>>& dims);
    void DestroyOutput();

    int CreateInput(void *input, size_t inputsize);
    int CreateInputV2(void *input, size_t inputsize);
    int AddInputBuff(void *input, size_t inputsize);
    int GetInputDims(vector<vector<int>>& dims);

    void DestroyInput();
    void DestroyInputV2();

    int Execute();
    int Execute(int batchsize);

    aclmdlDataset *GetModelOutputData();

private:
    bool loadFlag_;  // model load flag
    uint32_t modelId_;
    void *modelMemPtr_;
    size_t modelMemSize_;
    void *modelWeightPtr_;
    size_t modelWeightSize_;
    aclmdlDesc *modelDesc_;
    aclmdlDataset *output_;
    aclmdlDataset *input_;
};

#endif