diff options
author | Murray Kornelsen <murray.kornelsen@mail.mcgill.ca> | 2022-07-13 20:43:15 -0400 |
---|---|---|
committer | Pablo Marquez Tello <pablo.tello@arm.com> | 2022-09-01 11:16:55 +0000 |
commit | cd083cf70fed41858407d1f7e082f760a2dbe87a (patch) | |
tree | c4e1bcfa8ebd4668bc35c77247135f2f1920f3c1 /src/runtime | |
parent | a331e48ad8a4856837cf0afdd44de69af43581af (diff) | |
download | ComputeLibrary-cd083cf70fed41858407d1f7e082f760a2dbe87a.tar.gz |
Use parent buffer in CLSubTensor. This avoids calling enqueueMapBuffer repeatedly when mapping multiple children of the same parent.
Signed-off-by: Murray Kornelsen <murray.kornelsen@mail.mcgill.ca>
Change-Id: I7ff554915a37320dfd94f15a6fb01a72a235cf39
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/7920
Reviewed-by: Gunes Bayir <gunes.bayir@arm.com>
Reviewed-by: Pablo Marquez Tello <pablo.tello@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Benchmark: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/runtime')
-rw-r--r-- | src/runtime/CL/CLSubTensor.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/runtime/CL/CLSubTensor.cpp b/src/runtime/CL/CLSubTensor.cpp index d0822414c3..14936ae23c 100644 --- a/src/runtime/CL/CLSubTensor.cpp +++ b/src/runtime/CL/CLSubTensor.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Arm Limited. + * Copyright (c) 2017-2019, 2022 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -81,11 +81,15 @@ void CLSubTensor::unmap() uint8_t *CLSubTensor::do_map(cl::CommandQueue &q, bool blocking) { ARM_COMPUTE_ERROR_ON(cl_buffer().get() == nullptr); - return static_cast<uint8_t *>(q.enqueueMapBuffer(cl_buffer(), blocking ? CL_TRUE : CL_FALSE, CL_MAP_READ | CL_MAP_WRITE, 0, info()->total_size())); + if(_parent->buffer() == nullptr) + { + _parent->map(q, blocking); + } + return _parent->buffer(); } void CLSubTensor::do_unmap(cl::CommandQueue &q) { ARM_COMPUTE_ERROR_ON(cl_buffer().get() == nullptr); - q.enqueueUnmapMemObject(cl_buffer(), buffer()); + _parent->unmap(q); } |