diff options
author | Georgios Pinitas <georgios.pinitas@arm.com> | 2021-01-22 05:47:37 +0000 |
---|---|---|
committer | Georgios Pinitas <georgios.pinitas@arm.com> | 2021-02-01 16:51:44 +0000 |
commit | ea857273d8b4a94fb7f1e63ce9068a60259fb9d3 (patch) | |
tree | e4d7a90f28d4ba4d218e77343c107afa137d7cec /arm_compute/core/CL/CLKernelLibrary.h | |
parent | 655e8c6334580a570008243af1896d269fdd60ad (diff) | |
download | ComputeLibrary-ea857273d8b4a94fb7f1e63ce9068a60259fb9d3.tar.gz |
Compress OpenCL kernel files using zlib for Android
Kernel files are embedded into the binary as the default option when
building which leads to binary size bloating.
Add `compress_kernels` option and utilize zlib for further compressing
the text kernel files and reduce the overall binary size. We use a
base64 encoding/decoding to ensure that the strings can be easily
embedded. This adds to the binary size but still the overall reduction
is significant.
Maximum compression level 9 is used.
Option is currently restricted to Android builds as android toolchain
provides a zlib library.
Initial experimentations indicate a binary size reduction of 50%
Resolves: COMPMID-4017
Signed-off-by: Georgios Pinitas <georgios.pinitas@arm.com>
Change-Id: Iee81b8c00391b26a5f41642699692928a4d6bd6e
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/4958
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Gian Marco Iodice <gianmarco.iodice@arm.com>
Diffstat (limited to 'arm_compute/core/CL/CLKernelLibrary.h')
-rw-r--r-- | arm_compute/core/CL/CLKernelLibrary.h | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/arm_compute/core/CL/CLKernelLibrary.h b/arm_compute/core/CL/CLKernelLibrary.h index caab78dc18..193389388e 100644 --- a/arm_compute/core/CL/CLKernelLibrary.h +++ b/arm_compute/core/CL/CLKernelLibrary.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2020 Arm Limited. + * Copyright (c) 2016-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -164,10 +164,11 @@ public: CLCompileContext &get_compile_context(); private: - CLCompileContext _compile_context; /**< Compile Context. */ - std::string _kernel_path; /**< Path to the kernels folder. */ - static const std::map<std::string, std::string> _kernel_program_map; /**< Map that associates kernel names with programs. */ - static const std::map<std::string, std::string> _program_source_map; /**< Contains sources for all programs. + CLCompileContext _compile_context; /**< Compile Context. */ + std::string _kernel_path; /**< Path to the kernels folder. */ + mutable std::map<std::string, std::string> _decompressed_source_map; /**< Map holding the decompressed files when compression is used */ + static const std::map<std::string, std::string> _kernel_program_map; /**< Map that associates kernel names with programs. */ + static const std::map<std::string, std::string> _program_source_map; /**< Contains sources for all programs. Used for compile-time kernel inclusion. >*/ }; } // namespace arm_compute |