| 501 | } |
| 502 | |
| 503 | int LITE_set_finish_callback_with_userdata( |
| 504 | LiteNetwork network, const LiteFinishCallbackWithData finish_callback, |
| 505 | void* user_data) { |
| 506 | LITE_CAPI_BEGIN(); |
| 507 | LITE_ASSERT(network, "The network pass to LITE api is null"); |
| 508 | auto lite_finish_callback = |
| 509 | [finish_callback, |
| 510 | user_data](const std::unordered_map< |
| 511 | std::string, |
| 512 | std::pair<lite::IO, std::shared_ptr<lite::Tensor>>>& |
| 513 | outputs_map) -> void { |
| 514 | std::vector<LiteIO> ios; |
| 515 | std::vector<LiteTensor> io_tensors; |
| 516 | size_t nr_io = 0; |
| 517 | for (const auto& io : outputs_map) { |
| 518 | nr_io++; |
| 519 | auto&& lite_io = io.second.first; |
| 520 | ios.push_back( |
| 521 | {lite_io.name.c_str(), lite_io.is_host, lite_io.io_type, |
| 522 | convert_to_clayout(lite_io.config_layout)}); |
| 523 | io_tensors.push_back(io.second.second.get()); |
| 524 | } |
| 525 | finish_callback(ios.data(), io_tensors.data(), nr_io, user_data); |
| 526 | }; |
| 527 | static_cast<lite::Network*>(network)->set_finish_callback(lite_finish_callback); |
| 528 | LITE_CAPI_END(); |
| 529 | } |
| 530 | |
| 531 | int LITE_enable_profile_performance( |
| 532 | LiteNetwork network, const char* profile_json_file_path) { |