| 258 | } |
| 259 | |
| 260 | void BindLitePlace(py::module *m) { |
| 261 | // TargetType |
| 262 | py::enum_<TargetType>(*m, "TargetType") |
| 263 | .value("Unk", TargetType::kUnk) |
| 264 | .value("Host", TargetType::kHost) |
| 265 | .value("X86", TargetType::kX86) |
| 266 | .value("ARM", TargetType::kARM) |
| 267 | .value("OpenCL", TargetType::kOpenCL) |
| 268 | .value("Any", TargetType::kAny) |
| 269 | .value("FPGA", TargetType::kFPGA) |
| 270 | .value("XPU", TargetType::kXPU) |
| 271 | .value("BM", TargetType::kBM) |
| 272 | .value("MLU", TargetType::kMLU) |
| 273 | .value("RKNPU", TargetType::kRKNPU) |
| 274 | .value("APU", TargetType::kAPU) |
| 275 | .value("HUAWEI_ASCEND_NPU", TargetType::kHuaweiAscendNPU) |
| 276 | .value("IMAGINATION_NNA", TargetType::kImaginationNNA) |
| 277 | .value("INTEL_FPGA", TargetType::kIntelFPGA) |
| 278 | .value("Metal", TargetType::kMetal) |
| 279 | .value("NNAdapter", TargetType::kNNAdapter); |
| 280 | |
| 281 | // PrecisionType |
| 282 | py::enum_<PrecisionType>(*m, "PrecisionType") |
| 283 | .value("Unk", PrecisionType::kUnk) |
| 284 | .value("FP32", PrecisionType::kFloat) |
| 285 | .value("INT8", PrecisionType::kInt8) |
| 286 | .value("INT32", PrecisionType::kInt32) |
| 287 | .value("Any", PrecisionType::kAny) |
| 288 | .value("FP16", PrecisionType::kFP16) |
| 289 | .value("BOOL", PrecisionType::kBool) |
| 290 | .value("INT64", PrecisionType::kInt64) |
| 291 | .value("INT16", PrecisionType::kInt16) |
| 292 | .value("UINT8", PrecisionType::kUInt8) |
| 293 | .value("FP64", PrecisionType::kFP64); |
| 294 | |
| 295 | // DataLayoutType |
| 296 | py::enum_<DataLayoutType>(*m, "DataLayoutType") |
| 297 | .value("Unk", DataLayoutType::kUnk) |
| 298 | .value("NCHW", DataLayoutType::kNCHW) |
| 299 | .value("Any", DataLayoutType::kAny) |
| 300 | .value("NHWC", DataLayoutType::kNHWC) |
| 301 | .value("ImageDefault", DataLayoutType::kImageDefault) |
| 302 | .value("ImageFolder", DataLayoutType::kImageFolder) |
| 303 | .value("ImageNW", DataLayoutType::kImageNW) |
| 304 | .value("MetalTexture2DArray", DataLayoutType::kMetalTexture2DArray) |
| 305 | .value("MetalTexture2D", DataLayoutType::kMetalTexture2D); |
| 306 | |
| 307 | // Place |
| 308 | py::class_<Place>(*m, "Place") |
| 309 | .def(py::init<TargetType, PrecisionType, DataLayoutType, int16_t>(), |
| 310 | py::arg("target"), |
| 311 | py::arg("percision") = PrecisionType::kFloat, |
| 312 | py::arg("layout") = DataLayoutType::kNCHW, |
| 313 | py::arg("device") = 0) |
| 314 | .def("is_valid", &Place::is_valid); |
| 315 | } |
| 316 | |
| 317 | void BindLiteTensor(py::module *m) { |