Graph Framework
Loading...
Searching...
No Matches
graph::variable_node< T, SAFE_MATH > Class Template Referencefinal

Class representing data that can change. More...

#include <node.hpp>

Inheritance diagram for graph::variable_node< T, SAFE_MATH >:
graph::leaf_node< T, SAFE_MATH >

Public Member Functions

 variable_node (const size_t s, const std::string &symbol)
 Construct a variable node with a size.
 
 variable_node (const size_t s, const T d, const std::string &symbol)
 Construct a variable node from a scalar.
 
 variable_node (const std::vector< T > &d, const std::string &symbol)
 Construct a variable node from a vector.
 
 variable_node (const backend::buffer< T > &d, const std::string &symbol)
 Construct a variable node from backend buffer.
 
virtual backend::buffer< T > evaluate ()
 Evaluate method.
 
virtual shared_leaf< T, SAFE_MATHreduce ()
 Reduction method.
 
virtual shared_leaf< T, SAFE_MATHdf (shared_leaf< T, SAFE_MATH > x)
 Transform node to derivative.
 
virtual void compile_preamble (std::ostringstream &stream, jit::register_map &registers, jit::visiter_map &visited, jit::register_usage &usage, jit::texture1d_list &textures1d, jit::texture2d_list &textures2d, int &avail_const_mem)
 Compile preamble.
 
virtual shared_leaf< T, SAFE_MATHcompile (std::ostringstream &stream, jit::register_map &registers, jit::register_map &indices, const jit::register_usage &usage)
 Compile the node.
 
virtual void set (const T d)
 Set the value of variable data.
 
virtual void set (const size_t index, const T d)
 Set the value of variable data.
 
virtual void set (const std::vector< T > &d)
 Set the value of variable data.
 
virtual void set (const backend::buffer< T > &d)
 Set the value of variable data.
 
std::string get_symbol () const
 Get Symbol.
 
virtual void to_latex () const
 Convert the node to latex.
 
virtual shared_leaf< T, SAFE_MATHto_vizgraph (std::stringstream &stream, jit::register_map &registers)
 Convert the node to vizgraph.
 
size_t size ()
 Get the size of the variable buffer.
 
T * data ()
 Get a pointer to raw buffer.
 
virtual bool is_all_variables () const
 Test if node acts like a variable.
 
virtual bool is_power_like () const
 Test if the node acts like a power of variable.
 
virtual shared_leaf< T, SAFE_MATHget_power_base ()
 Get the base of a power.
 
virtual shared_leaf< T, SAFE_MATHget_power_exponent () const
 Get the exponent of a power.
 
- Public Member Functions inherited from graph::leaf_node< T, SAFE_MATH >
 leaf_node (const std::string s, const size_t count, const bool pseudo)
 Construct a basic node.
 
virtual ~leaf_node ()
 Destructor.
 
virtual std::shared_ptr< leaf_node< T, SAFE_MATH > > df (std::shared_ptr< leaf_node< T, SAFE_MATH > > x)=0
 Transform node to derivative.
 
virtual bool is_match (std::shared_ptr< leaf_node< T, SAFE_MATH > > x)
 Querey if the nodes match.
 
bool is_power_base_match (std::shared_ptr< leaf_node< T, SAFE_MATH > > x)
 Check if the base of the powers match.
 
virtual bool is_constant () const
 Test if node is a constant.
 
virtual bool has_constant_zero () const
 Test the constant node has a zero.
 
bool is_normal ()
 Test if the result is normal.
 
size_t get_hash () const
 Get the hash for the node.
 
size_t get_complexity () const
 Get the number of nodes in the subgraph.
 
virtual bool has_pseudo () const
 Query if the node contains pseudo variables.
 
virtual std::shared_ptr< leaf_node< T, SAFE_MATH > > remove_pseudo ()
 Remove pseudo variable nodes.
 
virtual void endline (std::ostringstream &stream, const jit::register_usage &usage) const final
 End a line in the kernel source.
 

Additional Inherited Members

- Public Types inherited from graph::leaf_node< T, SAFE_MATH >
typedefbase
 Type def to retrieve the backend type.
 
- Static Public Attributes inherited from graph::leaf_node< T, SAFE_MATH >
static thread_local caches_t caches
 A per thread instance of the cache structure.
 
- Protected Attributes inherited from graph::leaf_node< T, SAFE_MATH >
const size_t hash
 Hash for node.
 
const size_t complexity
 Graph complexity.
 
std::map< size_t, std::shared_ptr< leaf_node< T, SAFE_MATH > > > df_cache
 Cache derivative terms.
 
const bool contains_pseudo
 Node contains pseudo variables.
 

Detailed Description

template<jit::float_scalar T, bool SAFE_MATH = false>
class graph::variable_node< T, SAFE_MATH >

Class representing data that can change.

Template Parameters
TBase type of the calculation.
SAFE_MATHUse Safe Math operations.

Constructor & Destructor Documentation

◆ variable_node() [1/4]

template<jit::float_scalar T, bool SAFE_MATH = false>
graph::variable_node< T, SAFE_MATH >::variable_node ( const size_t  s,
const std::string &  symbol 
)
inline

Construct a variable node with a size.

Parameters
[in]sSize of the data buffer.
[in]symbolSymbol of the variable used in equations.

◆ variable_node() [2/4]

template<jit::float_scalar T, bool SAFE_MATH = false>
graph::variable_node< T, SAFE_MATH >::variable_node ( const size_t  s,
const d,
const std::string &  symbol 
)
inline

Construct a variable node from a scalar.

Parameters
[in]sSize of he data buffer.
[in]dScalar data to initalize.
[in]symbolSymbol of the variable used in equations.

◆ variable_node() [3/4]

template<jit::float_scalar T, bool SAFE_MATH = false>
graph::variable_node< T, SAFE_MATH >::variable_node ( const std::vector< T > &  d,
const std::string &  symbol 
)
inline

Construct a variable node from a vector.

Parameters
[in]dArray buffer.
[in]symbolSymbol of the variable used in equations.

◆ variable_node() [4/4]

template<jit::float_scalar T, bool SAFE_MATH = false>
graph::variable_node< T, SAFE_MATH >::variable_node ( const backend::buffer< T > &  d,
const std::string &  symbol 
)
inline

Construct a variable node from backend buffer.

Parameters
[in]dBackend buffer.
[in]symbolSymbol of the variable used in equations.

Member Function Documentation

◆ compile()

template<jit::float_scalar T, bool SAFE_MATH = false>
virtual shared_leaf< T, SAFE_MATH > graph::variable_node< T, SAFE_MATH >::compile ( std::ostringstream &  stream,
jit::register_map registers,
jit::register_map indices,
const jit::register_usage usage 
)
inlinevirtual

Compile the node.

Parameters
[in,out]streamString buffer stream.
[in,out]registersList of defined registers.
[in,out]indicesList of defined indices.
[in]usageList of register usage count.
Returns
The current node.

Implements graph::leaf_node< T, SAFE_MATH >.

◆ compile_preamble()

template<jit::float_scalar T, bool SAFE_MATH = false>
virtual void graph::variable_node< T, SAFE_MATH >::compile_preamble ( std::ostringstream &  stream,
jit::register_map registers,
jit::visiter_map visited,
jit::register_usage usage,
jit::texture1d_list textures1d,
jit::texture2d_list textures2d,
int avail_const_mem 
)
inlinevirtual

Compile preamble.

Some nodes require additions to the preamble however most don't so define a generic method that does nothing.

Parameters
[in,out]streamString buffer stream.
[in,out]registersList of defined registers.
[in,out]visitedList of visited nodes.
[in,out]usageList of register usage count.
[in,out]textures1dList of 1D textures.
[in,out]textures2dList of 2D textures.
[in,out]avail_const_memAvailable constant memory.

Reimplemented from graph::leaf_node< T, SAFE_MATH >.

◆ data()

template<jit::float_scalar T, bool SAFE_MATH = false>
T * graph::variable_node< T, SAFE_MATH >::data ( )
inline

Get a pointer to raw buffer.

Returns
A buffer to the underlying data.

◆ df()

template<jit::float_scalar T, bool SAFE_MATH = false>
virtual shared_leaf< T, SAFE_MATH > graph::variable_node< T, SAFE_MATH >::df ( shared_leaf< T, SAFE_MATH x)
inlinevirtual

Transform node to derivative.

Parameters
[in]xThe variable to take the derivative to.
Returns
The derivative of the node.

◆ evaluate()

template<jit::float_scalar T, bool SAFE_MATH = false>
virtual backend::buffer< T > graph::variable_node< T, SAFE_MATH >::evaluate ( )
inlinevirtual

Evaluate method.

Returns
The evaluated value of the node.

Implements graph::leaf_node< T, SAFE_MATH >.

◆ get_power_base()

template<jit::float_scalar T, bool SAFE_MATH = false>
virtual shared_leaf< T, SAFE_MATH > graph::variable_node< T, SAFE_MATH >::get_power_base ( )
inlinevirtual

Get the base of a power.

Returns
The base of a power like node.

Reimplemented from graph::leaf_node< T, SAFE_MATH >.

◆ get_power_exponent()

template<jit::float_scalar T, bool SAFE_MATH = false>
virtual shared_leaf< T, SAFE_MATH > graph::variable_node< T, SAFE_MATH >::get_power_exponent ( ) const
inlinevirtual

Get the exponent of a power.

Returns
The exponent of a power like node.

Implements graph::leaf_node< T, SAFE_MATH >.

◆ is_all_variables()

template<jit::float_scalar T, bool SAFE_MATH = false>
virtual bool graph::variable_node< T, SAFE_MATH >::is_all_variables ( ) const
inlinevirtual

Test if node acts like a variable.

Returns
True if the node acts like a variable.

Implements graph::leaf_node< T, SAFE_MATH >.

◆ is_power_like()

template<jit::float_scalar T, bool SAFE_MATH = false>
virtual bool graph::variable_node< T, SAFE_MATH >::is_power_like ( ) const
inlinevirtual

Test if the node acts like a power of variable.

Returns
True.

Reimplemented from graph::leaf_node< T, SAFE_MATH >.

◆ reduce()

template<jit::float_scalar T, bool SAFE_MATH = false>
virtual shared_leaf< T, SAFE_MATH > graph::variable_node< T, SAFE_MATH >::reduce ( )
inlinevirtual

Reduction method.

For basic nodes, there's nothing to reduce.

Returns
A reduced representation of the node.

Implements graph::leaf_node< T, SAFE_MATH >.

◆ set() [1/4]

template<jit::float_scalar T, bool SAFE_MATH = false>
virtual void graph::variable_node< T, SAFE_MATH >::set ( const backend::buffer< T > &  d)
inlinevirtual

Set the value of variable data.

Parameters
[in]dVector data to set.

Reimplemented from graph::leaf_node< T, SAFE_MATH >.

◆ set() [2/4]

template<jit::float_scalar T, bool SAFE_MATH = false>
virtual void graph::variable_node< T, SAFE_MATH >::set ( const size_t  index,
const d 
)
inlinevirtual

Set the value of variable data.

Parameters
[in]indexIndex to place the value at.
[in]dScalar data to set.

Reimplemented from graph::leaf_node< T, SAFE_MATH >.

◆ set() [3/4]

template<jit::float_scalar T, bool SAFE_MATH = false>
virtual void graph::variable_node< T, SAFE_MATH >::set ( const std::vector< T > &  d)
inlinevirtual

Set the value of variable data.

Parameters
[in]dVector data to set.

Reimplemented from graph::leaf_node< T, SAFE_MATH >.

◆ set() [4/4]

template<jit::float_scalar T, bool SAFE_MATH = false>
virtual void graph::variable_node< T, SAFE_MATH >::set ( const d)
inlinevirtual

Set the value of variable data.

Parameters
[in]dScalar data to set.

Reimplemented from graph::leaf_node< T, SAFE_MATH >.

◆ to_latex()

template<jit::float_scalar T, bool SAFE_MATH = false>
virtual void graph::variable_node< T, SAFE_MATH >::to_latex ( ) const
inlinevirtual

Convert the node to latex.

Implements graph::leaf_node< T, SAFE_MATH >.

◆ to_vizgraph()

template<jit::float_scalar T, bool SAFE_MATH = false>
virtual shared_leaf< T, SAFE_MATH > graph::variable_node< T, SAFE_MATH >::to_vizgraph ( std::stringstream &  stream,
jit::register_map registers 
)
inlinevirtual

Convert the node to vizgraph.

Parameters
[in,out]streamString buffer stream.
[in,out]registersList of defined registers.
Returns
The current node.

Implements graph::leaf_node< T, SAFE_MATH >.


The documentation for this class was generated from the following file: