| Cyclops Tensor Framework
    parallel arithmetic on multidimensional arrays | 
#include <ctr_2d_general.h>


| Public Member Functions | |
| void | print () | 
| print ctr object  More... | |
| void | run (char *A, char *B, char *C) | 
| Basically doing SUMMA, except assumes equal block size on each processor. Performs rank-b updates where b is the smallest blocking factor among A and B or A and C or B and C.  More... | |
| int64_t | mem_fp () | 
| returns the number of bytes of buffer space we need  More... | |
| int64_t | mem_rec () | 
| returns the number of bytes of buffer space we need recursively  More... | |
| double | est_time_fp (int nlyr) | 
| returns the number of bytes this kernel will send per processor  More... | |
| double | est_time_rec (int nlyr) | 
| returns the number of bytes send by each proc recursively  More... | |
| ctr * | clone () | 
| void | find_bsizes (int64_t &b_A, int64_t &b_B, int64_t &b_C, int64_t &s_A, int64_t &s_B, int64_t &s_C, int64_t &aux_size) | 
| determines buffer and block sizes needed for ctr_2d_general  More... | |
| ctr_2d_general (ctr *other) | |
| copies ctr object  More... | |
| ~ctr_2d_general () | |
| deallocs ctr_2d_general object  More... | |
| ctr_2d_general (contraction *c) | |
| partial constructor, most of the logic is in the ctr_2d_gen_build function  More... | |
|  Public Member Functions inherited from CTF_int::ctr | |
| virtual | ~ctr () | 
| deallocates generic ctr object  More... | |
| ctr (ctr *other) | |
| copies generic ctr object  More... | |
| ctr (contraction const *c) | |
| main constructor, defines variable based on contraction class  More... | |
| Data Fields | |
| int | edge_len | 
| int64_t | ctr_lda_A | 
| int64_t | ctr_sub_lda_A | 
| int64_t | ctr_lda_B | 
| int64_t | ctr_sub_lda_B | 
| int64_t | ctr_lda_C | 
| int64_t | ctr_sub_lda_C | 
| bool | move_A | 
| bool | move_B | 
| bool | move_C | 
| CommData * | cdt_A | 
| CommData * | cdt_B | 
| CommData * | cdt_C | 
| ctr * | rec_ctr | 
|  Data Fields inherited from CTF_int::ctr | |
| algstrct const * | sr_A | 
| algstrct const * | sr_B | 
| algstrct const * | sr_C | 
| char const * | beta | 
| int | num_lyr | 
| int | idx_lyr | 
Definition at line 47 of file ctr_2d_general.h.
| CTF_int::ctr_2d_general::ctr_2d_general | ( | ctr * | other | ) | 
copies ctr object
Definition at line 179 of file ctr_2d_general.cxx.
References cdt_A, cdt_B, cdt_C, CTF_int::ctr::clone(), ctr_lda_A, ctr_lda_B, ctr_lda_C, ctr_sub_lda_A, ctr_sub_lda_B, ctr_sub_lda_C, edge_len, move_A, move_B, move_C, and rec_ctr.
Referenced by clone().
| CTF_int::ctr_2d_general::~ctr_2d_general | ( | ) | 
deallocs ctr_2d_general object
Definition at line 171 of file ctr_2d_general.cxx.
References rec_ctr.
| 
 | inline | 
partial constructor, most of the logic is in the ctr_2d_gen_build function
| [in] | c | contraction object to get info about ctr from | 
Definition at line 137 of file ctr_2d_general.h.
| 
 | virtual | 
Reimplemented from CTF_int::ctr.
Definition at line 220 of file ctr_2d_general.cxx.
References ctr_2d_general().
| 
 | virtual | 
returns the number of bytes this kernel will send per processor
Reimplemented from CTF_int::ctr.
Definition at line 248 of file ctr_2d_general.cxx.
References CTF_int::algstrct::addmop(), cdt_A, cdt_B, cdt_C, edge_len, CTF_int::accumulatable::el_size, CTF_int::CommData::estimate_bcast_time(), CTF_int::CommData::estimate_red_time(), find_bsizes(), MIN, move_A, move_B, move_C, CTF_int::ctr::sr_A, CTF_int::ctr::sr_B, and CTF_int::ctr::sr_C.
Referenced by est_time_rec().
| 
 | virtual | 
returns the number of bytes send by each proc recursively
Reimplemented from CTF_int::ctr.
Definition at line 261 of file ctr_2d_general.cxx.
References edge_len, est_time_fp(), CTF_int::ctr::est_time_rec(), MIN, and rec_ctr.
| void CTF_int::ctr_2d_general::find_bsizes | ( | int64_t & | b_A, | 
| int64_t & | b_B, | ||
| int64_t & | b_C, | ||
| int64_t & | s_A, | ||
| int64_t & | s_B, | ||
| int64_t & | s_C, | ||
| int64_t & | aux_size | ||
| ) | 
determines buffer and block sizes needed for ctr_2d_general
| [out] | b_A | block size of A if its communicated, 0 otherwise | 
| [out] | b_B | block size of A if its communicated, 0 otherwise | 
| [out] | b_C | block size of A if its communicated, 0 otherwise | 
| [out] | s_A | total size of A if its communicated, 0 otherwise | 
| [out] | s_B | total size of B if its communicated, 0 otherwise | 
| [out] | s_C | total size of C if its communicated, 0 otherwise | 
| [out] | aux_size | size of auxillary buffer needed | 
Definition at line 224 of file ctr_2d_general.cxx.
References cdt_A, cdt_B, cdt_C, ctr_lda_A, ctr_lda_B, ctr_lda_C, ctr_sub_lda_A, ctr_sub_lda_B, ctr_sub_lda_C, edge_len, CTF_int::accumulatable::el_size, MAX, move_A, move_B, move_C, CTF_int::CommData::np, CTF_int::ctr::sr_A, CTF_int::ctr::sr_B, and CTF_int::ctr::sr_C.
Referenced by est_time_fp(), mem_fp(), and run().
| 
 | virtual | 
returns the number of bytes of buffer space we need
Reimplemented from CTF_int::ctr.
Definition at line 265 of file ctr_2d_general.cxx.
References CTF_int::accumulatable::el_size, find_bsizes(), CTF_int::ctr::sr_A, CTF_int::ctr::sr_B, and CTF_int::ctr::sr_C.
Referenced by mem_rec().
| 
 | virtual | 
returns the number of bytes of buffer space we need recursively
Reimplemented from CTF_int::ctr.
Definition at line 271 of file ctr_2d_general.cxx.
References mem_fp(), CTF_int::ctr::mem_rec(), and rec_ctr.
| 
 | virtual | 
print ctr object
Reimplemented from CTF_int::ctr.
Definition at line 200 of file ctr_2d_general.cxx.
References cdt_A, cdt_B, cdt_C, ctr_lda_A, ctr_lda_B, ctr_lda_C, ctr_sub_lda_A, ctr_sub_lda_B, ctr_sub_lda_C, edge_len, move_A, move_B, move_C, CTF_int::CommData::np, CTF_int::ctr::print(), and rec_ctr.
| 
 | virtual | 
Basically doing SUMMA, except assumes equal block size on each processor. Performs rank-b updates where b is the smallest blocking factor among A and B or A and C or B and C.
Reimplemented from CTF_int::ctr.
Definition at line 275 of file ctr_2d_general.cxx.
References CTF_int::algstrct::addid(), CTF_int::algstrct::addmop(), ASSERT, CTF_int::CommData::bcast(), CTF_int::ctr::beta, CTF_int::cdealloc(), cdt_A, cdt_B, cdt_C, CTF_int::algstrct::copy(), ctr_lda_A, ctr_lda_B, ctr_lda_C, ctr_sub_lda_A, ctr_sub_lda_B, ctr_sub_lda_C, edge_len, CTF_int::accumulatable::el_size, find_bsizes(), CTF_int::host_pinned_alloc(), CTF_int::host_pinned_free(), CTF_int::ctr::idx_lyr, CTF_int::algstrct::mdtype(), move_A, move_B, move_C, CTF_int::mst_alloc_ptr(), CTF_int::algstrct::mulid(), CTF_int::CommData::np, CTF_int::ctr::num_lyr, CTF_int::CommData::rank, rec_ctr, CTF_int::CommData::red(), CTF_int::ctr::run(), CTF_int::ctr::sr_A, CTF_int::ctr::sr_B, CTF_int::ctr::sr_C, TAU_FSTART, and TAU_FSTOP.
| CommData* CTF_int::ctr_2d_general::cdt_A | 
Definition at line 68 of file ctr_2d_general.h.
Referenced by ctr_2d_general(), est_time_fp(), find_bsizes(), CTF_int::get_len_ordering(), print(), and run().
| CommData* CTF_int::ctr_2d_general::cdt_B | 
Definition at line 69 of file ctr_2d_general.h.
Referenced by ctr_2d_general(), est_time_fp(), find_bsizes(), CTF_int::get_len_ordering(), print(), and run().
| CommData* CTF_int::ctr_2d_general::cdt_C | 
Definition at line 70 of file ctr_2d_general.h.
Referenced by ctr_2d_general(), est_time_fp(), find_bsizes(), CTF_int::get_len_ordering(), print(), and run().
| int64_t CTF_int::ctr_2d_general::ctr_lda_A | 
Definition at line 51 of file ctr_2d_general.h.
Referenced by ctr_2d_general(), find_bsizes(), CTF_int::get_len_ordering(), print(), and run().
| int64_t CTF_int::ctr_2d_general::ctr_lda_B | 
Definition at line 54 of file ctr_2d_general.h.
Referenced by ctr_2d_general(), find_bsizes(), CTF_int::get_len_ordering(), print(), and run().
| int64_t CTF_int::ctr_2d_general::ctr_lda_C | 
Definition at line 57 of file ctr_2d_general.h.
Referenced by ctr_2d_general(), find_bsizes(), CTF_int::get_len_ordering(), print(), and run().
| int64_t CTF_int::ctr_2d_general::ctr_sub_lda_A | 
Definition at line 52 of file ctr_2d_general.h.
Referenced by ctr_2d_general(), find_bsizes(), CTF_int::get_len_ordering(), print(), and run().
| int64_t CTF_int::ctr_2d_general::ctr_sub_lda_B | 
Definition at line 55 of file ctr_2d_general.h.
Referenced by ctr_2d_general(), find_bsizes(), CTF_int::get_len_ordering(), print(), and run().
| int64_t CTF_int::ctr_2d_general::ctr_sub_lda_C | 
Definition at line 58 of file ctr_2d_general.h.
Referenced by ctr_2d_general(), find_bsizes(), CTF_int::get_len_ordering(), print(), and run().
| int CTF_int::ctr_2d_general::edge_len | 
Definition at line 49 of file ctr_2d_general.h.
Referenced by ctr_2d_general(), est_time_fp(), est_time_rec(), find_bsizes(), CTF_int::get_len_ordering(), print(), and run().
| bool CTF_int::ctr_2d_general::move_A | 
Definition at line 64 of file ctr_2d_general.h.
Referenced by ctr_2d_general(), est_time_fp(), find_bsizes(), CTF_int::get_len_ordering(), print(), and run().
| bool CTF_int::ctr_2d_general::move_B | 
Definition at line 65 of file ctr_2d_general.h.
Referenced by ctr_2d_general(), est_time_fp(), find_bsizes(), CTF_int::get_len_ordering(), print(), and run().
| bool CTF_int::ctr_2d_general::move_C | 
Definition at line 66 of file ctr_2d_general.h.
Referenced by ctr_2d_general(), est_time_fp(), find_bsizes(), CTF_int::get_len_ordering(), print(), and run().
| ctr* CTF_int::ctr_2d_general::rec_ctr | 
Definition at line 72 of file ctr_2d_general.h.
Referenced by ctr_2d_general(), est_time_rec(), CTF_int::get_len_ordering(), mem_rec(), print(), run(), and ~ctr_2d_general().