Tiramisu Compiler
|
Namespaces | |
cuda_ast | |
Classes | |
class | buffer |
A class that represents buffers. More... | |
class | communicator |
class | computation |
A class that represents computations. More... | |
class | constant |
A class that represents loop invariants. More... | |
class | expr |
A class to represent tiramisu expressions. More... | |
class | function |
A class to represent functions in Tiramisu. More... | |
class | generator |
A class for code generation. More... | |
class | global |
A class that holds all the global variables necessary for Tiramisu. More... | |
struct | HalideCodegenOutput |
class | input |
class | Input |
struct | isl_ast_expr_deleter |
struct | isl_ast_node_list_deleter |
struct | isl_id_deleter |
struct | isl_val_deleter |
class | recv |
class | send |
class | send_recv |
class | sync |
A class that represents a synchronization object. More... | |
class | utility |
A class containing utility functions. More... | |
class | var |
A class that represents constant variable references. More... | |
class | view |
class | wait |
struct | xfer |
class | xfer_prop |
Typedefs | |
typedef std::tuple< int, tiramisu::expr, tiramisu::expr, tiramisu::expr > | collapse_group |
Loop level, loop start, loop end, number of elements to collapse. More... | |
typedef std::unique_ptr< isl_ast_expr, isl_ast_expr_deleter > | isl_ast_expr_ptr |
typedef std::unique_ptr< isl_id, isl_id_deleter > | isl_id_ptr |
typedef std::unique_ptr< isl_ast_node_list, isl_ast_node_list_deleter > | isl_ast_node_list_ptr |
typedef std::unique_ptr< isl_val, isl_val_deleter > | isl_val_ptr |
template<typename T > | |
using | only_integral = typename std::enable_if< std::is_integral< T >::value, expr >::type |
Enumerations |
Functions | |
HalideCodegenOutput | halide_pipeline_to_tiramisu_function (Halide::Internal::Stmt s, const std::vector< Halide::Internal::Function > &outputs, const std::map< std::string, Halide::Internal::Function > &env, const std::map< std::string, std::vector< int32_t >> &output_buffers_size, tiramisu::function *func) |
computation * | get_computation_annotated_in_a_node (isl_ast_node *node) |
std::string | generate_new_computation_name () |
isl_map * | isl_map_add_free_var (const std::string &free_var_name, isl_map *map, isl_ctx *ctx) |
void | split_string (std::string str, std::string delimiter, std::vector< std::string > &vector) |
int | loop_level_into_dynamic_dimension (int level) |
int | loop_level_into_static_dimension (int level) |
void | init (std::string name) |
Initialize the Tiramisu compiler and set Tiramisu options to default values. More... | |
void | init () |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
void | codegen (const std::vector< tiramisu::buffer * > &arguments, const std::string obj_filename, const bool gen_cuda_stmt=false) |
Generate code. More... | |
void | halide_stmt_dump (Halide::Internal::Stmt s) |
Halide::Module | lower_halide_pipeline (const std::string &pipeline_name, const Halide::Target &t, const std::vector< Halide::Argument > &args, const Halide::Internal::LoweredFunc::LinkageType linkage_type, Halide::Internal::Stmt s) |
std::string | generate_new_variable_name () |
std::string | str_from_tiramisu_type_expr (tiramisu::expr_t type) |
std::string | str_tiramisu_type_op (tiramisu::op_t type) |
std::string | str_from_tiramisu_type_primitive (tiramisu::primitive_t type) |
Halide::Expr | halide_expr_from_tiramisu_expr (const tiramisu::computation *comp, std::vector< isl_ast_expr * > &index_expr, const tiramisu::expr &tiramisu_expr) |
Convert a Tiramisu expression into a Halide expression. More... | |
template<typename cT > | |
expr | value_cast (primitive_t tT, cT val) |
Takes in a primitive value val , and returns an expression of tiramisu type tT that represents val . More... | |
expr | cast (primitive_t tT, const expr &e) |
Returns an expression that casts e to tT . More... | |
template<typename T > | |
only_integral< T > | operator+ (const tiramisu::expr &e, T val) |
template<typename T > | |
only_integral< T > | operator+ (T val, const tiramisu::expr &e) |
template<typename T > | |
only_integral< T > | operator- (const tiramisu::expr &e, T val) |
template<typename T > | |
only_integral< T > | operator- (T val, const tiramisu::expr &e) |
template<typename T > | |
only_integral< T > | operator/ (const tiramisu::expr &e, T val) |
template<typename T > | |
only_integral< T > | operator/ (T val, const tiramisu::expr &e) |
template<typename T > | |
only_integral< T > | operator* (const tiramisu::expr &e, T val) |
template<typename T > | |
only_integral< T > | operator* (T val, const tiramisu::expr &e) |
template<typename T > | |
only_integral< T > | operator% (const tiramisu::expr &e, T val) |
template<typename T > | |
only_integral< T > | operator% (T val, const tiramisu::expr &e) |
template<typename T > | |
only_integral< T > | operator>> (const tiramisu::expr &e, T val) |
template<typename T > | |
only_integral< T > | operator>> (T val, const tiramisu::expr &e) |
template<typename T > | |
only_integral< T > | operator<< (const tiramisu::expr &e, T val) |
template<typename T > | |
only_integral< T > | operator<< (T val, const tiramisu::expr &e) |
expr | memcpy (const buffer &from, const buffer &to) |
expr | allocate (const buffer &b) |
Halide::Type | halide_type_from_tiramisu_type (tiramisu::primitive_t type) |
Convert a Tiramisu type into the equivalent Halide type (if it exists), otherwise show an error message (no automatic type conversion is performed). More... | |
tiramisu::primitive_t | halide_type_to_tiramisu_type (Halide::Type type) |
Convert a Halide type into the equivalent Tiramisu type (if it exists), otherwise show an error message (no automatic type conversion is performed). More... | |
typedef std::tuple<int, tiramisu::expr, tiramisu::expr, tiramisu::expr> tiramisu::collapse_group |
typedef std::unique_ptr<isl_ast_expr, isl_ast_expr_deleter> tiramisu::isl_ast_expr_ptr |
Definition at line 42 of file cuda_ast.h.
typedef std::unique_ptr<isl_ast_node_list, isl_ast_node_list_deleter> tiramisu::isl_ast_node_list_ptr |
Definition at line 54 of file cuda_ast.h.
typedef std::unique_ptr<isl_id, isl_id_deleter> tiramisu::isl_id_ptr |
Definition at line 48 of file cuda_ast.h.
typedef std::unique_ptr<isl_val, isl_val_deleter> tiramisu::isl_val_ptr |
Definition at line 60 of file cuda_ast.h.
using tiramisu::only_integral = typedef typename std::enable_if<std::is_integral<T>::value, expr>::type |
enum tiramisu::argument_t |
enum tiramisu::expr_t |
enum tiramisu::op_t |
Types of tiramisu operators.
If the expression is of type e_op then it should have an operator type. This is the operator type.
"o_" stands for operator.
enum tiramisu::xfer_attr |
Referenced by operator<<().
expr tiramisu::cast | ( | primitive_t | tT, |
const expr & | e | ||
) |
Returns an expression that casts e
to tT
.
Referenced by value_cast().
void tiramisu::codegen | ( | const std::vector< tiramisu::buffer * > & | arguments, |
const std::string | obj_filename, | ||
const bool | gen_cuda_stmt = false |
||
) |
Generate code.
This function generates the declared function and computations in an object file. obj_filename
is the relative path of the object file to be generated. If gen_cuda_stmt
is set to true, CUDA code is generated instead of code targeting CPU (i.e., instead of generating Halide IR then LLVM IR).
std::string tiramisu::generate_new_computation_name | ( | ) |
std::string tiramisu::generate_new_variable_name | ( | ) |
computation* tiramisu::get_computation_annotated_in_a_node | ( | isl_ast_node * | node | ) |
Referenced by tiramisu::HalideCodegenOutput::HalideCodegenOutput().
Halide::Expr tiramisu::halide_expr_from_tiramisu_expr | ( | const tiramisu::computation * | comp, |
std::vector< isl_ast_expr * > & | index_expr, | ||
const tiramisu::expr & | tiramisu_expr | ||
) |
Convert a Tiramisu expression into a Halide expression.
Referenced by tiramisu::var::var().
HalideCodegenOutput tiramisu::halide_pipeline_to_tiramisu_function | ( | Halide::Internal::Stmt | s, |
const std::vector< Halide::Internal::Function > & | outputs, | ||
const std::map< std::string, Halide::Internal::Function > & | env, | ||
const std::map< std::string, std::vector< int32_t >> & | output_buffers_size, | ||
tiramisu::function * | func | ||
) |
Referenced by tiramisu::HalideCodegenOutput::HalideCodegenOutput().
void tiramisu::halide_stmt_dump | ( | Halide::Internal::Stmt | s | ) |
Halide::Type tiramisu::halide_type_from_tiramisu_type | ( | tiramisu::primitive_t | type | ) |
Convert a Tiramisu type into the equivalent Halide type (if it exists), otherwise show an error message (no automatic type conversion is performed).
tiramisu::primitive_t tiramisu::halide_type_to_tiramisu_type | ( | Halide::Type | type | ) |
Convert a Halide type into the equivalent Tiramisu type (if it exists), otherwise show an error message (no automatic type conversion is performed).
void tiramisu::init | ( | std::string | name | ) |
Initialize the Tiramisu compiler and set Tiramisu options to default values.
fct_name
is the name of the function to be generated by the Tiramisu compiler. This is the name that the user will call to execute the generated code.
void tiramisu::init | ( | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
isl_map* tiramisu::isl_map_add_free_var | ( | const std::string & | free_var_name, |
isl_map * | map, | ||
isl_ctx * | ctx | ||
) |
Referenced by tiramisu::HalideCodegenOutput::HalideCodegenOutput().
int tiramisu::loop_level_into_dynamic_dimension | ( | int | level | ) |
Referenced by tiramisu::HalideCodegenOutput::HalideCodegenOutput().
int tiramisu::loop_level_into_static_dimension | ( | int | level | ) |
Referenced by tiramisu::HalideCodegenOutput::HalideCodegenOutput().
Halide::Module tiramisu::lower_halide_pipeline | ( | const std::string & | pipeline_name, |
const Halide::Target & | t, | ||
const std::vector< Halide::Argument > & | args, | ||
const Halide::Internal::LoweredFunc::LinkageType | linkage_type, | ||
Halide::Internal::Stmt | s | ||
) |
Referenced by operator<<().
only_integral<T> tiramisu::operator% | ( | const tiramisu::expr & | e, |
T | val | ||
) |
Definition at line 1895 of file expr.h.
Referenced by tiramisu::expr::is_equal().
only_integral<T> tiramisu::operator% | ( | T | val, |
const tiramisu::expr & | e | ||
) |
only_integral<T> tiramisu::operator* | ( | const tiramisu::expr & | e, |
T | val | ||
) |
Definition at line 1883 of file expr.h.
References tiramisu::expr::get_data_type(), and value_cast().
Referenced by tiramisu::expr::is_equal().
only_integral<T> tiramisu::operator* | ( | T | val, |
const tiramisu::expr & | e | ||
) |
Definition at line 1889 of file expr.h.
References tiramisu::expr::get_data_type(), and value_cast().
only_integral<T> tiramisu::operator+ | ( | const tiramisu::expr & | e, |
T | val | ||
) |
Definition at line 1847 of file expr.h.
References tiramisu::expr::get_data_type(), and value_cast().
Referenced by tiramisu::expr::is_equal().
only_integral<T> tiramisu::operator+ | ( | T | val, |
const tiramisu::expr & | e | ||
) |
Definition at line 1853 of file expr.h.
References tiramisu::expr::get_data_type(), and value_cast().
only_integral<T> tiramisu::operator- | ( | const tiramisu::expr & | e, |
T | val | ||
) |
Definition at line 1859 of file expr.h.
References tiramisu::expr::get_data_type(), and value_cast().
Referenced by tiramisu::expr::is_equal().
only_integral<T> tiramisu::operator- | ( | T | val, |
const tiramisu::expr & | e | ||
) |
Definition at line 1865 of file expr.h.
References tiramisu::expr::get_data_type(), and value_cast().
only_integral<T> tiramisu::operator/ | ( | const tiramisu::expr & | e, |
T | val | ||
) |
Definition at line 1871 of file expr.h.
Referenced by tiramisu::expr::is_equal().
only_integral<T> tiramisu::operator/ | ( | T | val, |
const tiramisu::expr & | e | ||
) |
only_integral<T> tiramisu::operator<< | ( | const tiramisu::expr & | e, |
T | val | ||
) |
Definition at line 1919 of file expr.h.
Referenced by tiramisu::expr::is_equal().
only_integral<T> tiramisu::operator<< | ( | T | val, |
const tiramisu::expr & | e | ||
) |
Definition at line 1925 of file expr.h.
References allocate(), and memcpy().
only_integral<T> tiramisu::operator>> | ( | const tiramisu::expr & | e, |
T | val | ||
) |
Definition at line 1907 of file expr.h.
Referenced by tiramisu::expr::is_equal().
only_integral<T> tiramisu::operator>> | ( | T | val, |
const tiramisu::expr & | e | ||
) |
void tiramisu::split_string | ( | std::string | str, |
std::string | delimiter, | ||
std::vector< std::string > & | vector | ||
) |
Referenced by tiramisu::HalideCodegenOutput::HalideCodegenOutput().
std::string tiramisu::str_from_tiramisu_type_expr | ( | tiramisu::expr_t | type | ) |
Referenced by tiramisu::expr::dump().
std::string tiramisu::str_from_tiramisu_type_primitive | ( | tiramisu::primitive_t | type | ) |
Referenced by tiramisu::expr::dump().
std::string tiramisu::str_tiramisu_type_op | ( | tiramisu::op_t | type | ) |
Referenced by tiramisu::expr::dump().
expr tiramisu::value_cast | ( | primitive_t | tT, |
cT | val | ||
) |
Takes in a primitive value val
, and returns an expression of tiramisu type tT
that represents val
.
Definition at line 1809 of file expr.h.
References cast(), p_float32, p_float64, p_int16, p_int32, p_int64, p_int8, p_uint16, p_uint32, p_uint64, and p_uint8.
Referenced by operator*(), operator+(), and operator-().