diff options
Diffstat (limited to 'src/dynamic_fusion/sketch/gpu/GpuKernelComponentGraph.cpp')
-rw-r--r-- | src/dynamic_fusion/sketch/gpu/GpuKernelComponentGraph.cpp | 51 |
1 files changed, 4 insertions, 47 deletions
diff --git a/src/dynamic_fusion/sketch/gpu/GpuKernelComponentGraph.cpp b/src/dynamic_fusion/sketch/gpu/GpuKernelComponentGraph.cpp index 669913ce30..4cf7a7fece 100644 --- a/src/dynamic_fusion/sketch/gpu/GpuKernelComponentGraph.cpp +++ b/src/dynamic_fusion/sketch/gpu/GpuKernelComponentGraph.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Arm Limited. + * Copyright (c) 2022-2023 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -31,46 +31,6 @@ namespace experimental { namespace dynamic_fusion { -namespace -{ -/** Automatically create memory descriptors for all tensors in the graph - * - * @param[in] tensors @ref ITensorInfo map - * @param[in] graph @ref DependencyGraph of which the @p tensors are a part - * - * @return MemoryDescriptorMap An assignment map of @ref MemoryDescriptors for each ITensorInfo in the graph - */ -MemoryDescriptorMap assign_memory_descriptors(const std::map<ITensorInfo::Id, const ITensorInfo *> tensors, const DependencyGraph &graph) -{ - const auto all_tensors = graph.all_tensors(); - const auto src_tensors = graph.global_src_tensors(); - const auto dst_tensors = graph.global_dst_tensors(); - const auto interm_tensors = graph.intermediate_tensors(); - - MemoryDescriptorMap mem_map{}; - for(auto t_id : all_tensors) - { - const auto &tensor = tensors.at(t_id); - // Only global src and dst tensors to the entire component graph are "User" tensors, which are user-specified memories - if(is_in(t_id, src_tensors) || is_in(t_id, dst_tensors)) - { - mem_map[t_id] = MemoryDescriptor{ MemoryType::User }; - } - else if(is_in(t_id, interm_tensors)) - { - mem_map[t_id] = MemoryDescriptor { MemoryType::NoAlloc }; - } - else - { - AuxMemoryInfo aux_mem_info{ tensor->total_size() }; - mem_map[t_id] = MemoryDescriptor{ MemoryType::Auxiliary, aux_mem_info }; - } - } - return mem_map; -} - -} // namespace - std::vector<DependencyGraph::TensorId> GpuKernelComponentGraph::get_tensor_ids(const std::vector<const ITensorInfo *> tensors) { std::vector<DependencyGraph::TensorId> tensor_ids{}; @@ -89,19 +49,16 @@ GpuKernelComponentGraph::GpuKernelComponentGraph(GpuComponentServices *services) { } -GpuKernelComponentStream GpuKernelComponentGraph::fuse() const +GpuKernelComponentStream GpuKernelComponentGraph::fuse(const MemoryDescriptorMap &mem_map) const { - // Obtain memory descriptor map - const auto mem_map = assign_memory_descriptors(_tensors, _dependency_graph); - GpuKernelComponentStream stream{ _services, mem_map }; - const auto op_seq = _dependency_graph.build_operators_sequence(); + const auto op_seq = _dependency_graph.build_operators_sequence(); stream.new_component_group(); for(auto op : op_seq) { const auto component = _components.at(op.op).get(); - const auto success = stream.add_component(component); + const auto success = stream.add_component(component); ARM_COMPUTE_ERROR_ON(!success); ARM_COMPUTE_UNUSED(success); } |