model_variant_handle.h Source File

model_variant_handle.h Source File#

SDK qb Runtime Library: model_variant_handle.h Source File
SDK qb Runtime Library v1.4
MCS001-EN
model_variant_handle.h
Go to the documentation of this file.
1
4
5#ifndef QBRUNTIME_MODEL_VARIANT_HANDLE_H_
6#define QBRUNTIME_MODEL_VARIANT_HANDLE_H_
7
8#include <stdint.h>
9
10#include <vector>
11
12#include "qbruntime/export.h"
13#include "qbruntime/npu_data.h"
15#include "qbruntime/type.h"
16
17namespace mobilint {
18
23
24class ModelImpl;
25
35class QBRUNTIME_EXPORT ModelVariantHandle {
36public:
37 ModelVariantHandle(const ModelVariantHandle& other) = delete;
38 ModelVariantHandle(ModelVariantHandle&& other) = delete;
39 ModelVariantHandle& operator=(const ModelVariantHandle& rhs) = delete;
40 ModelVariantHandle& operator=(ModelVariantHandle&& rhs) noexcept = delete;
41 ~ModelVariantHandle();
42
48 int getVariantIdx() const;
49
55 const std::vector<std::vector<int64_t>>& getModelInputShape() const;
56
62 const std::vector<std::vector<int64_t>>& getModelOutputShape() const;
63
69 const std::vector<BufferInfo>& getInputBufferInfo() const;
70
76 const std::vector<BufferInfo>& getOutputBufferInfo() const;
77
83 std::vector<Scale> getInputScale() const;
84
90 std::vector<Scale> getOutputScale() const;
91
98
105
128
129 // Acquire buffer
130 std::vector<Buffer> acquireInputBuffer(
131 const std::vector<std::vector<int>>& seqlens = {}) const;
132 std::vector<Buffer> acquireOutputBuffer(
133 const std::vector<std::vector<int>>& seqlens = {}) const;
134 std::vector<std::vector<Buffer>> acquireInputBuffers(
135 int batch_size, const std::vector<std::vector<int>>& seqlens = {}) const;
136 std::vector<std::vector<Buffer>> acquireOutputBuffers(
137 int batch_size, const std::vector<std::vector<int>>& seqlens = {}) const;
138
161 NPUData acquireInputNPUData(const std::vector<int64_t>& shape, int idx, bool upload,
162 DataType dtype, StatusCode& sc) const;
163
184 NPUData acquireOutputNPUData(const std::vector<int64_t>& shape, int idx, bool upload,
185 DataType dtype, StatusCode& sc) const;
186
187 // Deallocate acquired Input/Output buffer
188 StatusCode releaseBuffer(std::vector<Buffer>& buffer) const;
189 StatusCode releaseBuffers(std::vector<std::vector<Buffer>>& buffers) const;
190
191 // Reposition single batch
192 StatusCode repositionInputs(const std::vector<float*>& input,
193 std::vector<Buffer>& input_buf,
194 const std::vector<std::vector<int>>& seqlens = {}) const;
195 StatusCode repositionOutputs(const std::vector<Buffer>& output_buf,
196 std::vector<float*>& output,
197 const std::vector<std::vector<int>>& seqlens = {}) const;
198 StatusCode repositionOutputs(const std::vector<Buffer>& output_buf,
199 std::vector<std::vector<float>>& output,
200 const std::vector<std::vector<int>>& seqlens = {}) const;
201 StatusCode repositionInputs(const std::vector<uint8_t*>& input,
202 std::vector<Buffer>& input_buf,
203 const std::vector<std::vector<int>>& seqlens = {}) const;
204
205 // Reposition multiple batches
206 StatusCode repositionInputs(const std::vector<float*>& input,
207 std::vector<std::vector<Buffer>>& input_buf,
208 const std::vector<std::vector<int>>& seqlens = {}) const;
209 StatusCode repositionOutputs(const std::vector<std::vector<Buffer>>& output_buf,
210 std::vector<float*>& output,
211 const std::vector<std::vector<int>>& seqlens = {}) const;
212 StatusCode repositionOutputs(const std::vector<std::vector<Buffer>>& output_buf,
213 std::vector<std::vector<float>>& output,
214 const std::vector<std::vector<int>>& seqlens = {}) const;
215 StatusCode repositionInputs(const std::vector<uint8_t*>& input,
216 std::vector<std::vector<Buffer>>& input_buf,
217 const std::vector<std::vector<int>>& seqlens = {}) const;
219
220private:
221 ModelVariantHandle(int variant_idx, const ModelImpl& model_impl);
222
223 const int mIdx;
224 const ModelImpl& mModelImpl;
225
226 friend class ModelImpl;
227};
228
229} // namespace mobilint
230
231#endif // QBRUNTIME_MODEL_VARIANT_HANDLE_H_
Handle to a specific variant of a loaded model.
Represents a model input or output tensor that can reside either on the host (CPU) or on the NPU.
Definition npu_data.h:51
StatusCode repositionOutputs(const std::vector< Buffer > &output_buf, std::vector< std::vector< float > > &output, const std::vector< std::vector< int > > &seqlens={}) const
Acquires an NPUData for this variant's input at the given index.
DataType
DataType.
Definition type.h:510
const std::vector< std::vector< int64_t > > & getModelOutputShape() const
Returns the output shape for this model variant.
std::vector< std::vector< Buffer > > acquireOutputBuffers(int batch_size, const std::vector< std::vector< int > > &seqlens={}) const
Acquires an NPUData for this variant's input at the given index.
StatusCode releaseBuffer(std::vector< Buffer > &buffer) const
Acquires an NPUData for this variant's input at the given index.
NPUData acquireOutputNPUData(const std::vector< int64_t > &shape, int idx, bool upload, DataType dtype, StatusCode &sc) const
Acquires an NPUData for this variant's output at the given index.
StatusCode repositionInputs(const std::vector< float * > &input, std::vector< Buffer > &input_buf, const std::vector< std::vector< int > > &seqlens={}) const
Acquires an NPUData for this variant's input at the given index.
StatusCode repositionInputs(const std::vector< uint8_t * > &input, std::vector< Buffer > &input_buf, const std::vector< std::vector< int > > &seqlens={}) const
Acquires an NPUData for this variant's input at the given index.
const std::vector< BufferInfo > & getOutputBufferInfo() const
Returns the output buffer information for this variant.
std::vector< Scale > getInputScale() const
Returns the input quantization scale(s) for this variant.
StatusCode
Enumerates status codes for the qbruntime.
Definition status_code.h:28
std::vector< Scale > getOutputScale() const
Returns the output quantization scale(s) for this variant.
StatusCode repositionOutputs(const std::vector< std::vector< Buffer > > &output_buf, std::vector< std::vector< float > > &output, const std::vector< std::vector< int > > &seqlens={}) const
Acquires an NPUData for this variant's input at the given index.
StatusCode repositionOutputs(const std::vector< Buffer > &output_buf, std::vector< float * > &output, const std::vector< std::vector< int > > &seqlens={}) const
Acquires an NPUData for this variant's input at the given index.
DataType getModelOutputDataType() const
Returns a data type for model outputs.
StatusCode releaseBuffers(std::vector< std::vector< Buffer > > &buffers) const
Acquires an NPUData for this variant's input at the given index.
DataType getModelInputDataType() const
Returns a data type for model inputs.
const std::vector< BufferInfo > & getInputBufferInfo() const
Returns the input buffer information for this variant.
StatusCode repositionInputs(const std::vector< float * > &input, std::vector< std::vector< Buffer > > &input_buf, const std::vector< std::vector< int > > &seqlens={}) const
Acquires an NPUData for this variant's input at the given index.
const std::vector< std::vector< int64_t > > & getModelInputShape() const
Returns the input shape for this model variant.
StatusCode repositionOutputs(const std::vector< std::vector< Buffer > > &output_buf, std::vector< float * > &output, const std::vector< std::vector< int > > &seqlens={}) const
Acquires an NPUData for this variant's input at the given index.
int getVariantIdx() const
Returns the index of this model variant.
std::vector< std::vector< Buffer > > acquireInputBuffers(int batch_size, const std::vector< std::vector< int > > &seqlens={}) const
Acquires an NPUData for this variant's input at the given index.
std::vector< Buffer > acquireInputBuffer(const std::vector< std::vector< int > > &seqlens={}) const
Acquires an NPUData for this variant's input at the given index.
NPUData acquireInputNPUData(const std::vector< int64_t > &shape, int idx, bool upload, DataType dtype, StatusCode &sc) const
Acquires an NPUData for this variant's input at the given index.
std::vector< Buffer > acquireOutputBuffer(const std::vector< std::vector< int > > &seqlens={}) const
Acquires an NPUData for this variant's input at the given index.
StatusCode repositionInputs(const std::vector< uint8_t * > &input, std::vector< std::vector< Buffer > > &input_buf, const std::vector< std::vector< int > > &seqlens={}) const
Acquires an NPUData for this variant's input at the given index.