6 #include "../tensor/algstrct.h"    25                     int const *      new_edge_len,
    26                     int * 
const *    permutation,
    28                     int64_t *        new_num_pair,
    44                       int const *      new_edge_len,
    45                       int * 
const *    permutation,
    70                    int const *      phys_phase,
   101                  int const *      phys_phase,
   102                  int const *      virt_dim,
   108                  int64_t 
const *  edge_lda,
   109                  std::function<
bool(
char const*)> f);
   129                     int const *       phys_phase,
   130                     int const *       virt_phase,
   131                     int const *       bucket_lda,
   132                     int const *       edge_len,
   133                     ConstPairIterator mapped_data,
   134                     int64_t *         bucket_counts,
   135                     int64_t *         bucket_off,
   136                     PairIterator      bucket_data,
   137                     algstrct 
const *  sr);
   154                            int const *       phys_phase,
   155                            int const *       virt_phase,
   156                            int const *       edge_len,
   157                            ConstPairIterator mapped_data,
   158                            PairIterator      bucket_data,
   159                            algstrct 
const *  sr);
   184                  int const *      edge_len,
   187                  int const *      phys_phase,
   188                  int const *      virt_dim,
   193                  algstrct 
const * sr);
   231                        int const *      edge_len,
   234                        int const *      phys_phase,
   235                        int const *      virt_phase,
   236                        int *            virt_phys_rank,
   237                        int const *      bucket_lda,
   246                        int64_t &        nnz_loc_new);
   270                       int const *      edge_len,
   273                       int const *      phys_phase,
   274                       int const *      virt_phase,
   279                       algstrct 
const * sr);
   293   void sp_read(algstrct 
const *  sr, 
   295                ConstPairIterator prs_tsr,
   298                PairIterator      prs_read,
   320                 ConstPairIterator vprs_tsr,
   323                 ConstPairIterator vprs_write,
 void read_loc_pairs(int order, int64_t nval, int num_virt, int const *sym, int const *edge_len, int const *padding, int const *phase, int const *phys_phase, int const *virt_phase, int *phase_rank, int64_t *nread, char const *data, char **pairs, algstrct const *sr)
read tensor pairs local to processor 
void sp_write(int num_virt, algstrct const *sr, int64_t *vntsr, ConstPairIterator vprs_tsr, char const *beta, int64_t *vnwrite, ConstPairIterator vprs_write, char const *alpha, int64_t *vnnew, char *&pprs_new)
writes pairs in a sparse write set to the sparse set of elements defining the tensor, resulting in a set of size between ntsr and ntsr+nwrite 
void sp_read(algstrct const *sr, int64_t ntsr, ConstPairIterator prs_tsr, char const *alpha, int64_t nread, PairIterator prs_read, char const *beta)
reads elements of a sparse set defining the tensor, into a sparse read set with potentially repeating...
void assign_keys(int order, int64_t size, int nvirt, int const *edge_len, int const *sym, int const *phase, int const *phys_phase, int const *virt_dim, int *phase_rank, char const *vdata, char *vpairs, algstrct const *sr)
assigns keys to an array of values 
void bucket_by_pe(int order, int64_t num_pair, int64_t np, int const *phys_phase, int const *virt_phase, int const *bucket_lda, int const *edge_len, ConstPairIterator mapped_data, int64_t *bucket_counts, int64_t *bucket_off, PairIterator bucket_data, algstrct const *sr)
buckets key-value pairs by processor according to distribution 
void depermute_keys(int order, int num_pair, int const *edge_len, int const *new_edge_len, int *const *permutation, char *pairs_buf, algstrct const *sr)
depermutes keys (apply P^T) 
void permute_keys(int order, int num_pair, int const *edge_len, int const *new_edge_len, int *const *permutation, char *pairs_buf, int64_t *new_num_pair, algstrct const *sr)
permutes keys 
int64_t * bucket_by_virt(int order, int num_virt, int64_t num_pair, int const *phys_phase, int const *virt_phase, int const *edge_len, ConstPairIterator mapped_data, PairIterator bucket_data, algstrct const *sr)
buckets key value pairs by block/virtual-processor 
void wr_pairs_layout(int order, int np, int64_t inwrite, char const *alpha, char const *beta, char rw, int num_virt, int const *sym, int const *edge_len, int const *padding, int const *phase, int const *phys_phase, int const *virt_phase, int *virt_phys_rank, int const *bucket_lda, char *wr_pairs_buf, char *rw_data, CommData glb_comm, algstrct const *sr, bool is_sparse, int64_t nnz_loc, int64_t *nnz_blk, char *&pprs_new, int64_t &nnz_loc_new)
read or write pairs from / to tensor 
void spsfy_tsr(int order, int64_t size, int nvirt, int const *edge_len, int const *sym, int const *phase, int const *phys_phase, int const *virt_dim, int *phase_rank, char const *vdata, char *&vpairs, int64_t *nnz_blk, algstrct const *sr, int64_t const *edge_lda, std::function< bool(char const *)> f)
extracts all tensor values (in pair format) that pass a sparsifier function (including padded zeros i...
void readwrite(int order, int64_t size, char const *alpha, char const *beta, int nvirt, int const *edge_len, int const *sym, int const *phase, int const *phys_phase, int const *virt_dim, int *phase_rank, char *vdata, char *pairs_buf, char rw, algstrct const *sr)
read or write pairs from / to tensor