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