diff options
Diffstat (limited to 'applications/inference_process/src/inference_process.cpp')
-rw-r--r-- | applications/inference_process/src/inference_process.cpp | 32 |
1 files changed, 8 insertions, 24 deletions
diff --git a/applications/inference_process/src/inference_process.cpp b/applications/inference_process/src/inference_process.cpp index ebd9d6c..4c65005 100644 --- a/applications/inference_process/src/inference_process.cpp +++ b/applications/inference_process/src/inference_process.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2021 Arm Limited. All rights reserved. + * Copyright (c) 2019-2022 Arm Limited. All rights reserved. * * SPDX-License-Identifier: Apache-2.0 * @@ -100,20 +100,18 @@ char *DataPtr::end() const { return static_cast<char *>(data) + size; } -InferenceJob::InferenceJob() : numBytesToPrint(0) {} +InferenceJob::InferenceJob() : numBytesToPrint(0), externalContext(nullptr) {} InferenceJob::InferenceJob(const string &_name, const DataPtr &_networkModel, const vector<DataPtr> &_input, const vector<DataPtr> &_output, const vector<DataPtr> &_expectedOutput, - size_t _numBytesToPrint, - const vector<uint8_t> &_pmuEventConfig, - const bool _pmuCycleCounterEnable) : + const size_t _numBytesToPrint, + void *_externalContext) : name(_name), networkModel(_networkModel), input(_input), output(_output), expectedOutput(_expectedOutput), - numBytesToPrint(_numBytesToPrint), pmuEventConfig(_pmuEventConfig), pmuCycleCounterEnable(_pmuCycleCounterEnable), - pmuEventCount(), pmuCycleCounterCount(0) {} + numBytesToPrint(_numBytesToPrint), externalContext(_externalContext) {} void InferenceJob::invalidate() { networkModel.invalidate(); @@ -167,16 +165,14 @@ bool InferenceProcess::runJob(InferenceJob &job) { // Create the TFL micro interpreter tflite::AllOpsResolver resolver; -#ifdef LAYER_BY_LAYER_PROFILER - tflite::LayerByLayerProfiler profiler(job.pmuEventConfig, job.pmuCycleCounterEnable); -#else tflite::ArmProfiler profiler; -#endif - tflite::MicroErrorReporter errorReporter; tflite::MicroInterpreter interpreter( model, resolver, tensorArena, tensorArenaSize, &errorReporter, nullptr, &profiler); + // Set external context + interpreter.SetMicroExternalContext(job.externalContext); + // Allocate tensors TfLiteStatus status = interpreter.AllocateTensors(); if (status != kTfLiteOk) { @@ -196,14 +192,6 @@ bool InferenceProcess::runJob(InferenceJob &job) { return true; } -#ifdef LAYER_BY_LAYER_PROFILER - if (job.pmuCycleCounterEnable) { - job.pmuCycleCounterCount = profiler.GetPmuCycleCounterCount(); - } - - job.pmuEventCount.assign(profiler.GetPmuEventCount().begin(), profiler.GetPmuEventCount().end()); -#endif - LOG("Inference runtime: %" PRId32 " cycles\n", profiler.GetTotalTicks()); // Copy output data from TFLu arena to job descriptor @@ -333,10 +321,6 @@ bool InferenceProcess::compareOfm(InferenceJob &job, tflite::MicroInterpreter &i } void InferenceProcess::printJob(InferenceJob &job, tflite::MicroInterpreter &interpreter) { - for (size_t i = 0; i < job.pmuEventCount.size(); i++) { - LOG("ethosu_pmu_cntr%zu : %" PRIu32 "\n", i, job.pmuEventCount[i]); - } - LOG("arena_used_bytes : %zu\n", interpreter.arena_used_bytes()); // Print all of the output data, or the first NUM_BYTES_TO_PRINT bytes, |