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