Template Class GenerationOptimizer¶
Defined in File generation_optimizer.hpp
Nested Relationships¶
Nested Types¶
Inheritance Relationships¶
Base Type¶
public sequant::Generator< MainGenerator::Context >(Template Class Generator)
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
-
inline GenerationOptimizer(MainGenerator generator)¶