NEML2 2.0.0
All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
neml2::utils Namespace Reference

Functions

template<>
bool parse_ (bool &val, const std::string &raw_str)
 
template<>
bool parse_vector_ (std::vector< bool > &vals, const std::string &raw_str)
 
template<>
bool parse_ (VariableName &val, const std::string &raw_str)
 
template<>
bool parse_ (TensorShape &val, const std::string &raw_str)
 
template<>
Device parse (const std::string &raw_str)
 
template<>
bool parse_ (Device &val, const std::string &raw_str)
 
TraceableTensorShape extract_batch_sizes (const ATensor &tensor, Size batch_dim)
 Extract the batch shape of a tensor given batch dimension The extracted batch shape will be traceable.
 
std::shared_ptr< jit::Graph > last_executed_optimized_graph ()
 Print last evaluated optimized graph.
 
std::string demangle (const char *name)
 Demangle a piece of cxx abi type information.
 
std::string join (const std::vector< std::string > &strs, const std::string &delim)
 
std::vector< std::string > split (const std::string &str, const std::string &delims)
 
std::string trim (const std::string &str, const std::string &white_space)
 
bool start_with (std::string_view str, std::string_view prefix)
 
bool end_with (std::string_view str, std::string_view suffix)
 
Size storage_size (TensorShapeRef shape)
 The flattened storage size of a tensor with given shape.
 
TensorShape pad_prepend (TensorShapeRef s, Size dim, Size pad=1)
 Pad shape s to dimension dim by prepending sizes of pad.
 
ATensor pad_prepend (const ATensor &s, Size dim, Size pad)
 
TraceableTensorShape broadcast_batch_sizes (const std::vector< Tensor > &tensors)
 Find the broadcast batch shape of all the tensors The returned batch shape will be traceable.
 
template<typename T>
std::string parse_failure_message (const std::string &raw_str)
 
template<typename T>
bool parse_ (T &val, const std::string &raw_str)
 
template<typename T>
parse (const std::string &raw_str)
 
template<typename T>
bool parse_vector_ (std::vector< T > &vals, const std::string &raw_str)
 
template<typename T>
std::vector< T > parse_vector (const std::string &raw_str)
 
template<typename T>
bool parse_vector_vector_ (std::vector< std::vector< T > > &vals, const std::string &raw_str)
 
template<typename T>
std::vector< std::vector< T > > parse_vector_vector (const std::string &raw_str)
 
template<>
bool parse_< bool > (bool &, const std::string &raw_str)
 
template<>
bool parse_vector_< bool > (std::vector< bool > &, const std::string &raw_str)
 This special one is for the evil std::vector<bool>!
 
template<>
bool parse_< TensorShape > (TensorShape &, const std::string &raw_str)
 
template<>
bool parse_< VariableName > (VariableName &, const std::string &raw_str)
 
template<>
Device parse< Device > (const std::string &raw_str)
 
template<>
bool parse_< Device > (Device &, const std::string &raw_str)
 
template<typename... S>
TraceableTensorShape add_traceable_shapes (const S &... shape)
 
template<typename T, typename... Args>
void stream_all (std::ostringstream &ss, T &&val, Args &&... args)
 
template<typename T>
std::string stringify (const T &t)
 
template<>
std::string stringify (const bool &t)
 
template<class... T>
bool broadcastable (const T &... tensors)
 
template<class... T>
bool batch_broadcastable (const T &... tensors)
 
template<class... T>
bool base_broadcastable (const T &... tensors)
 
template<class... T>
Size broadcast_batch_dim (const T &...)
 The batch dimension after broadcasting.
 
template<class... T>
bool sizes_same (T &&... shapes)
 Check if all shapes are the same.
 
template<class... T>
bool sizes_broadcastable (const T &... shapes)
 Check if the shapes are broadcastable.
 
template<class... T>
TensorShape broadcast_sizes (const T &... shapes)
 Return the broadcast shape of all the shapes.
 
template<typename... S>
TensorShape add_shapes (const S &...)
 
template<class... T>
Size broadcast_batch_dim (const T &... tensor)
 
template<typename... S>
TensorShape add_shapes (const S &... shape)
 

Function Documentation

◆ add_shapes() [1/2]

template<typename... S>
TensorShape add_shapes ( const S &... shape)

◆ add_shapes() [2/2]

template<typename... S>
TensorShape add_shapes ( const S & ...)

◆ add_traceable_shapes()

template<typename... S>
TraceableTensorShape add_traceable_shapes ( const S &... shape)

◆ base_broadcastable()

template<class... T>
bool base_broadcastable ( const T &... tensors)

Test if the tensors are base-broadcastable.

See also
sizes_broadcastable

◆ batch_broadcastable()

template<class... T>
bool batch_broadcastable ( const T &... tensors)

Test if the tensors are batch-broadcastable.

See also
sizes_broadcastable

◆ broadcast_batch_dim() [1/2]

template<class... T>
Size broadcast_batch_dim ( const T &... tensor)

◆ broadcast_batch_dim() [2/2]

template<class... T>
Size broadcast_batch_dim ( const T & ...)

The batch dimension after broadcasting.

This should be as simple as the maximum batch_dim() among all arguments.

◆ broadcast_batch_sizes()

TraceableTensorShape broadcast_batch_sizes ( const std::vector< Tensor > & tensors)

Find the broadcast batch shape of all the tensors The returned batch shape will be traceable.

See also
neml2::TraceableTensorShape

Pre-pad ones to the shapes

Braodcast

◆ broadcast_sizes()

template<class... T>
TensorShape broadcast_sizes ( const T &... shapes)

Return the broadcast shape of all the shapes.

◆ broadcastable()

template<class... T>
bool broadcastable ( const T &... tensors)

Two tensors are said to be broadcastable if

  1. Base shapes are the same
  2. Batch shapes are broadcastable (see sizes_broadcastable)

◆ demangle()

std::string demangle ( const char * name)

Demangle a piece of cxx abi type information.

◆ end_with()

bool end_with ( std::string_view str,
std::string_view suffix )

◆ extract_batch_sizes()

TraceableTensorShape extract_batch_sizes ( const ATensor & tensor,
Size batch_dim )

Extract the batch shape of a tensor given batch dimension The extracted batch shape will be traceable.

See also
neml2::TraceableTensorShape

◆ join()

std::string join ( const std::vector< std::string > & strs,
const std::string & delim )

◆ last_executed_optimized_graph()

std::shared_ptr< jit::Graph > last_executed_optimized_graph ( )

Print last evaluated optimized graph.

◆ pad_prepend() [1/2]

ATensor pad_prepend ( const ATensor & s,
Size dim,
Size pad )

◆ pad_prepend() [2/2]

TensorShape pad_prepend ( TensorShapeRef s,
Size dim,
Size pad = 1 )

Pad shape s to dimension dim by prepending sizes of pad.

Parameters
sThe original shape to pad
dimThe resulting dimension
padThe values used to pad the shape, default to 1
Returns
TensorShape The padded shape with dimension dim

◆ parse() [1/2]

template<typename T>
T parse ( const std::string & raw_str)

◆ parse() [2/2]

template<>
Device parse ( const std::string & raw_str)

◆ parse< Device >()

template<>
Device parse< Device > ( const std::string & raw_str)

◆ parse_() [1/5]

template<>
bool parse_ ( bool & val,
const std::string & raw_str )

◆ parse_() [2/5]

template<>
bool parse_ ( Device & val,
const std::string & raw_str )

◆ parse_() [3/5]

template<typename T>
bool parse_ ( T & val,
const std::string & raw_str )

◆ parse_() [4/5]

template<>
bool parse_ ( TensorShape & val,
const std::string & raw_str )

◆ parse_() [5/5]

template<>
bool parse_ ( VariableName & val,
const std::string & raw_str )

◆ parse_< bool >()

template<>
bool parse_< bool > ( bool & ,
const std::string & raw_str )

◆ parse_< Device >()

template<>
bool parse_< Device > ( Device & ,
const std::string & raw_str )

◆ parse_< TensorShape >()

template<>
bool parse_< TensorShape > ( TensorShape & ,
const std::string & raw_str )

◆ parse_< VariableName >()

template<>
bool parse_< VariableName > ( VariableName & ,
const std::string & raw_str )

◆ parse_failure_message()

template<typename T>
std::string parse_failure_message ( const std::string & raw_str)

◆ parse_vector()

template<typename T>
std::vector< T > parse_vector ( const std::string & raw_str)

◆ parse_vector_() [1/2]

template<>
bool parse_vector_ ( std::vector< bool > & vals,
const std::string & raw_str )

◆ parse_vector_() [2/2]

template<typename T>
bool parse_vector_ ( std::vector< T > & vals,
const std::string & raw_str )

◆ parse_vector_< bool >()

template<>
bool parse_vector_< bool > ( std::vector< bool > & ,
const std::string & raw_str )

This special one is for the evil std::vector<bool>!

◆ parse_vector_vector()

template<typename T>
std::vector< std::vector< T > > parse_vector_vector ( const std::string & raw_str)

◆ parse_vector_vector_()

template<typename T>
bool parse_vector_vector_ ( std::vector< std::vector< T > > & vals,
const std::string & raw_str )

◆ sizes_broadcastable()

template<class... T>
bool sizes_broadcastable ( const T &... shapes)

Check if the shapes are broadcastable.

Shapes are said to be broadcastable if, starting from the trailing dimension and iterating backward, the dimension sizes either are equal, one of them is 1, or one of them does not exist.

◆ sizes_same()

template<class... T>
bool sizes_same ( T &&... shapes)

Check if all shapes are the same.

◆ split()

std::vector< std::string > split ( const std::string & str,
const std::string & delims )

◆ start_with()

bool start_with ( std::string_view str,
std::string_view prefix )

◆ storage_size()

Size storage_size ( TensorShapeRef shape)

The flattened storage size of a tensor with given shape.

For example,

storage_size({}) == 1;
storage_size({0}) == 0;
storage_size({1}) == 1;
storage_size({1, 2, 3}) == 6;
storage_size({5, 1, 1}) == 5;
Size storage_size(TensorShapeRef shape)
The flattened storage size of a tensor with given shape.
Definition shape_utils.cxx:30

◆ stream_all()

template<typename T, typename... Args>
void stream_all ( std::ostringstream & ss,
T && val,
Args &&... args )

◆ stringify() [1/2]

template<>
std::string stringify ( const bool & t)
inline

◆ stringify() [2/2]

template<typename T>
std::string stringify ( const T & t)

◆ trim()

std::string trim ( const std::string & str,
const std::string & white_space )