MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / AddProgram

Method AddProgram

tensorflow/lite/delegates/gpu/gl/serialization.cc:325–376  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

323}
324
325void SerializedCompiledModelBuilder::AddProgram(
326 const std::vector<Variable>& parameters, const std::vector<Object>& objects,
327 const uint3& workgroup_size, const uint3& num_workgroups,
328 size_t shader_index) {
329 Offset<data::Uint3> fb_workgroups = Encode(num_workgroups, &builder_);
330 Offset<data::Uint3> fb_workgroup_size = Encode(workgroup_size, &builder_);
331
332 Offset<Vector<Offset<data::UniformParameter>>> fb_params;
333 {
334 std::vector<Offset<data::UniformParameter>> offsets;
335 for (const Variable& param : parameters) {
336 auto name = builder_.CreateString(param.name);
337 auto data = absl::visit(ParameterValueGetter{&builder_}, param.value);
338 data::UniformParameterBuilder builder(builder_);
339 builder.add_name(name);
340 builder.add_data_type(absl::visit(DataVariantTypeGetter{}, param.value));
341 builder.add_data(data);
342 builder.add_type(absl::visit(ParameterTypeGetter{}, param.value));
343 offsets.push_back(builder.Finish());
344 }
345 fb_params = builder_.CreateVector(offsets);
346 }
347
348 Offset<Vector<Offset<data::Object>>> fb_objects;
349 {
350 std::vector<Offset<data::Object>> offsets;
351 for (const Object& object : objects) {
352 auto object_variant = absl::visit(ObjectGetter{&builder_}, object.object);
353 auto size = absl::visit(ObjectSizeGetter{&builder_}, object.size);
354
355 data::ObjectBuilder builder(builder_);
356 builder.add_access(ToFB(object.access));
357 builder.add_binding(object.binding);
358 builder.add_type(ToFB(object.object_type));
359 builder.add_data_type(ToFB(object.data_type));
360 builder.add_size_type(absl::visit(ObjectSizeTypeGetter{}, object.size));
361 builder.add_size(size);
362 builder.add_object_type(absl::visit(ObjectTypeGetter{}, object.object));
363 builder.add_object(object_variant);
364 offsets.push_back(builder.Finish());
365 }
366 fb_objects = builder_.CreateVector(offsets);
367 }
368
369 data::ProgramBuilder program_builder(builder_);
370 program_builder.add_number_workgroups(fb_workgroups);
371 program_builder.add_workgroup_size(fb_workgroup_size);
372 program_builder.add_parameters(fb_params);
373 program_builder.add_objects(fb_objects);
374 program_builder.add_shader_index(shader_index);
375 programs_.push_back(program_builder.Finish());
376}
377
378absl::Span<const uint8_t> SerializedCompiledModelBuilder::Finalize(
379 const CompiledModelOptions& options) {

Callers

nothing calls this directly

Calls 11

ToFBFunction · 0.85
add_dataMethod · 0.80
CreateVectorMethod · 0.80
add_objectMethod · 0.80
add_parametersMethod · 0.80
EncodeFunction · 0.70
visitFunction · 0.50
add_nameMethod · 0.45
add_typeMethod · 0.45
push_backMethod · 0.45
FinishMethod · 0.45

Tested by

no test coverage detected