aboutsummaryrefslogtreecommitdiff
path: root/src/dynamic_fusion/sketch/gpu/GpuKernelComponentGraph.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/dynamic_fusion/sketch/gpu/GpuKernelComponentGraph.cpp')
-rw-r--r--src/dynamic_fusion/sketch/gpu/GpuKernelComponentGraph.cpp51
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);
}