静态和动态模型输入,都是如何给模型创建需要的输入?
收藏回复举报
静态和动态模型输入,都是如何给模型创建需要的输入?
发表于2025-01-20 16:59:38
0 查看

静态模型输入:

aclmdlDataset * inputDataset_ = aclmdlCreateDataset();

// 动态输入,可以通过aclmdlGetInputSizeByIndex获取模型第1个输入的大小

size_t inputIndex = 0;

size_t inputBufferSize_ = aclmdlGetInputSizeByIndex(modelDesc_, inputIndex);  

void * inputBuffer_;

aclrtMalloc(&inputBuffer_, inputBufferSize_, ACL_MEM_MALLOC_HUGE_FIRST);

aclDataBuffer * inputData = aclCreateDataBuffer(inputBuffer_, inputBufferSize_);

aclmdlAddDatasetBuffer(inputDataset_, inputData);

aclmdlExecute(modelId_, inputDataset_, outputDataset_);

动态模型输入:

aclmdlDataset * inputDataset_ = aclmdlCreateDataset();

int64_t shapes[] = { 16, 128 };

aclTensorDesc * inputDesc0 = aclCreateTensorDesc(ACL_INT64, 2, shapes, ACL_FORMAT_ND); 

aclmdlSetDatasetTensorDesc(inputDataset_, inputDesc0, 0); 

// 动态输入,可以通过传入的数据获取大小

size_t inputBufferSize_ = sizeof(int64_t ) * 16 * 128;

void * inputBuffer_;

aclrtMalloc(&inputBuffer_, inputBufferSize_, ACL_MEM_MALLOC_HUGE_FIRST);

aclDataBuffer * inputData = aclCreateDataBuffer(inputBuffer_, inputBufferSize_);

aclmdlAddDatasetBuffer(inputDataset_, inputData);

aclmdlExecute(modelId_, inputDataset_, outputDataset_);

我要发帖子