Commit 2e01a4fc authored by mei-ye's avatar mei-ye
Browse files

staging

parent dd33a45f
...@@ -4,8 +4,8 @@ add_library(migraph ...@@ -4,8 +4,8 @@ add_library(migraph
generate.cpp generate.cpp
program.cpp program.cpp
shape.cpp shape.cpp
opt/dfs.cpp
opt/optimize.cpp opt/optimize.cpp
opt/memory_coloring.cpp
) )
rocm_clang_tidy_check(migraph) rocm_clang_tidy_check(migraph)
target_include_directories(migraph PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>) target_include_directories(migraph PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
......
...@@ -82,6 +82,8 @@ struct program ...@@ -82,6 +82,8 @@ struct program
void compile(const target& t); void compile(const target& t);
int get_size() const;
friend std::ostream& operator<<(std::ostream& os, const program& p); friend std::ostream& operator<<(std::ostream& os, const program& p);
friend bool operator==(const program& x, const program& y); friend bool operator==(const program& x, const program& y);
friend bool operator!=(const program& x, const program& y) { return !(x == y); } friend bool operator!=(const program& x, const program& y) { return !(x == y); }
......
#ifndef MIGRAPH_GUARD_RTGLIB_COMMON_HEADER_HPP
#define MIGRAPH_GUARD_RTGLIB_COMMON_HEADER_HPP
#include <migraph/program.hpp>
#include <migraph/instruction.hpp>
#include <migraph/operators.hpp>
#include <migraph/iterator_for.hpp>
#endif
#include "memory_coloring.hpp"
namespace migraph {
void memory_coloring::run()
{
}
} // namespsace migraph
#ifndef MIGRAPH_GUARD_RTGLIB_MEMORY_COLORING_HPP
#define MIGRAPH_GUARD_RTGLIB_MEMORY_COLORING_HPP
#include "common_header.hpp"
namespace migraph {
struct memory_coloring {
explicit memory_coloring(program *p) : p_program(p) {}
void run();
private:
program* p_program;
};
} // namespace migraph
#endif
#include <migraph/optimize.hpp> #include <migraph/optimize.hpp>
#include <migraph/program.hpp> #include "memory_coloring.hpp"
#include <migraph/instruction.hpp>
#include <migraph/operators.hpp>
#include <migraph/iterator_for.hpp>
namespace migraph { namespace migraph {
void optimize::apply(program &p) const void optimize::apply(program &p) const
{ {
std::cout << p << std::endl; std::cout << p << std::endl;
for(auto ins : iterator_for(p)) { memory_coloring opt(&p);
opt.run();
int ins_enum = p.get_size();
if (ins_enum == 0)
return;
instruction_ref iter_ins = std::prev(p.end());
instruction_ref first_ins = p.begin();
do {
iter_ins = std::prev(iter_ins);
} } while (iter_ins != first_ins);
} }
} // namespace migraph } // namespace migraph
...@@ -191,6 +191,11 @@ argument program::eval(std::unordered_map<std::string, argument> params) const ...@@ -191,6 +191,11 @@ argument program::eval(std::unordered_map<std::string, argument> params) const
return result; return result;
} }
int program::get_size() const
{
return (*impl).instructions.size();
}
bool operator==(const program& x, const program& y) { return to_string(x) == to_string(y); } bool operator==(const program& x, const program& y) { return to_string(x) == to_string(y); }
std::ostream& operator<<(std::ostream& os, const program& p) std::ostream& operator<<(std::ostream& os, const program& p)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment