diff --git a/mace/core/mace.cc b/mace/core/mace.cc index efefeac06bb5ebcbe03ed7f56bc938a67453956f..2af888c02655b2953d4804ed2462103207130cad 100644 --- a/mace/core/mace.cc +++ b/mace/core/mace.cc @@ -525,6 +525,9 @@ MaceEngine::MaceEngine(const NetDef *net_def, DeviceType device_type) : MACE_CHECK(hexagon_controller_->Init(), "hexagon init error"); hexagon_controller_->SetDebugLevel( static_cast(mace::internal::LogMessage::MinVLogLevel())); + int dsp_mode = ArgumentHelper::GetSingleArgument( + *net_def, "dsp_mode", 0); + hexagon_controller_->SetGraphMode(dsp_mode); MACE_CHECK(hexagon_controller_->SetupGraph(*net_def), "hexagon setup graph error"); if (VLOG_IS_ON(2)) { diff --git a/mace/core/runtime/hexagon/hexagon_control_wrapper.cc b/mace/core/runtime/hexagon/hexagon_control_wrapper.cc index 040ef80b75f5a7f11d3e16e09b6ff8fdc0079a9b..b7d2bfdab81f681b84c789d4653737e3b4a0a2e5 100644 --- a/mace/core/runtime/hexagon/hexagon_control_wrapper.cc +++ b/mace/core/runtime/hexagon/hexagon_control_wrapper.cc @@ -180,6 +180,11 @@ void HexagonControlWrapper::SetDebugLevel(int level) { hexagon_nn_set_debug_level(nn_id_, level); } +void HexagonControlWrapper::SetGraphMode(int mode) { + LOG(INFO) << "Set dsp mode: " << mode; + hexagon_nn_set_graph_mode(nn_id_, mode); +} + void HexagonControlWrapper::GetPerfInfo() { LOG(INFO) << "Get perf info"; vector perf_info(MAX_NODE); diff --git a/mace/core/runtime/hexagon/hexagon_control_wrapper.h b/mace/core/runtime/hexagon/hexagon_control_wrapper.h index f1b0a8c01af627989959d44cf6d175543048e11e..dca04e21bc72271408d6289998952a4f537a7251 100644 --- a/mace/core/runtime/hexagon/hexagon_control_wrapper.h +++ b/mace/core/runtime/hexagon/hexagon_control_wrapper.h @@ -33,6 +33,7 @@ class HexagonControlWrapper { void GetPerfInfo(); void ResetPerfInfo(); void SetDebugLevel(int level); + void SetGraphMode(int mode); private: // CAVEAT: Need offset as HVX library reserves some ids diff --git a/mace/core/runtime/hexagon/hexagon_controller_dummy.cc b/mace/core/runtime/hexagon/hexagon_controller_dummy.cc index 6077c37314b8e2c8663be6490cbb4cb764cf293c..94eb7fe936cfecaba6b446acf53ae6b4738ca4e2 100644 --- a/mace/core/runtime/hexagon/hexagon_controller_dummy.cc +++ b/mace/core/runtime/hexagon/hexagon_controller_dummy.cc @@ -17,6 +17,7 @@ int hexagon_controller_DeInitHexagon() { __QAIC_HEADER_EXPORT int __QAIC_HEADER(hexagon_nn_config)(void) __QAIC_HEADER_ATTRIBUTE { return 0; } __QAIC_HEADER_EXPORT int __QAIC_HEADER(hexagon_nn_init)(void) __QAIC_HEADER_ATTRIBUTE { return 0; } __QAIC_HEADER_EXPORT int __QAIC_HEADER(hexagon_nn_set_debug_level)(hexagon_nn_nn_id id, int level) __QAIC_HEADER_ATTRIBUTE { return 0; } +__QAIC_HEADER_EXPORT int __QAIC_HEADER(hexagon_nn_set_graph_mode)(hexagon_nn_nn_id id, int mode) __QAIC_HEADER_ATTRIBUTE { return 0; } __QAIC_HEADER_EXPORT int __QAIC_HEADER(hexagon_nn_snpprint)(hexagon_nn_nn_id id, unsigned char* buf, int bufLen) __QAIC_HEADER_ATTRIBUTE { return 0; } __QAIC_HEADER_EXPORT int __QAIC_HEADER(hexagon_nn_getlog)(hexagon_nn_nn_id id, unsigned char* buf, int bufLen) __QAIC_HEADER_ATTRIBUTE { return 0; } __QAIC_HEADER_EXPORT int __QAIC_HEADER(hexagon_nn_append_node)(hexagon_nn_nn_id id, unsigned int node_id, unsigned int operation, hexagon_nn_padding_type padding, const hexagon_nn_input* inputs, int inputsLen, const hexagon_nn_output* outputs, int outputsLen) __QAIC_HEADER_ATTRIBUTE { return 0; } diff --git a/mace/core/runtime/hexagon/hexagon_nn.h b/mace/core/runtime/hexagon/hexagon_nn.h index acde71d98248a36b911e24c6520a638b638227e0..b2190344892ea13bf9d33dd64f49cc946800f414 100644 --- a/mace/core/runtime/hexagon/hexagon_nn.h +++ b/mace/core/runtime/hexagon/hexagon_nn.h @@ -79,6 +79,7 @@ struct hexagon_nn_tensordef { __QAIC_HEADER_EXPORT int __QAIC_HEADER(hexagon_nn_config)(void) __QAIC_HEADER_ATTRIBUTE; __QAIC_HEADER_EXPORT int __QAIC_HEADER(hexagon_nn_init)(void) __QAIC_HEADER_ATTRIBUTE; __QAIC_HEADER_EXPORT int __QAIC_HEADER(hexagon_nn_set_debug_level)(hexagon_nn_nn_id id, int level) __QAIC_HEADER_ATTRIBUTE; +__QAIC_HEADER_EXPORT int __QAIC_HEADER(hexagon_nn_set_graph_mode)(hexagon_nn_nn_id id, int mode) __QAIC_HEADER_ATTRIBUTE; __QAIC_HEADER_EXPORT int __QAIC_HEADER(hexagon_nn_snpprint)(hexagon_nn_nn_id id, unsigned char* buf, int bufLen) __QAIC_HEADER_ATTRIBUTE; __QAIC_HEADER_EXPORT int __QAIC_HEADER(hexagon_nn_getlog)(hexagon_nn_nn_id id, unsigned char* buf, int bufLen) __QAIC_HEADER_ATTRIBUTE; __QAIC_HEADER_EXPORT int __QAIC_HEADER(hexagon_nn_append_node)(hexagon_nn_nn_id id, unsigned int node_id, unsigned int operation, hexagon_nn_padding_type padding, const hexagon_nn_input* inputs, int inputsLen, const hexagon_nn_output* outputs, int outputsLen) __QAIC_HEADER_ATTRIBUTE; diff --git a/mace/core/runtime/hexagon/libhexagon_controller.so b/mace/core/runtime/hexagon/libhexagon_controller.so index 0ff470a75cf04a6f489fdc9e2113c7ea09cb35e5..9ee02ba7d5993fec5db466c7675ed8e1e9951d78 100755 Binary files a/mace/core/runtime/hexagon/libhexagon_controller.so and b/mace/core/runtime/hexagon/libhexagon_controller.so differ