xref: /aosp_15_r20/external/armnn/src/backends/cl/ClBackendModelContext.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker //
5*89c4ff92SAndroid Build Coastguard Worker #pragma once
6*89c4ff92SAndroid Build Coastguard Worker 
7*89c4ff92SAndroid Build Coastguard Worker #include <armnn/backends/IBackendContext.hpp>
8*89c4ff92SAndroid Build Coastguard Worker 
9*89c4ff92SAndroid Build Coastguard Worker #include<string>
10*89c4ff92SAndroid Build Coastguard Worker 
11*89c4ff92SAndroid Build Coastguard Worker namespace armnn
12*89c4ff92SAndroid Build Coastguard Worker {
13*89c4ff92SAndroid Build Coastguard Worker 
14*89c4ff92SAndroid Build Coastguard Worker /// The ClBackendModelContext is used to pass in CL specific backend ModelOptions. The supported backend ModelOptions
15*89c4ff92SAndroid Build Coastguard Worker /// are:
16*89c4ff92SAndroid Build Coastguard Worker ///  - "FastMathEnabled"\n
17*89c4ff92SAndroid Build Coastguard Worker ///    Using the fast_math flag can lead to performance improvements in fp32 and fp16 layers but may result in\n
18*89c4ff92SAndroid Build Coastguard Worker ///    results with reduced or different precision. The fast_math flag will not have any effect on int8 performance.
19*89c4ff92SAndroid Build Coastguard Worker ///  - "SaveCachedNetwork"\n
20*89c4ff92SAndroid Build Coastguard Worker ///    Using the save_cached_network flag enables saving the cached network\n
21*89c4ff92SAndroid Build Coastguard Worker ///    to a file given with the cached_network_file_path option.
22*89c4ff92SAndroid Build Coastguard Worker ///  - "CachedNetworkFilePath"\n
23*89c4ff92SAndroid Build Coastguard Worker ///    If the cached_network_file_path is a valid file and the save_cached_network flag is present\n
24*89c4ff92SAndroid Build Coastguard Worker ///    then the cached network will be saved to the given file.\n
25*89c4ff92SAndroid Build Coastguard Worker ///    If the cached_network_file_path is a valid file and the save_cached_network flag is not present\n
26*89c4ff92SAndroid Build Coastguard Worker ///    then the cached network will be loaded from the given file.\n
27*89c4ff92SAndroid Build Coastguard Worker ///    This will remove the time taken for initial compilation of kernels and speed up the first execution.
28*89c4ff92SAndroid Build Coastguard Worker class ClBackendModelContext : public IBackendModelContext
29*89c4ff92SAndroid Build Coastguard Worker {
30*89c4ff92SAndroid Build Coastguard Worker public:
31*89c4ff92SAndroid Build Coastguard Worker     ClBackendModelContext(const ModelOptions& modelOptions);
32*89c4ff92SAndroid Build Coastguard Worker 
33*89c4ff92SAndroid Build Coastguard Worker     std::string GetCachedNetworkFilePath() const;
34*89c4ff92SAndroid Build Coastguard Worker 
35*89c4ff92SAndroid Build Coastguard Worker     bool IsFastMathEnabled() const;
36*89c4ff92SAndroid Build Coastguard Worker 
37*89c4ff92SAndroid Build Coastguard Worker     bool SaveCachedNetwork() const;
38*89c4ff92SAndroid Build Coastguard Worker 
39*89c4ff92SAndroid Build Coastguard Worker     int GetCachedFileDescriptor() const;
40*89c4ff92SAndroid Build Coastguard Worker 
41*89c4ff92SAndroid Build Coastguard Worker private:
42*89c4ff92SAndroid Build Coastguard Worker     std::string m_CachedNetworkFilePath;
43*89c4ff92SAndroid Build Coastguard Worker     bool m_IsFastMathEnabled;
44*89c4ff92SAndroid Build Coastguard Worker     bool m_SaveCachedNetwork;
45*89c4ff92SAndroid Build Coastguard Worker     int m_CachedFileDescriptor;
46*89c4ff92SAndroid Build Coastguard Worker 
47*89c4ff92SAndroid Build Coastguard Worker };
48*89c4ff92SAndroid Build Coastguard Worker 
49*89c4ff92SAndroid Build Coastguard Worker } // namespace armnn