1111#include < executorch/backends/qualcomm/runtime/QnnExecuTorchBackend.h>
1212#include < executorch/backends/qualcomm/runtime/QnnManager.h>
1313#include < executorch/backends/qualcomm/schema_generated.h>
14+ #include < chrono>
15+
16+ // #include <fstream>
1417namespace executorch {
1518namespace backends {
1619namespace qnn {
@@ -26,6 +29,7 @@ using executorch::runtime::MemoryAllocator;
2629using executorch::runtime::Result;
2730// ========== Public method implementations =========================
2831constexpr const char * QNN_COMPILE_SPEC = " qnn_compile_spec" ;
32+ // static int hi = 0;
2933Result<DelegateHandle*> QnnExecuTorchBackend::init (
3034 BackendInitContext& context,
3135 FreeableBuffer* processed,
@@ -36,6 +40,11 @@ Result<DelegateHandle*> QnnExecuTorchBackend::init(
3640
3741 qnn_context_blob.buffer = const_cast <void *>(processed->data ());
3842 qnn_context_blob.nbytes = processed->size ();
43+ // std::string path_ = "model_"+std::to_string(hi)+".bin";
44+ // std::ofstream fout(path_, std::ios::binary);
45+ // fout.write(static_cast<const char*>(processed->data()), static_cast<int64_t>(processed->size()));
46+ // fout.flush();
47+ // hi++;
3948
4049 // convert CompileSpec to qnn ExecuTorch option
4150 for (auto & compile_spec : compile_specs) {
@@ -180,11 +189,12 @@ Result<DelegateHandle*> QnnExecuTorchBackend::init(
180189 }
181190 return qnn_manager;
182191}
183-
192+ // static int qq = 0;
184193Error QnnExecuTorchBackend::execute (
185194 BackendExecutionContext& context,
186195 DelegateHandle* handle,
187196 EValue** args) const {
197+ auto begin = std::chrono::high_resolution_clock::now ();
188198 QnnManager* qnn_manager = static_cast <QnnManager*>(handle);
189199
190200 std::vector<std::shared_ptr<TensorWrapper>> input_tensors =
@@ -202,6 +212,14 @@ Error QnnExecuTorchBackend::execute(
202212 // update data ptr only should be fine
203213 input_tensors[i]->FillDataBuffer (
204214 args[i]->toTensor ().const_data_ptr (), false /* copy_data */ );
215+ // if(qq < input_tensors.size()){
216+ // std::string path_ = "qinput_"+std::to_string(qq)+".raw";
217+ // std::ofstream fout(path_, std::ios::binary);
218+ // fout.write(static_cast<const char*>(args[i]->toTensor().const_data_ptr()), input_tensors[i]->GetBytes());
219+ // fout.flush();
220+ // qq++;
221+ // }
222+
205223 }
206224 input_tensor_structs.push_back (input_tensors[i]->CloneTensorStruct ());
207225 }
@@ -232,7 +250,12 @@ Error QnnExecuTorchBackend::execute(
232250 qnn_manager->ProfileExecuteData (context.event_tracer ()) == Error::Ok,
233251 Internal,
234252 " Fail to profile graph" );
253+ auto end = std::chrono::high_resolution_clock::now ();
235254
255+ auto elapsed = std::chrono::duration_cast<std::chrono::microseconds>(end -
256+ begin);
257+ QNN_EXECUTORCH_LOG_INFO (
258+ " QNN Graph Execute Time in QnnExecuTorchBackend: %ld us" , elapsed.count ());
236259 return Error::Ok;
237260}
238261
0 commit comments