Passes

pass

struct migraphx::internal::pass

An interface for applying a transformation to the instructions in a program

Public Functions

std::string name() const

A unique name used to identify the pass.

void apply(module_pass_manager &mpm) const

Run the pass on the module.

void apply(module &m) const
void apply(program &p) const

Run the pass on the program.

dead_code_elimination

struct migraphx::internal::dead_code_elimination

Remove instructions where the output is not used.

Public Functions

inline std::string name() const
void apply(module &m) const
void apply(program &p) const

eliminate_common_subexpression

struct migraphx::internal::eliminate_common_subexpression

Remove identical instructions.

Public Functions

inline std::string name() const
void apply(module &p) const

eliminate_concat

struct migraphx::internal::eliminate_concat

Remove concat operators by having each operator can write to different chunk of memory.

Public Functions

inline std::string name() const
void apply(module &p) const

Public Members

concat_optimization concat_opt

eliminate_contiguous

struct migraphx::internal::eliminate_contiguous

Remove contiguous instructions by checking if the operator can use non-standard shapes.

Public Functions

inline std::string name() const
void apply(module &p) const

Public Members

std::string op_name

eliminate_identity

struct migraphx::internal::eliminate_identity

Remove identity instructions. Currently when used as the last pass, it will preserve the semantics of previous program state, therefore dead code elimination should not be used afterwards.

Public Functions

inline std::string name() const
void apply(module &p) const

eliminate_pad

struct migraphx::internal::eliminate_pad

Remove pads if they can be written as an attribute to another op (im2col, convolution, pooling)

Public Functions

inline std::string name() const
void apply(module &m) const

propagate_constant

struct migraphx::internal::propagate_constant

Replace instructions which take all literals with a literal of the computation.

Public Functions

inline std::string name() const
void apply(module &p) const

rewrite_batchnorm

struct migraphx::internal::rewrite_batchnorm

Rewrite batchnorm to a multiply and add.

Public Functions

inline std::string name() const
void apply(module &p) const

rewrite_rnn

struct migraphx::internal::rewrite_rnn

Rewrite rnn to gemm and add.

Public Functions

inline std::string name() const
void apply(module &prog) const

schedule

struct migraphx::internal::schedule

Schedule instructions for concurrent execution

Public Functions

inline std::string name() const
void apply(module &p) const

Public Members

schedule_model model = {}
bool enable = true

simplify_algebra

struct migraphx::internal::simplify_algebra

Simplify many algebraic instructions to more efficient versions.

Public Functions

inline std::string name() const
void apply(module &p) const

simplify_reshapes

struct migraphx::internal::simplify_reshapes

Eliminate redundant reshapes.

Public Functions

inline std::string name() const
void apply(module &p) const