mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-07-28 20:11:22 +00:00
Work on minimizing memory management calls by reducing number of allocations and copies. Replace std::unordered_set to InlinedHashSet and add usage of InlinedVector. Employ std::move() to minimize copying and memory allocations. Remove copying of the const shared data into each of the PropagateCast transformer instances. Move inlined_containers.h header to include/common Adjust AsSpan imlementation for C++ < 17
36 lines
1.2 KiB
C++
36 lines
1.2 KiB
C++
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// Licensed under the MIT License.
|
|
|
|
#pragma once
|
|
|
|
#include "core/optimizer/graph_transformer.h"
|
|
|
|
namespace onnxruntime {
|
|
|
|
/**
|
|
@Class CommonSubexpressionElimination
|
|
Merge nodes that always evaluate to the same result.
|
|
*/
|
|
class CommonSubexpressionElimination : public GraphTransformer {
|
|
public:
|
|
CommonSubexpressionElimination(const InlinedHashSet<std::string_view>& compatible_execution_providers = {}) noexcept
|
|
: GraphTransformer("CommonSubexpressionElimination", compatible_execution_providers) {
|
|
}
|
|
|
|
Status ApplyImpl(Graph& graph, bool& modified, int graph_level, const logging::Logger& logger) const override;
|
|
};
|
|
|
|
/**
|
|
@Class CommonSubexpressionEliminationApplyOnce
|
|
Same as CommonSubexpressionElimination, but with ShouldOnlyApplyOnce.
|
|
*/
|
|
class CommonSubexpressionEliminationApplyOnce : public CommonSubexpressionElimination {
|
|
public:
|
|
CommonSubexpressionEliminationApplyOnce(const InlinedHashSet<std::string_view>& compatible_execution_providers = {}) noexcept
|
|
: CommonSubexpressionElimination(compatible_execution_providers) {
|
|
}
|
|
|
|
bool ShouldOnlyApplyOnce() const override { return true; }
|
|
};
|
|
|
|
} // namespace onnxruntime
|