diff --git a/schedulers/tetrisched/CMakeLists.txt b/schedulers/tetrisched/CMakeLists.txt index b9eee3e9..52b2e749 100644 --- a/schedulers/tetrisched/CMakeLists.txt +++ b/schedulers/tetrisched/CMakeLists.txt @@ -100,7 +100,8 @@ set(TETRISCHED_SOURCE "src/Expression.cpp" "src/Partition.cpp" "src/SolverModel.cpp" - "src/Scheduler.cpp") + "src/Scheduler.cpp" + "src/OptimizationPasses.cpp") if (EXISTS "${CPLEX_DIR}") LIST(APPEND TETRISCHED_SOURCE "src/CPLEXSolver.cpp") @@ -125,7 +126,8 @@ target_link_libraries(tetrisched PRIVATE ${SOLVER_BACKEND_LINK_LIBRARIES}) set(TETRISCHED_TESTS "test/test_expression.cpp" "test/test_partitions.cpp" - "test/test_solver.cpp") + "test/test_solver.cpp" + "test/test_optimization.cpp") add_executable(test_tetrisched ${TETRISCHED_TESTS}) target_include_directories(test_tetrisched PRIVATE include) diff --git a/schedulers/tetrisched/include/tetrisched/OptimizationPasses.hpp b/schedulers/tetrisched/include/tetrisched/OptimizationPasses.hpp new file mode 100644 index 00000000..e77d2595 --- /dev/null +++ b/schedulers/tetrisched/include/tetrisched/OptimizationPasses.hpp @@ -0,0 +1,30 @@ +#ifndef _TETRISCHED_OPTIMIZATION_PASSES_HPP_ +#define _TETRISCHED_OPTIMIZATION_PASSES_HPP_ + +#include + +#include "tetrisched/Expression.hpp" + +namespace tetrisched { +class OptimizationPass { + /// A representative name of the optimization pass. + std::string name; + + public: + /// Construct the base OptimizationPass class. + OptimizationPass(std::string name); + + /// Run the pass on the given STRL expression. + virtual void runPass(ExpressionPtr strlExpression) = 0; +}; + +class CriticalPathOptimizationPass : public OptimizationPass { + public: + /// Instantiate the Critical Path optimization pass. + CriticalPathOptimizationPass(); + + /// Run the Critical Path optimization pass on the given STRL expression. + void runPass(ExpressionPtr strlExpression) override; +}; +} // namespace tetrisched +#endif // _TETRISCHED_OPTIMIZATION_PASSES_HPP_ diff --git a/schedulers/tetrisched/src/OptimizationPasses.cpp b/schedulers/tetrisched/src/OptimizationPasses.cpp new file mode 100644 index 00000000..cc00c109 --- /dev/null +++ b/schedulers/tetrisched/src/OptimizationPasses.cpp @@ -0,0 +1,15 @@ +#include "tetrisched/OptimizationPasses.hpp" + +namespace tetrisched { + +/* Methods for OptimizationPass */ +OptimizationPass::OptimizationPass(std::string name) : name(name) {} + +/* Methods for CriticalPathOptimizationPass */ +CriticalPathOptimizationPass::CriticalPathOptimizationPass() + : OptimizationPass("CriticalPathOptimizationPass") {} + +void CriticalPathOptimizationPass::runPass(ExpressionPtr strlExpression) { + // TODO (Sukrit): Implement this. +} +} diff --git a/schedulers/tetrisched/test/test_optimization.cpp b/schedulers/tetrisched/test/test_optimization.cpp new file mode 100644 index 00000000..42c3c1ed --- /dev/null +++ b/schedulers/tetrisched/test/test_optimization.cpp @@ -0,0 +1,8 @@ +#include + +#include "tetrisched/OptimizationPasses.hpp" + +TEST(OptimizationTest, TestBasicCriticalPathOptimizationPass) { + // Create an OptimizationPass object. + tetrisched::CriticalPathOptimizationPass optimizationPass(); +}