1 #ifndef _SUMMA_LAYER_H_ 2 #define _SUMMA_LAYER_H_ 24 template <
typename IT,
typename NT>
31 IT ** BRecvSizes = SpHelper::allocate2D<IT>(SpDCCols<IT,NT>::esscount, stages);
44 for(
int i = 0; i < stages; ++i)
46 double bcast_beg = MPI_Wtime();
49 if(i == Aself) ARecv = &SplitA;
52 ess.resize(SpDCCols<IT,NT>::esscount);
53 for(
int j=0; j< SpDCCols<IT,NT>::esscount; ++j)
54 ess[j] = ARecvSizes[j][i];
61 if(i == Bself) BRecv = &SplitB;
64 ess.resize(SpDCCols<IT,NT>::esscount);
65 for(
int j=0; j< SpDCCols<IT,NT>::esscount; ++j)
67 ess[j] = BRecvSizes[j][i];
74 double summa_beg = MPI_Wtime();
78 C_cont = LocalSpGEMM<PTDD, NT>
85 C_cont = MultiplyReturnTuples<PTDD, NT>
void SUMMALayer(SpDCCols< IT, NT > &SplitA, SpDCCols< IT, NT > &SplitB, std::vector< SpTuples< IT, NT > * > &C, CCGrid &CMG, bool isBT, bool threaded)
static void GetSetSizes(const SpMat< IT, NT, DER > &Matrix, IT **&sizes, MPI_Comm &comm1d)
static void BCastMatrix(MPI_Comm &comm1d, SpMat< IT, NT, DER > &Matrix, const std::vector< IT > &essentials, int root)
static void deallocate2D(T **array, I m)