Skip to content
Snippets Groups Projects
Commit fb245d4a authored by Olivier BICHLER's avatar Olivier BICHLER
Browse files

Initial commit

parent 0d33ca05
No related branches found
No related tags found
No related merge requests found
......@@ -123,6 +123,8 @@ void explicitCastMove(std::shared_ptr<GraphView> graphView);
*/
void expandMetaOps(std::shared_ptr<GraphView> graph, bool recursive = false);
void fuseToMetaOps(std::shared_ptr<GraphView> graph, const std::string& query, const std::string& name = "");
} // namespace Aidge
#endif /* AIDGE_CORE_UTILS_RECIPES_H_ */
/********************************************************************************
* Copyright (c) 2023 CEA-List
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
********************************************************************************/
#include <memory>
#include "aidge/graph/Node.hpp"
#include "aidge/graph/GraphView.hpp"
#include "aidge/operator/MetaOperator.hpp"
#include "aidge/recipes/Recipes.hpp"
//Graph Regex
#include "aidge/graphRegex/GraphRegex.hpp"
void Aidge::fuseToMetaOps(std::shared_ptr<GraphView> graphView, const std::string& query, const std::string& name) {
std::shared_ptr<GraphRegex> regex = std::make_shared<GraphRegex>();
regex->setKeyFromGraph(graphView);
regex->addQuery(query);
size_t nbReplaced = 0;
const auto matches = regex->match(graphView);
for (const auto& solution : matches) {
auto microGraph = std::make_shared<GraphView>();
microGraph->add(solution->getAll());
auto metaOp = MetaOperator(query.c_str(), microGraph, name);
const auto success = GraphView::replace(solution->getAll(), {metaOp});
if (!success) {
Log::notice("Could not replace sub-graph with meta operator");
}
else {
++nbReplaced;
}
}
Log::info("Replaced {} (out of {}) matching sub-graph with meta operators", nbReplaced, matches.size());
}
/********************************************************************************
* Copyright (c) 2023 CEA-List
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
********************************************************************************/
#include <catch2/catch_test_macros.hpp>
#include <set>
#include "aidge/data/Tensor.hpp"
#include "aidge/graph/GraphView.hpp"
#include "aidge/recipes/Recipes.hpp"
namespace Aidge {
TEST_CASE("[cpu/recipes] FuseToMetaOps", "[FuseToMetaOps][recipes]") {
}
} // namespace Aidge
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment