MCPcopy Create free account
hub / github.com/ARM-software/ComputeLibrary / program

Method program

src/gpu/cl/ClKernelLibrary.cpp:1009–1058  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1007}
1008
1009ClKernelLibrary::ClProgramInfo ClKernelLibrary::program(const std::string &program_name) const
1010{
1011#ifdef EMBEDDED_KERNELS
1012#ifdef ARM_COMPUTE_COMPRESSED_KERNELS
1013 const auto inflatted_program_source_it = _decompressed_source_map.find(program_name);
1014 if (inflatted_program_source_it != _decompressed_source_map.end())
1015 {
1016 return ClProgramInfo{inflatted_program_source_it->second, false};
1017 }
1018#endif /* ARM_COMPUTE_COMPRESSED_KERNELS */
1019
1020 const auto program_source_it = _program_source_map.find(program_name);
1021 if (program_source_it == _program_source_map.end())
1022 {
1023 ARM_COMPUTE_ERROR_VAR("Embedded program for %s does not exist.", program_name.c_str());
1024 }
1025 std::string program_source = program_source_it->second;
1026
1027#ifdef ARM_COMPUTE_COMPRESSED_KERNELS
1028 std::string decompressed_program_source = decompress_zlib(decode_base64(program_source_it->second));
1029 ARM_COMPUTE_ERROR_ON_MSG(decompressed_program_source.empty(), "Cannot de-compress requested program");
1030 _decompressed_source_map.insert(std::make_pair(program_name, decompressed_program_source));
1031 program_source = std::move(decompressed_program_source);
1032#endif /* ARM_COMPUTE_COMPRESSED_KERNELS */
1033
1034 return ClProgramInfo{program_source, false};
1035#else /* EMBEDDED_KERNELS */
1036 // Check for binary
1037 std::string source_name = _kernel_path + program_name;
1038 std::string binary_name = source_name + "bin";
1039 std::string program_source{};
1040 bool is_binary = false;
1041
1042 if (std::ifstream(binary_name).is_open())
1043 {
1044 program_source = read_file(binary_name, true);
1045 is_binary = true;
1046 }
1047 else if (std::ifstream(source_name).is_open())
1048 {
1049 program_source = read_file(source_name, false);
1050 }
1051 else
1052 {
1053 ARM_COMPUTE_ERROR_VAR("Kernel file %s does not exist.", source_name.c_str());
1054 }
1055
1056 return ClProgramInfo{program_source, is_binary};
1057#endif /* EMBEDDED_KERNELS */
1058}
1059} // namespace opencl
1060} // namespace arm_compute

Callers 3

create_kernelMethod · 0.80
get_programMethod · 0.80
create_kernelFunction · 0.80

Calls 7

decompress_zlibFunction · 0.85
decode_base64Function · 0.85
findMethod · 0.80
read_fileFunction · 0.50
endMethod · 0.45
emptyMethod · 0.45
is_openMethod · 0.45

Tested by

no test coverage detected