• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# INnrtDevice
2
3
4## 概述
5
6定义了与设备相关的接口,实现设备管理和模型编译等操作。
7
8当有多个设备注册时,需要保证设备名称和设备商名称的组合全局唯一。
9
10**起始版本:** 3.2
11
12**相关模块:**[NNRt](_n_n_rt_v20.md)
13
14
15## 汇总
16
17
18### Public 成员函数
19
20| 名称 | 描述 |
21| -------- | -------- |
22| [GetDeviceName](#getdevicename) ([out] String name) | 获取设备名称  |
23| [GetVendorName](#getvendorname) ([out] String name) | 获取设备商名称  |
24| [GetDeviceType](#getdevicetype) ([out] enum [DeviceType](_n_n_rt_v20.md#devicetype) deviceType) | 获取设备类型  |
25| [GetDeviceStatus](#getdevicestatus) ([out] enum [DeviceStatus](_n_n_rt_v20.md#devicestatus) status) | 获取设备当前状态  |
26| [GetSupportedOperation](#getsupportedoperation) ([in] struct [Model](_model_v20.md) model, [out] boolean[] ops) | 查询设备对指定模型的算子支持程度  |
27| [IsFloat16PrecisionSupported](#isfloat16precisionsupported) ([out] boolean isSupported) | 查询设备是否支持以Float16精度运算Float32的模型。  |
28| [IsPerformanceModeSupported](#isperformancemodesupported) ([out] boolean isSupported) | 查询设备是否支持性能偏好设置,性能偏好的定义可以参考[PerformanceMode](_n_n_rt_v20.md#performancemode)。  |
29| [IsPrioritySupported](#isprioritysupported) ([out] boolean isSupported) | 查询设备是否支持任务优先级设置,优先级的定义可以参考[Priority](_n_n_rt_v20.md#priority)。  |
30| [IsDynamicInputSupported](#isdynamicinputsupported) ([out] boolean isSupported) | 查询设备是否支持变尺寸输入,变尺寸输入意味着同一个模型的不同次运算输入的形状可以不一样。  |
31| [PrepareModel](#preparemodel) ([in] struct [Model](_model_v20.md) model, [in] struct [ModelConfig](_model_config_v20.md) config, [out] [IPreparedModel](interface_i_prepared_model_v20.md) preparedModel) | 编译模型  |
32| [IsModelCacheSupported](#ismodelcachesupported) ([out] boolean isSupported) | 查询是否支持模型缓存功能  |
33| [PrepareModelFromModelCache](#preparemodelfrommodelcache) ([in] struct [SharedBuffer](_shared_buffer_v20.md)[] modelCache, [in] struct [ModelConfig](_model_config_v20.md) config, [out] [IPreparedModel](interface_i_prepared_model_v20.md) preparedModel) | 加载模型缓存,该模型缓存是通过ExportModelCache接口导出的。  |
34| [PrepareOfflineModel](#prepareofflinemodel) ([in] struct [SharedBuffer](_shared_buffer_v20.md)[] modelCache, [in] struct [ModelConfig](_model_config_v20.md) config, [out] [IPreparedModel](interface_i_prepared_model_v20.md) preparedModel) | 加载离线模型文件的缓存,该离线模型是由推理框架传入NNRt并由NNRt解析得到的。  |
35| [AllocateBuffer](#allocatebuffer) ([in] unsigned int length, [out] struct [SharedBuffer](_shared_buffer_v20.md) buffer) | 申请设备共享内存,以文件描述符的形式返回,共享内存主要用于推理输入输出数据的快速传递。  |
36| [ReleaseBuffer](#releasebuffer) ([in] struct [SharedBuffer](_shared_buffer_v20.md) buffer) | 释放共享内存。  |
37
38
39## 成员函数说明
40
41
42### AllocateBuffer()
43
44```
45INnrtDevice::AllocateBuffer ([in] unsigned int length, [out] struct SharedBuffer buffer )
46```
47**描述**
48申请设备共享内存,以文件描述符的形式返回,共享内存主要用于推理输入输出数据的快速传递。
49
50**起始版本:** 3.2
51
52**参数:**
53
54| 名称 | 描述 |
55| -------- | -------- |
56| length | 申请共享内存的大小,单位是字节。  |
57| buffer | 共享内存的信息,包含共享内存的文件描述符和空间大小,SharedBuffer定义请查看[SharedBuffer](_shared_buffer_v20.md)。 |
58
59**返回:**
60
61返回0表示成功
62
63返回非0表示失败,负数为HDF标准错误码,正数为NNRt定义的专用错误码(请查看[NNRT_ReturnCode](_n_n_rt_v20.md#nnrt_returncode))
64
65
66### GetDeviceName()
67
68```
69INnrtDevice::GetDeviceName ([out] String name)
70```
71**描述**
72获取设备名称
73
74**起始版本:** 3.2
75
76**参数:**
77
78| 名称 | 描述 |
79| -------- | -------- |
80| name | 设备名称 |
81
82**返回:**
83
84返回0表示成功
85
86返回非0表示失败,负数为HDF标准错误码,正数为NNRt定义的专用错误码(请查看[NNRT_ReturnCode](_n_n_rt_v20.md#nnrt_returncode))
87
88
89### GetDeviceStatus()
90
91```
92INnrtDevice::GetDeviceStatus ([out] enum DeviceStatus status)
93```
94**描述**
95获取设备当前状态
96
97**起始版本:** 3.2
98
99**参数:**
100
101| 名称 | 描述 |
102| -------- | -------- |
103| status | 设备当前状态,DeviceStatus枚举定义了可选的设备状态,详细定义请查看[DeviceStatus](_n_n_rt_v20.md#devicestatus)。 |
104
105**返回:**
106
107返回0表示成功
108
109返回非0表示失败,负数为HDF标准错误码,正数为NNRt定义的专用错误码(请查看[NNRT_ReturnCode](_n_n_rt_v20.md#nnrt_returncode))
110
111
112### GetDeviceType()
113
114```
115INnrtDevice::GetDeviceType ([out] enum DeviceType deviceType)
116```
117**描述**
118获取设备类型
119
120**起始版本:** 3.2
121
122**参数:**
123
124| 名称 | 描述 |
125| -------- | -------- |
126| deviceType | 设备类型,DeviceType枚举定义了可选的设备类型,详细定义请查看[DeviceType](_n_n_rt_v20.md#devicetype)。 |
127
128**返回:**
129
130返回0表示成功
131
132返回非0表示失败,负数为HDF标准错误码,正数为NNRt定义的专用错误码(请查看[NNRT_ReturnCode](_n_n_rt_v20.md#nnrt_returncode))
133
134
135### GetSupportedOperation()
136
137```
138INnrtDevice::GetSupportedOperation ([in] struct Model model, [out] boolean[] ops )
139```
140**描述**
141查询设备对指定模型的算子支持程度
142
143**起始版本:** 3.2
144
145**参数:**
146
147| 名称 | 描述 |
148| -------- | -------- |
149| model | AI模型,模型结构由Model定义,详细定义请查看[Model](_model_v20.md)。  |
150| ops | 算子是否支持列表,算子支持列表的顺序与在model中的顺序要一致。 |
151
152**返回:**
153
154返回0表示成功
155
156返回非0表示失败,负数为HDF标准错误码,正数为NNRt定义的专用错误码(请查看[NNRT_ReturnCode](_n_n_rt_v20.md#nnrt_returncode))
157
158
159### GetVendorName()
160
161```
162INnrtDevice::GetVendorName ([out] String name)
163```
164**描述**
165获取设备商名称
166
167**起始版本:** 3.2
168
169**参数:**
170
171| 名称 | 描述 |
172| -------- | -------- |
173| name | 设备商名称 |
174
175**返回:**
176
177返回0表示成功
178
179返回非0表示失败,负数为HDF标准错误码,正数为NNRt定义的专用错误码(请查看[NNRT_ReturnCode](_n_n_rt_v20.md#nnrt_returncode))
180
181
182### IsDynamicInputSupported()
183
184```
185INnrtDevice::IsDynamicInputSupported ([out] boolean isSupported)
186```
187**描述**
188查询设备是否支持变尺寸输入,变尺寸输入意味着同一个模型的不同次运算输入的形状可以不一样。
189
190如果支持变尺寸输入,模型输入Tensor的形状上用-1标记该维度是否可变。
191
192**起始版本:** 3.2
193
194**参数:**
195
196| 名称 | 描述 |
197| -------- | -------- |
198| isSupported | 是否支持变尺寸输入。 |
199
200**返回:**
201
202返回0表示成功
203
204返回非0表示失败,负数为HDF标准错误码,正数为NNRt定义的专用错误码(请查看[NNRT_ReturnCode](_n_n_rt_v20.md#nnrt_returncode))
205
206
207### IsFloat16PrecisionSupported()
208
209```
210INnrtDevice::IsFloat16PrecisionSupported ([out] boolean isSupported)
211```
212**描述**
213查询设备是否支持以Float16精度运算Float32的模型。
214
215**起始版本:** 3.2
216
217**参数:**
218
219| 名称 | 描述 |
220| -------- | -------- |
221| isSupported | 是否支持Float16精度。 |
222
223**返回:**
224
225返回0表示成功
226
227返回非0表示失败,负数为HDF标准错误码,正数为NNRt定义的专用错误码(请查看[NNRT_ReturnCode](_n_n_rt_v20.md#nnrt_returncode))
228
229
230### IsModelCacheSupported()
231
232```
233INnrtDevice::IsModelCacheSupported ([out] boolean isSupported)
234```
235**描述**
236查询是否支持模型缓存功能
237
238若支持,则需要实现PrepareModelFromModelCache和ExportModelCache两个接口。
239
240**起始版本:** 3.2
241
242**参数:**
243
244| 名称 | 描述 |
245| -------- | -------- |
246| isSupported | 是否支持模型缓存。 |
247
248**返回:**
249
250返回0表示成功
251
252返回非0表示失败,负数为HDF标准错误码,正数为NNRt定义的专用错误码(请查看[NNRT_ReturnCode](_n_n_rt_v20.md#nnrt_returncode))
253
254
255### IsPerformanceModeSupported()
256
257```
258INnrtDevice::IsPerformanceModeSupported ([out] boolean isSupported)
259```
260**描述**
261查询设备是否支持性能偏好设置,性能偏好的定义可以参考[PerformanceMode](_n_n_rt_v20.md#performancemode)。
262
263**起始版本:** 3.2
264
265**参数:**
266
267| 名称 | 描述 |
268| -------- | -------- |
269| isSupported | 是否支持性能偏好设置。 |
270
271**返回:**
272
273返回0表示成功
274
275返回非0表示失败,负数为HDF标准错误码,正数为NNRt定义的专用错误码(请查看[NNRT_ReturnCode](_n_n_rt_v20.md#nnrt_returncode))
276
277
278### IsPrioritySupported()
279
280```
281INnrtDevice::IsPrioritySupported ([out] boolean isSupported)
282```
283**描述**
284查询设备是否支持任务优先级设置,优先级的定义可以参考[Priority](_n_n_rt_v20.md#priority)。
285
286**起始版本:** 3.2
287
288**参数:**
289
290| 名称 | 描述 |
291| -------- | -------- |
292| isSupported | 是否支持性能偏好设置。 |
293
294**返回:**
295
296返回0表示成功
297
298返回非0表示失败,负数为HDF标准错误码,正数为NNRt定义的专用错误码(请查看[NNRT_ReturnCode](_n_n_rt_v20.md#nnrt_returncode))
299
300
301### PrepareModel()
302
303```
304INnrtDevice::PrepareModel ([in] struct Model model, [in] struct ModelConfig config, [out] IPreparedModel preparedModel )
305```
306**描述**
307编译模型
308
309如果是变尺寸输入模型,则模型输入的维度信息中至少有一个是-1。
310
311**起始版本:** 3.2
312
313**参数:**
314
315| 名称 | 描述 |
316| -------- | -------- |
317| model | 需要编译的模型,Model定义请查看[Model](_model_v20.md)。  |
318| config | 编译模型的配置,ModelConfig定义请查看[ModelConfig](_model_config_v20.md)。  |
319| preparedModel | 编译好的模型对象,用于后续的运算,IPreparedModel定义请查看[IPreparedModel](interface_i_prepared_model_v20.md)。 |
320
321**返回:**
322
323返回0表示成功
324
325返回非0表示失败,负数为HDF标准错误码,正数为NNRt定义的专用错误码(请查看[NNRT_ReturnCode](_n_n_rt_v20.md#nnrt_returncode))
326
327
328### PrepareModelFromModelCache()
329
330```
331INnrtDevice::PrepareModelFromModelCache ([in] struct SharedBuffer[] modelCache, [in] struct ModelConfig config, [out] IPreparedModel preparedModel )
332```
333**描述**
334加载模型缓存,该模型缓存是通过ExportModelCache接口导出的。
335
336**起始版本:** 3.2
337
338**参数:**
339
340| 名称 | 描述 |
341| -------- | -------- |
342| modelCache | 模型缓存文件的数组,数组顺序与导出时的数组顺序一致,数组元素类型请查看SharedBuffer定义[SharedBuffer](_shared_buffer_v20.md)。  |
343| config | 加载模型缓存的配置,配置参数的详细定义请参考[ModelConfig](_model_config_v20.md)。  |
344| preparedModel | 加载缓存得到的模型对象,用于后续的运算,IPreparedModel定义请查看[IPreparedModel](interface_i_prepared_model_v20.md)。 |
345
346**返回:**
347
348返回0表示成功
349
350返回非0表示失败,负数为HDF标准错误码,正数为NNRt定义的专用错误码(请查看[NNRT_ReturnCode](_n_n_rt_v20.md#nnrt_returncode))
351
352
353### PrepareOfflineModel()
354
355```
356INnrtDevice::PrepareOfflineModel ([in] struct SharedBuffer[] modelCache, [in] struct ModelConfig config, [out] IPreparedModel preparedModel )
357```
358**描述**
359加载离线模型文件的缓存,该离线模型是由推理框架传入NNRt并由NNRt解析得到的。
360
361**起始版本:** 3.2
362
363**参数:**
364
365| 名称 | 描述 |
366| -------- | -------- |
367| modelCache | 离线模型文件缓存的数组,元素顺序与用户传入的离线模型格式有关,元素类型请查看SharedBuffer定义[SharedBuffer](_shared_buffer_v20.md)。  |
368| config | 加载离线模型文件缓存的配置,配置参数的详细定义请参考[ModelConfig](_model_config_v20.md)。  |
369| preparedModel | 加载离线模型文件缓存得到的模型对象,用于后续的运算,IPreparedModel定义请查看[IPreparedModel](interface_i_prepared_model_v20.md)。 |
370
371**返回:**
372
373返回0表示成功
374
375返回非0表示失败,负数为HDF标准错误码,正数为NNRt定义的专用错误码(请查看[NNRT_ReturnCode](_n_n_rt_v20.md#nnrt_returncode))
376
377
378### ReleaseBuffer()
379
380```
381INnrtDevice::ReleaseBuffer ([in] struct SharedBuffer buffer)
382```
383**描述**
384释放共享内存。
385
386**起始版本:** 3.2
387
388**参数:**
389
390| 名称 | 描述 |
391| -------- | -------- |
392| buffer | 共享内存的信息,包含共享内存的文件描述符和空间大小,SharedBuffer定义请查看[SharedBuffer](_shared_buffer_v20.md)。 |
393
394**返回:**
395
396返回0表示成功
397
398返回非0表示失败,负数为HDF标准错误码,正数为NNRt定义的专用错误码(请查看[NNRT_ReturnCode](_n_n_rt_v20.md#nnrt_returncode))
399