Template Class GenerationOptimizer

Nested Relationships

Nested Types

Inheritance Relationships

Base Type

Class Documentation

template<typename MainGenerator, typename MainContext = MainGenerator::Context>
class GenerationOptimizer : public sequant::Generator<MainGenerator::Context>

Wrapper for other Generators that will perform optimizations on received actions before passing them along to the wrapped generator for actual code generation.

Public Functions

inline GenerationOptimizer(MainGenerator generator)
inline virtual std::string get_format_name() const override
Returns:

The name of the format this generator will produce (i.e. the name of the programming language and/or framework)

inline void create(const Tensor &tensor, bool zero_init, const MainContext&) override
inline void load(const Tensor &tensor, bool set_to_zero, const MainContext&) override
inline void set_to_zero(const Tensor &tensor, const MainContext&) override
inline void unload(const Tensor &tensor, const MainContext&) override
inline void destroy(const Tensor &tensor, const MainContext&) override
inline void persist(const Tensor &tensor, const MainContext&) override
inline void create(const Variable &variable, bool zero_init, const MainContext&) override
inline void load(const Variable &variable, bool set_to_zero, const MainContext&) override
inline void set_to_zero(const Variable &variable, const MainContext&) override
inline void unload(const Variable &variable, const MainContext&) override
inline void destroy(const Variable &variable, const MainContext&) override
inline void persist(const Variable &variable, const MainContext&) override
inline void compute(const Expr &expression, const Tensor &result, const MainContext&) override
inline void compute(const Expr &expression, const Variable &result, const MainContext&) override
inline void end_expression(const MainContext &ctx) override
inline void end_export(const MainContext &ctx) override
inline virtual bool supports_named_sections() const override
Returns:

Whether this generator supports named sections

inline virtual bool requires_named_sections() const override
Returns:

Whether this generator requires names (that is, it can’t deal with code outside of named sections)

inline virtual DeclarationScope index_declaration_scope() const override
Returns:

The scope at which this generator would like declare indices

inline virtual DeclarationScope variable_declaration_scope() const override
Returns:

The scope at which this generator would like declare variables

inline virtual DeclarationScope tensor_declaration_scope() const override
Returns:

The scope at which this generator would like declare tensors

inline virtual PrunableScalars prunable_scalars() const override
Returns:

What kinds of scalars may be pruned from the expression tree in order to avoid binary computation steps for them. Instead, all pruned scalars will be multiplied with whatever binary expression remains after pruning. This means that scalar pruning may lead to non-binary expressions that need to be exported by this generator.

inline std::string represent(const Index &idx, const MainContext &ctx) const override
inline std::string represent(const Tensor &tensor, const MainContext &ctx) const override
inline std::string represent(const Variable &variable, const MainContext &ctx) const override
inline std::string represent(const Constant &constant, const MainContext &ctx) const override
inline void declare(const Index &idx, const MainContext &ctx) override
inline void declare(const Variable &variable, UsageSet usage, const MainContext &ctx) override
inline void declare(const Tensor &tensor, UsageSet usage, const MainContext &ctx) override
inline void all_indices_declared(std::size_t amount, const MainContext &ctx) override
inline void all_variables_declared(std::size_t amount, const MainContext &ctx) override
inline void all_tensors_declared(std::size_t amount, const MainContext &ctx) override
inline void begin_declarations(DeclarationScope scope, const MainContext &ctx) override
inline void end_declarations(DeclarationScope scope, const MainContext &ctx) override
inline void insert_comment(const std::string &comment, const MainContext &ctx) override
inline void begin_named_section(std::string_view name, const MainContext &ctx) override
inline void end_named_section(std::string_view name, const MainContext &ctx) override
inline void begin_expression(const MainContext &ctx) override
inline void begin_export(const MainContext &ctx) override
inline virtual std::string get_generated_code() const override
Returns:

The generated code that corresponds to all semantic actions encountered during the current export