12 #include <flatbuffers/flexbuffers.h> 14 #include <fmt/format.h> 27 const std::string& filePath)
29 std::ifstream inputFileStream(filePath, std::ios::binary);
30 std::vector<std::uint8_t> binaryContent;
31 while (inputFileStream)
34 inputFileStream.get(input);
37 binaryContent.push_back(static_cast<std::uint8_t>(input));
40 inputFileStream.close();
47 const std::vector<uint8_t>& binaryContent)
49 if (binaryContent.data() ==
nullptr)
55 size_t binaryContentSize = binaryContent.size();
56 flatbuffers::Verifier verifier(binaryContent.data(), binaryContentSize);
57 if (verifier.VerifyBuffer<ClContext>() ==
false)
59 throw ParseException(fmt::format(
"Buffer doesn't conform to the expected Armnn " 60 "flatbuffers format. size:{0} {1}",
66 for (Program
const* program : *clContext->programs())
68 const char*
volatile programName = program->name()->c_str();
69 auto programBinary = program->binary();
70 std::vector<uint8_t> binary(programBinary->begin(), programBinary->begin() + programBinary->size());
72 cl::Program::Binaries binaries{ binary };
73 std::vector<cl::Device> devices {device};
74 cl::Program theProgram(context, devices, binaries);
76 clCompileContext.add_built_program(programName, theProgram);
Copyright (c) 2021 ARM Limited and Contributors.
void DeserializeFromBinary(arm_compute::CLCompileContext &clCompileContext, cl::Context &context, cl::Device &device, const std::vector< uint8_t > &binaryContent)
Deserializes the CLCompileContext built-in programs from binary file contents.
const armnn::ClContext * GetClContext(const void *buf)
void Deserialize(arm_compute::CLCompileContext &clCompileContext, cl::Context &context, cl::Device &device, const std::string &filePath)
Deserializes the CLCompileContext built-in programs from a binary file.