diff options
author | Michalis Spyrou <michalis.spyrou@arm.com> | 2020-05-21 15:02:36 +0100 |
---|---|---|
committer | Georgios Pinitas <georgios.pinitas@arm.com> | 2020-06-16 11:42:09 +0000 |
commit | bcd2352d7fd99a2f6aab220fa0c3b3f3119a1a4c (patch) | |
tree | a3e1880071bca828b1c58be71805ccce4b205e53 /arm_compute/runtime/CPP/CPPScheduler.h | |
parent | eae658453199d67a41deccbeb78e55b8eea9e966 (diff) | |
download | ComputeLibrary-bcd2352d7fd99a2f6aab220fa0c3b3f3119a1a4c.tar.gz |
COMPMID-3391: Implement Async interfaces
Change-Id: I8168cea5056ff48a0253ebb8c88ea549a3ea69a2
Signed-off-by: Michalis Spyrou <michalis.spyrou@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/3335
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Diffstat (limited to 'arm_compute/runtime/CPP/CPPScheduler.h')
-rw-r--r-- | arm_compute/runtime/CPP/CPPScheduler.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/arm_compute/runtime/CPP/CPPScheduler.h b/arm_compute/runtime/CPP/CPPScheduler.h index c8de41bf20..78ad43c2b4 100644 --- a/arm_compute/runtime/CPP/CPPScheduler.h +++ b/arm_compute/runtime/CPP/CPPScheduler.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2019 ARM Limited. + * Copyright (c) 2016-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -24,6 +24,7 @@ #ifndef ARM_COMPUTE_CPPSCHEDULER_H #define ARM_COMPUTE_CPPSCHEDULER_H +#include "arm_compute/core/experimental/Types.h" #include "arm_compute/runtime/IScheduler.h" #include <memory> @@ -65,6 +66,18 @@ public: * @param[in] hints Hints for the scheduler. */ void schedule(ICPPKernel *kernel, const Hints &hints) override; + /** Multithread the execution of the passed kernel if possible. + * + * The kernel will run on a single thread if any of these conditions is true: + * - ICPPKernel::is_parallelisable() returns false + * - The scheduler has been initialized with only one thread. + * + * @param[in] kernel Kernel to execute. + * @param[in] hints Hints for the scheduler. + * @param[in] inputs Vector that contains the input tensors. + * @param[in] outputs Vector that contains the output tensors. + */ + void schedule_op(ICPPKernel *kernel, const Hints &hints, std::vector<InputOperatorTensors *> &inputs, std::vector<OutputOperatorTensors *> &outputs) override; protected: /** Will run the workloads in parallel using num_threads @@ -74,6 +87,7 @@ protected: void run_workloads(std::vector<Workload> &workloads) override; private: + void schedule_common(ICPPKernel *kernel, const Hints &hints, std::vector<InputOperatorTensors *> &inputs, std::vector<OutputOperatorTensors *> &outputs); struct Impl; std::unique_ptr<Impl> _impl; }; |