Psi4
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
psi::psimrcc::CCOperation Class Reference

#include <operation.h>

Public Member Functions

 CCOperation (double in_factor, std::string in_assignment, std::string in_reindexing, std::string in_operation, CCMatrix *in_A_Matrix, CCMatrix *in_B_Matrix, CCMatrix *in_C_Matrix, double *work, double *buffer)
 
 ~CCOperation ()
 
double get_factor ()
 
std::string get_assignment ()
 
std::string get_reindexing ()
 
std::string get_operation ()
 
CCMatrixget_A_Matrix ()
 
CCMatrixget_B_Matrix ()
 
CCMatrixget_C_Matrix ()
 
void print ()
 
void print_operation ()
 
void compute ()
 

Static Public Member Functions

static void print_timing ()
 

Private Member Functions

bool compatible_dot ()
 
bool compatible_contract ()
 
bool compatible_element_by_element ()
 
void fail_to_compute ()
 
void add_numerical_factor ()
 
void contract ()
 
void dot_product ()
 
void element_by_element_product ()
 
void element_by_element_division ()
 
void element_by_element_addition ()
 
void different_index_contract (int A_type, double factor, int B_type, std::string &operation, int C_type, std::string &reindexing)
 
void reindex (double constant)
 
void * reindex_thread (void *my_id)
 
void * reindex_thread_right_expand (void *my_id)
 
void tensor_product ()
 
void setup_contractions ()
 
void contract_in_core (double **A_matrix, double **B_matrix, double **C_matrix, bool B_on_disk, bool C_on_disk, int rows_A, int rows_B, int rows_C, int cols_A, int cols_B, int cols_C, int offset)
 
void sort (CCIndex *T_left, CCIndex *T_right, double ***T_matrix, double constant)
 
void sort ()
 
void check_and_zero_target ()
 
void check_and_zero_target_block (int h)
 
void zero_target ()
 
void zero_target_block (int h)
 
void zero_two_diagonal ()
 

Private Attributes

double factor
 
std::string assignment
 
std::string reindexing
 
std::string operation
 
CCMatrixA_Matrix
 
CCMatrixB_Matrix
 
CCMatrixC_Matrix
 

Static Private Attributes

static double * out_of_core_buffer = NULL
 
static double * local_work = NULL
 
static double zero_timing =0.0
 
static double numerical_timing =0.0
 
static double contract_timing =0.0
 
static double tensor_timing =0.0
 
static double dot_timing =0.0
 
static double plus_timing =0.0
 
static double product_timing =0.0
 
static double division_timing =0.0
 
static double sort_timing =0.0
 
static double PartA_timing =0.0
 
static double PartB_timing =0.0
 
static double PartC_timing =0.0
 

Constructor & Destructor Documentation

psi::psimrcc::CCOperation::CCOperation ( double  in_factor,
std::string  in_assignment,
std::string  in_reindexing,
std::string  in_operation,
CCMatrix in_A_Matrix,
CCMatrix in_B_Matrix,
CCMatrix in_C_Matrix,
double *  work,
double *  buffer 
)
psi::psimrcc::CCOperation::~CCOperation ( )

Member Function Documentation

void psi::psimrcc::CCOperation::add_numerical_factor ( )
private

Add a number to each element of a matrix

void psi::psimrcc::CCOperation::check_and_zero_target ( )
private
void psi::psimrcc::CCOperation::check_and_zero_target_block ( int  h)
private
bool psi::psimrcc::CCOperation::compatible_contract ( )
private
bool psi::psimrcc::CCOperation::compatible_dot ( )
private
bool psi::psimrcc::CCOperation::compatible_element_by_element ( )
private
void psi::psimrcc::CCOperation::compute ( )

This is the core of the CCBLAS class. Computes the expression in the CCOperation class.

void psi::psimrcc::CCOperation::contract ( )
private
void psi::psimrcc::CCOperation::contract_in_core ( double **  A_matrix,
double **  B_matrix,
double **  C_matrix,
bool  B_on_disk,
bool  C_on_disk,
int  rows_A,
int  rows_B,
int  rows_C,
int  cols_A,
int  cols_B,
int  cols_C,
int  offset 
)
private
void psi::psimrcc::CCOperation::different_index_contract ( int  A_type,
double  factor,
int  B_type,
std::string &  operation,
int  C_type,
std::string &  reindexing 
)
private
void psi::psimrcc::CCOperation::dot_product ( )
private
void psi::psimrcc::CCOperation::element_by_element_addition ( )
private
void psi::psimrcc::CCOperation::element_by_element_division ( )
private
void psi::psimrcc::CCOperation::element_by_element_product ( )
private
void psi::psimrcc::CCOperation::fail_to_compute ( )
private
CCMatrix* psi::psimrcc::CCOperation::get_A_Matrix ( )
inline
std::string psi::psimrcc::CCOperation::get_assignment ( )
inline
CCMatrix* psi::psimrcc::CCOperation::get_B_Matrix ( )
inline
CCMatrix* psi::psimrcc::CCOperation::get_C_Matrix ( )
inline
double psi::psimrcc::CCOperation::get_factor ( )
inline
std::string psi::psimrcc::CCOperation::get_operation ( )
inline
std::string psi::psimrcc::CCOperation::get_reindexing ( )
inline
void psi::psimrcc::CCOperation::print ( void  )
void psi::psimrcc::CCOperation::print_operation ( )
void psi::psimrcc::CCOperation::print_timing ( )
static
void psi::psimrcc::CCOperation::reindex ( double  constant)
private
void* psi::psimrcc::CCOperation::reindex_thread ( void *  my_id)
private
void* psi::psimrcc::CCOperation::reindex_thread_right_expand ( void *  my_id)
private
void psi::psimrcc::CCOperation::setup_contractions ( )
private
void psi::psimrcc::CCOperation::sort ( CCIndex T_left,
CCIndex T_right,
double ***  T_matrix,
double  constant 
)
private
void psi::psimrcc::CCOperation::sort ( )
private
void psi::psimrcc::CCOperation::tensor_product ( )
private
void psi::psimrcc::CCOperation::zero_target ( )
private
void psi::psimrcc::CCOperation::zero_target_block ( int  h)
private
void psi::psimrcc::CCOperation::zero_two_diagonal ( )
private

Member Data Documentation

CCMatrix* psi::psimrcc::CCOperation::A_Matrix
private
std::string psi::psimrcc::CCOperation::assignment
private
CCMatrix* psi::psimrcc::CCOperation::B_Matrix
private
CCMatrix* psi::psimrcc::CCOperation::C_Matrix
private
double psi::psimrcc::CCOperation::contract_timing =0.0
staticprivate
double psi::psimrcc::CCOperation::division_timing =0.0
staticprivate
double psi::psimrcc::CCOperation::dot_timing =0.0
staticprivate
double psi::psimrcc::CCOperation::factor
private
double * psi::psimrcc::CCOperation::local_work = NULL
staticprivate
double psi::psimrcc::CCOperation::numerical_timing =0.0
staticprivate
std::string psi::psimrcc::CCOperation::operation
private
double * psi::psimrcc::CCOperation::out_of_core_buffer = NULL
staticprivate
double psi::psimrcc::CCOperation::PartA_timing =0.0
staticprivate
double psi::psimrcc::CCOperation::PartB_timing =0.0
staticprivate
double psi::psimrcc::CCOperation::PartC_timing =0.0
staticprivate
double psi::psimrcc::CCOperation::plus_timing =0.0
staticprivate
double psi::psimrcc::CCOperation::product_timing =0.0
staticprivate
std::string psi::psimrcc::CCOperation::reindexing
private
double psi::psimrcc::CCOperation::sort_timing =0.0
staticprivate
double psi::psimrcc::CCOperation::tensor_timing =0.0
staticprivate
double psi::psimrcc::CCOperation::zero_timing =0.0
staticprivate

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