aboutsummaryrefslogtreecommitdiff
path: root/applications/inference_process/src/inference_process.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'applications/inference_process/src/inference_process.cpp')
-rw-r--r--applications/inference_process/src/inference_process.cpp32
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,