Automatic Differentiation
 
Loading...
Searching...
No Matches
stan::math::operation_cl_lhs< Derived, Scalar, Args > Class Template Reference

Detailed Description

template<typename Derived, typename Scalar, typename... Args>
class stan::math::operation_cl_lhs< Derived, Scalar, Args >

Base for all kernel generator operations that can be used on left hand side of an expression.

Template Parameters
Derivedderived type
Scalarscalar type of the result
Argstypes of arguments to this operation

Definition at line 27 of file operation_cl_lhs.hpp.

#include <operation_cl_lhs.hpp>

+ Inheritance diagram for stan::math::operation_cl_lhs< Derived, Scalar, Args >:

Public Types

using Deriv = Derived
 
using ArgsTuple = std::tuple< Args... >
 
using view_transitivity = std::tuple< std::is_same< Args, void >... >
 

Public Member Functions

kernel_parts get_kernel_parts_lhs (std::unordered_map< const void *, const char * > &generated, std::unordered_map< const void *, const char * > &generated_all, name_generator &name_gen, const std::string &row_index_name, const std::string &col_index_name) const
 Generates kernel code for this expression if it appears on the left hand side of an assignment.
 
kernel_parts generate_lhs (const std::string &row_index_name, const std::string &col_index_name, const std::string &var_name_arg) const
 Generates kernel code for this and nested expressions if this expression appears on the left hand side of an assignment.
 
template<typename T_expression , typename = require_all_kernel_expressions_and_none_scalar_t<T_expression>>
Derived & operator= (T_expression &&rhs)
 Evaluates an expression and assigns it to this.
 
const operation_cl_lhs< Derived, Scalar, Args... > & operator= (const operation_cl_lhs< Derived, Scalar, Args... > &rhs) const
 
void set_view (int bottom_diagonal, int top_diagonal, int bottom_zero_diagonal, int top_zero_diagonal) const
 Sets the view of the underlying matrix depending on which of its parts are written to.
 
void check_assign_dimensions (int rows, int cols) const
 Sets the dimensions of the underlying expressions if possible.
 
void add_write_event (cl::Event &e) const
 Adds write event to any matrices used by nested expressions.
 
void get_clear_read_write_events (std::vector< cl::Event > &events) const
 Adds all read and write events on any matrices used by nested expressions to a list and clears them from those matrices.
 
Derived & derived ()
 Casts the instance into its derived type.
 
const Derived & derived () const
 Casts the instance into its derived type.
 
const auto & get_arg () const
 Returns an argument to this operation.
 
matrix_cl< Scalar > eval () const
 Evaluates the expression.
 
void evaluate_into (T_lhs &lhs) const
 Evaluates this expression into given left-hand-side expression.
 
std::string get_kernel_source_for_evaluating_into (const T_lhs &lhs) const
 Generates kernel source for evaluating this expression into given left-hand-side expression.
 
kernel_parts get_whole_kernel_parts (std::unordered_map< const void *, const char * > &generated, std::unordered_map< const void *, const char * > &generated_all, name_generator &ng, const std::string &row_index_name, const std::string &col_index_name, const T_result &result) const
 Generates kernel code for assigning this expression into result expression.
 
kernel_parts get_kernel_parts (std::unordered_map< const void *, const char * > &generated, std::unordered_map< const void *, const char * > &generated_all, name_generator &name_gen, const std::string &row_index_name, const std::string &col_index_name, bool view_handled) const
 Generates kernel code for this and nested expressions.
 
kernel_parts generate (const std::string &row_index_name, const std::string &col_index_name, const bool view_handled, const std::string &var_name_arg) const
 Generates kernel code for this expression.
 
void modify_argument_indices (std::string &row_index_name, std::string &col_index_name) const
 Does nothing.
 
void set_args (std::unordered_map< const void *, const char * > &generated, std::unordered_map< const void *, const char * > &generated_all, cl::Kernel &kernel, int &arg_num) const
 Sets kernel arguments for nested expressions.
 
void add_read_event (cl::Event &e) const
 Adds read event to any matrices used by nested expressions.
 
void get_write_events (std::vector< cl::Event > &events) const
 Adds all write events on any matrices used by nested expressions to a list.
 
int rows () const
 Number of rows of a matrix that would be the result of evaluating this expression.
 
int cols () const
 Number of columns of a matrix that would be the result of evaluating this expression.
 
int size () const
 Size of a matrix that would be the result of evaluating this expression.
 
int thread_rows () const
 Number of rows threads need to be launched for.
 
int thread_cols () const
 Number of columns threads need to be launched for.
 
std::pair< int, int > extreme_diagonals () const
 Determine indices of extreme sub- and superdiagonals written.
 
matrix_cl_view view () const
 View of a matrix that would be the result of evaluating this expression.
 
void get_unique_matrix_accesses (std::vector< int > &uids, std::unordered_map< const void *, int > &id_map, int &next_id) const
 Collects data that is needed beside types to uniqly identify a kernel generator expression.
 

Static Public Attributes

static const bool require_specific_local_size
 
static constexpr int dynamic
 

Protected Types

using base = operation_cl< Derived, Scalar, Args... >
 

Protected Attributes

std::tuple< Args... > arguments_
 
std::string var_name_
 

Static Protected Attributes

static constexpr int N = sizeof...(Args)
 

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