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