Commit f85ba189 authored by Khalique Ahmed's avatar Khalique Ahmed
Browse files

Merge branch 'pointwise-nhwc' of...

Merge branch 'pointwise-nhwc' of https://github.com/ROCmSoftwarePlatform/AMDMIGraphX into nhwc_workaround
parents 122ffe97 dfbab16e
...@@ -32,7 +32,7 @@ inline namespace MIGRAPHX_INLINE_NS { ...@@ -32,7 +32,7 @@ inline namespace MIGRAPHX_INLINE_NS {
struct module; struct module;
struct preallocate_param struct MIGRAPHX_EXPORT preallocate_param
{ {
std::string param; std::string param;
allocation_model model; allocation_model model;
......
...@@ -35,7 +35,7 @@ inline namespace MIGRAPHX_INLINE_NS { ...@@ -35,7 +35,7 @@ inline namespace MIGRAPHX_INLINE_NS {
struct process_impl; struct process_impl;
struct process struct MIGRAPHX_EXPORT process
{ {
using writer = std::function<void(const char*, std::size_t)>; using writer = std::function<void(const char*, std::size_t)>;
process(const std::string& cmd); process(const std::string& cmd);
......
...@@ -54,7 +54,7 @@ struct marker; ...@@ -54,7 +54,7 @@ struct marker;
/** /**
* @brief Stores the instruction stream * @brief Stores the instruction stream
*/ */
struct program struct MIGRAPHX_EXPORT program
{ {
program(); program();
...@@ -130,8 +130,8 @@ struct program ...@@ -130,8 +130,8 @@ struct program
program& sort(); program& sort();
friend std::ostream& operator<<(std::ostream& os, const program& p); MIGRAPHX_EXPORT friend std::ostream& operator<<(std::ostream& os, const program& p);
friend bool operator==(const program& x, const program& y); MIGRAPHX_EXPORT friend bool operator==(const program& x, const program& y);
friend bool operator!=(const program& x, const program& y) { return not(x == y); } friend bool operator!=(const program& x, const program& y) { return not(x == y); }
// module related api // module related api
......
...@@ -35,7 +35,7 @@ inline namespace MIGRAPHX_INLINE_NS { ...@@ -35,7 +35,7 @@ inline namespace MIGRAPHX_INLINE_NS {
* Replace literals in submodules with literals in the root module. * Replace literals in submodules with literals in the root module.
* Intended to allow for reuse of the literals between submodules. * Intended to allow for reuse of the literals between submodules.
*/ */
struct promote_literals struct MIGRAPHX_EXPORT promote_literals
{ {
std::string name() const { return "promote_literals"; } std::string name() const { return "promote_literals"; }
void apply(module_pass_manager&) const; void apply(module_pass_manager&) const;
......
...@@ -35,7 +35,7 @@ struct module; ...@@ -35,7 +35,7 @@ struct module;
/** /**
* Replace instructions which take all literals with a literal of the computation. * Replace instructions which take all literals with a literal of the computation.
*/ */
struct propagate_constant struct MIGRAPHX_EXPORT propagate_constant
{ {
std::string name() const { return "propagate_constant"; } std::string name() const { return "propagate_constant"; }
void apply(module& m) const; void apply(module& m) const;
......
...@@ -38,12 +38,14 @@ inline namespace MIGRAPHX_INLINE_NS { ...@@ -38,12 +38,14 @@ inline namespace MIGRAPHX_INLINE_NS {
struct program; struct program;
void quantize_fp16(program& prog, const std::vector<std::string>& ins_names = {"all"}); MIGRAPHX_EXPORT void quantize_fp16(program& prog,
const std::vector<std::string>& ins_names = {"all"});
void quantize_int8(program& prog, MIGRAPHX_EXPORT void quantize_int8(program& prog,
const target& t, const target& t,
const std::vector<parameter_map>& calibration, const std::vector<parameter_map>& calibration,
const std::vector<std::string>& ins_names = {"dot", "convolution"}); const std::vector<std::string>& ins_names = {"dot",
"convolution"});
} // namespace MIGRAPHX_INLINE_NS } // namespace MIGRAPHX_INLINE_NS
} // namespace migraphx } // namespace migraphx
......
...@@ -37,7 +37,7 @@ struct module; ...@@ -37,7 +37,7 @@ struct module;
/** /**
* quantize a program to fp16 * quantize a program to fp16
*/ */
struct quantize_fp16_pass struct MIGRAPHX_EXPORT quantize_fp16_pass
{ {
std::vector<std::string> ins_names = {"all"}; std::vector<std::string> ins_names = {"all"};
std::string name() const { return "quantize_fp16"; } std::string name() const { return "quantize_fp16"; }
......
...@@ -39,7 +39,7 @@ struct module; ...@@ -39,7 +39,7 @@ struct module;
/** /**
* capture inputs of operators to be quantized to int8 * capture inputs of operators to be quantized to int8
*/ */
struct capture_arguments_pass struct MIGRAPHX_EXPORT capture_arguments_pass
{ {
std::vector<std::string> ins_names = {"dot", "convolution"}; std::vector<std::string> ins_names = {"dot", "convolution"};
std::function<void(std::size_t, std::vector<argument>)> f{}; std::function<void(std::size_t, std::vector<argument>)> f{};
...@@ -51,7 +51,7 @@ struct capture_arguments_pass ...@@ -51,7 +51,7 @@ struct capture_arguments_pass
/** /**
* quantize a program to int8 * quantize a program to int8
*/ */
struct quantize_int8_pass struct MIGRAPHX_EXPORT quantize_int8_pass
{ {
std::vector<std::string> ins_names = {"dot", "convolution"}; std::vector<std::string> ins_names = {"dot", "convolution"};
std::vector<std::pair<float, float>> quant_params; std::vector<std::pair<float, float>> quant_params;
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
namespace migraphx { namespace migraphx {
inline namespace MIGRAPHX_INLINE_NS { inline namespace MIGRAPHX_INLINE_NS {
std::vector<shape> reduce_dims(const std::vector<shape>& shapes); MIGRAPHX_EXPORT std::vector<shape> reduce_dims(const std::vector<shape>& shapes);
} // namespace MIGRAPHX_INLINE_NS } // namespace MIGRAPHX_INLINE_NS
} // namespace migraphx } // namespace migraphx
......
...@@ -34,7 +34,7 @@ namespace migraphx { ...@@ -34,7 +34,7 @@ namespace migraphx {
inline namespace MIGRAPHX_INLINE_NS { inline namespace MIGRAPHX_INLINE_NS {
// unregister all ops for specified target, useful when unloading dynamically plugged-in target lib // unregister all ops for specified target, useful when unloading dynamically plugged-in target lib
void unregister_op(const std::string& op_name); MIGRAPHX_EXPORT void unregister_op(const std::string& op_name);
namespace detail { namespace detail {
struct op_handler struct op_handler
...@@ -47,15 +47,15 @@ struct op_handler ...@@ -47,15 +47,15 @@ struct op_handler
} // namespace detail } // namespace detail
void register_op_init(); MIGRAPHX_EXPORT void register_op_init();
void register_op(const operation& op); MIGRAPHX_EXPORT void register_op(const operation& op);
operation load_op(const std::string& name); MIGRAPHX_EXPORT operation load_op(const std::string& name);
bool has_op(const std::string& name); MIGRAPHX_EXPORT bool has_op(const std::string& name);
std::vector<std::string> get_operators(); MIGRAPHX_EXPORT std::vector<std::string> get_operators();
template <class T> template <class T>
void register_op() void register_op()
......
...@@ -33,11 +33,11 @@ ...@@ -33,11 +33,11 @@
namespace migraphx { namespace migraphx {
inline namespace MIGRAPHX_INLINE_NS { inline namespace MIGRAPHX_INLINE_NS {
void register_target_init(); MIGRAPHX_EXPORT void register_target_init();
void register_target(const target& t); MIGRAPHX_EXPORT void register_target(const target& t);
void unregister_target(const std::string& name); MIGRAPHX_EXPORT void unregister_target(const std::string& name);
target make_target(const std::string& name); MIGRAPHX_EXPORT target make_target(const std::string& name);
std::vector<std::string> get_targets(); MIGRAPHX_EXPORT std::vector<std::string> get_targets();
namespace detail { namespace detail {
struct target_handler struct target_handler
......
...@@ -35,7 +35,7 @@ struct module_pass_manager; ...@@ -35,7 +35,7 @@ struct module_pass_manager;
/** /**
* Replace `allocate` instructions with target allocations or output parameters. * Replace `allocate` instructions with target allocations or output parameters.
*/ */
struct replace_allocate struct MIGRAPHX_EXPORT replace_allocate
{ {
allocation_model model; allocation_model model;
bool offload_copy = false; bool offload_copy = false;
......
...@@ -36,7 +36,7 @@ struct module; ...@@ -36,7 +36,7 @@ struct module;
/** /**
* Rewrite gelu standard formula as the sigmoid approximation formula * Rewrite gelu standard formula as the sigmoid approximation formula
*/ */
struct rewrite_gelu struct MIGRAPHX_EXPORT rewrite_gelu
{ {
std::string name() const { return "rewrite_gelu"; } std::string name() const { return "rewrite_gelu"; }
void apply(module& m) const; void apply(module& m) const;
......
...@@ -35,7 +35,7 @@ struct module; ...@@ -35,7 +35,7 @@ struct module;
/** /**
* Rewrite pooling to reduce_mean * Rewrite pooling to reduce_mean
*/ */
struct rewrite_pooling struct MIGRAPHX_EXPORT rewrite_pooling
{ {
std::string name() const { return "rewrite_pooling"; } std::string name() const { return "rewrite_pooling"; }
void apply(module& m) const; void apply(module& m) const;
......
...@@ -35,7 +35,7 @@ struct module; ...@@ -35,7 +35,7 @@ struct module;
/** /**
* Rewrite quantization ops to equivalent operators * Rewrite quantization ops to equivalent operators
*/ */
struct rewrite_quantization struct MIGRAPHX_EXPORT rewrite_quantization
{ {
std::string name() const { return "rewrite_quantization"; } std::string name() const { return "rewrite_quantization"; }
void apply(module& m) const; void apply(module& m) const;
......
...@@ -39,7 +39,7 @@ struct module; ...@@ -39,7 +39,7 @@ struct module;
/** /**
* Rewrite rnn to gemm and add. * Rewrite rnn to gemm and add.
*/ */
struct rewrite_rnn struct MIGRAPHX_EXPORT rewrite_rnn
{ {
std::string name() const { return "rewrite_rnn"; } std::string name() const { return "rewrite_rnn"; }
void apply(module& m) const; void apply(module& m) const;
......
...@@ -37,7 +37,7 @@ struct module; ...@@ -37,7 +37,7 @@ struct module;
/** /**
* Schedule instructions for concurrent execution * Schedule instructions for concurrent execution
*/ */
struct schedule struct MIGRAPHX_EXPORT schedule
{ {
schedule_model model{}; schedule_model model{};
bool enable = true; bool enable = true;
......
...@@ -63,7 +63,7 @@ struct schedule_model ...@@ -63,7 +63,7 @@ struct schedule_model
#ifdef TYPE_ERASED_DECLARATION #ifdef TYPE_ERASED_DECLARATION
// Type-erased interface for: // Type-erased interface for:
struct schedule_model struct MIGRAPHX_EXPORT schedule_model
{ {
// //
std::size_t concurrency() const; std::size_t concurrency() const;
......
...@@ -43,7 +43,7 @@ inline namespace MIGRAPHX_INLINE_NS { ...@@ -43,7 +43,7 @@ inline namespace MIGRAPHX_INLINE_NS {
struct value; struct value;
struct shape_impl; struct shape_impl;
struct shape struct MIGRAPHX_EXPORT shape
{ {
// Add new types here // Add new types here
...@@ -85,7 +85,7 @@ struct shape ...@@ -85,7 +85,7 @@ struct shape
{ {
}; };
struct dynamic_dimension struct MIGRAPHX_EXPORT dynamic_dimension
{ {
std::size_t min = 0; std::size_t min = 0;
std::size_t max = 0; std::size_t max = 0;
...@@ -100,22 +100,28 @@ struct shape ...@@ -100,22 +100,28 @@ struct shape
bool is_fixed() const; bool is_fixed() const;
bool has_optimal() const; bool has_optimal() const;
friend bool operator==(const dynamic_dimension& x, const dynamic_dimension& y); MIGRAPHX_EXPORT friend bool operator==(const dynamic_dimension& x,
friend bool operator!=(const dynamic_dimension& x, const dynamic_dimension& y); const dynamic_dimension& y);
friend std::ostream& operator<<(std::ostream& os, const dynamic_dimension& x); MIGRAPHX_EXPORT friend bool operator!=(const dynamic_dimension& x,
const dynamic_dimension& y);
MIGRAPHX_EXPORT friend std::ostream& operator<<(std::ostream& os,
const dynamic_dimension& x);
// compare to fixed std::size_t dimension // compare to fixed std::size_t dimension
friend bool operator==(const dynamic_dimension& x, const std::size_t& y); MIGRAPHX_EXPORT friend bool operator==(const dynamic_dimension& x, const std::size_t& y);
friend bool operator==(const std::size_t& x, const dynamic_dimension& y); MIGRAPHX_EXPORT friend bool operator==(const std::size_t& x, const dynamic_dimension& y);
friend bool operator!=(const dynamic_dimension& x, const std::size_t& y); MIGRAPHX_EXPORT friend bool operator!=(const dynamic_dimension& x, const std::size_t& y);
friend bool operator!=(const std::size_t& x, const dynamic_dimension& y); MIGRAPHX_EXPORT friend bool operator!=(const std::size_t& x, const dynamic_dimension& y);
// add and subtract fixed std::size_t dimension // add and subtract fixed std::size_t dimension
dynamic_dimension& operator+=(const std::size_t& x); dynamic_dimension& operator+=(const std::size_t& x);
dynamic_dimension& operator-=(const std::size_t& x); dynamic_dimension& operator-=(const std::size_t& x);
friend dynamic_dimension operator+(const dynamic_dimension& x, const std::size_t& y); MIGRAPHX_EXPORT friend dynamic_dimension operator+(const dynamic_dimension& x,
friend dynamic_dimension operator+(const std::size_t& x, const dynamic_dimension& y); const std::size_t& y);
friend dynamic_dimension operator-(const dynamic_dimension& x, const std::size_t& y); MIGRAPHX_EXPORT friend dynamic_dimension operator+(const std::size_t& x,
const dynamic_dimension& y);
MIGRAPHX_EXPORT friend dynamic_dimension operator-(const dynamic_dimension& x,
const std::size_t& y);
}; };
static const std::vector<type_t>& types(); static const std::vector<type_t>& types();
...@@ -286,9 +292,9 @@ struct shape ...@@ -286,9 +292,9 @@ struct shape
// convert the shape to a static one setting any non-fixed dynamic_dimensions to x // convert the shape to a static one setting any non-fixed dynamic_dimensions to x
shape to_static(std::size_t x) const; shape to_static(std::size_t x) const;
friend bool operator==(const shape& x, const shape& y); MIGRAPHX_EXPORT friend bool operator==(const shape& x, const shape& y);
friend bool operator!=(const shape& x, const shape& y); MIGRAPHX_EXPORT friend bool operator!=(const shape& x, const shape& y);
friend std::ostream& operator<<(std::ostream& os, const shape& x); MIGRAPHX_EXPORT friend std::ostream& operator<<(std::ostream& os, const shape& x);
template <class T> template <class T>
struct as struct as
...@@ -396,8 +402,8 @@ struct shape ...@@ -396,8 +402,8 @@ struct shape
std::shared_ptr<const shape_impl> impl; std::shared_ptr<const shape_impl> impl;
}; };
void migraphx_to_value(value& v, const shape& s); MIGRAPHX_EXPORT void migraphx_to_value(value& v, const shape& s);
void migraphx_from_value(const value& v, shape& s); MIGRAPHX_EXPORT void migraphx_from_value(const value& v, shape& s);
} // namespace MIGRAPHX_INLINE_NS } // namespace MIGRAPHX_INLINE_NS
} // namespace migraphx } // namespace migraphx
......
...@@ -35,7 +35,7 @@ struct module; ...@@ -35,7 +35,7 @@ struct module;
/** /**
* Simplify many algebraic instructions to more efficient versions. * Simplify many algebraic instructions to more efficient versions.
*/ */
struct simplify_algebra struct MIGRAPHX_EXPORT simplify_algebra
{ {
std::string name() const { return "simplify_algebra"; } std::string name() const { return "simplify_algebra"; }
void apply(module& m) const; void apply(module& m) const;
......
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