From ffc9798dc56f33c24e306d61d737f21ec832282a Mon Sep 17 00:00:00 2001 From: quic-zhanweiw <150764245+quic-zhanweiw@users.noreply.github.com> Date: Mon, 16 Sep 2024 17:12:01 +0800 Subject: [PATCH] Update QnnSampleApp.cpp Signed-off-by: quic-zhanweiw <150764245+quic-zhanweiw@users.noreply.github.com> --- src/QnnSampleApp.cpp | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/src/QnnSampleApp.cpp b/src/QnnSampleApp.cpp index 3d2fb1e..b1ea1ef 100644 --- a/src/QnnSampleApp.cpp +++ b/src/QnnSampleApp.cpp @@ -1,4 +1,4 @@ -//============================================================================== +//============================================================================== // // Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved. // @@ -817,6 +817,32 @@ sample_app::StatusCode sample_app::QnnSampleApp::executeGraphs() { return returnStatus; } +// #define DEBUG_INFERENCE 1 +#ifdef DEBUG_INFERENCE + +#define BUFSIZE (256) + +void bufferToFile(std::vector& buffers, std::vector& size, std::string& data_name) { + char data_path[BUFSIZE]; + + QNN_DEBUG("Dump input data, input count = %d", size.size()); + + for (int i = 0; i < size.size(); i++) { + QNN_DEBUG("Dump input data, size = %d", size[i]); + + sprintf_s(data_path, BUFSIZE, data_name.c_str(), i); + std::ofstream os(data_path, std::ofstream::binary); + if (!os) { + QNN_ERR("Failed to open file for writing: %s", data_path); + } + else { + os.write(reinterpret_cast(&(*(buffers[i]))), size[i]); + } + os.close(); + } +} +#endif + sample_app::StatusCode sample_app::QnnSampleApp::executeGraphsBuffers(std::vector& inputBuffers, std::vector& outputBuffers, std::vector& outputSize, std::string perfProfile) { @@ -863,6 +889,13 @@ sample_app::StatusCode sample_app::QnnSampleApp::executeGraphsBuffers(std::vecto returnStatus = StatusCode::FAILURE; } +#ifdef DEBUG_INFERENCE + std::vector inputSize; + m_ioTensor.getTensorsSize(&inputs, (*m_graphsInfo)[graphIdx].numInputTensors, (*m_graphsInfo)[graphIdx].inputTensors, inputSize); + std::string data_name = "input_%d.raw"; + bufferToFile(inputBuffers, inputSize, data_name); +#endif + if (StatusCode::SUCCESS == returnStatus) { QNN_DEBUG("Successfully populated input tensors for graphIdx: %d", graphIdx); Qnn_ErrorHandle_t executeStatus = QNN_GRAPH_NO_ERROR; @@ -948,6 +981,11 @@ sample_app::StatusCode sample_app::QnnSampleApp::executeGraphsBuffers(std::vecto } } // QNN_ERROR("output buffer size: %d\n", outputBuffers.size()); + +#ifdef DEBUG_INFERENCE + std::string data_name = "output_%d.raw"; + bufferToFile(outputBuffers, outputSize, data_name); +#endif } } if (StatusCode::SUCCESS != returnStatus) {