Cyclops Tensor Framework
parallel arithmetic on multidimensional arrays
glb_cyclic_reshuffle.h
Go to the documentation of this file.
1 /*Copyright (c) 2011, Edgar Solomonik, all rights reserved.*/
2 
3 #ifndef __GLB_CYCLIC_RESHUFFLE_H__
4 #define __GLB_CYCLIC_RESHUFFLE_H__
5 
6 #include "../tensor/algstrct.h"
7 #include "../mapping/distribution.h"
8 #include "redist.h"
9 
10 namespace CTF_int {
24  void order_globally(int const * sym,
25  distribution const & dist,
26  int const * virt_edge_len,
27  int const * virt_phase_lda,
28  int64_t vbs,
29  bool dir,
30  char const * tsr_data_in,
31  char * tsr_data_out,
32  algstrct const * sr);
33 
54 // void glb_cyclic_reshuffle(int const * sym,
55  char * glb_cyclic_reshuffle(int const * sym,
56  distribution const & old_dist,
57  int const * old_offsets,
58  int * const * old_permutation,
59  distribution const & new_dist,
60  int const * new_offsets,
61  int * const * new_permutation,
62  char ** ptr_tsr_data,
63  char ** ptr_tsr_cyclic_data,
64  algstrct const * sr,
65  CommData ord_glb_comm,
66  bool reuse_buffers,
67  char const * alpha,
68  char const * beta);
69 }
70 #endif
void order_globally(int const *sym, distribution const &dist, int const *virt_edge_len, int const *virt_phase_lda, int64_t vbs, bool dir, char const *tsr_data_in, char *tsr_data_out, algstrct const *sr)
reorder local buffer so that elements are in ordered according to where they are in the global tensor...
char * glb_cyclic_reshuffle(int const *sym, distribution const &old_dist, int const *old_offsets, int *const *old_permutation, distribution const &new_dist, int const *new_offsets, int *const *new_permutation, char **ptr_tsr_data, char **ptr_tsr_cyclic_data, algstrct const *sr, CommData ord_glb_comm, bool reuse_buffers, char const *alpha, char const *beta)
Goes from any set of phases to any new set of phases.