1#ifndef _SP_PAR_MAT_3D_H_
2#define _SP_PAR_MAT_3D_H_
34 template <
class IT,
class NT,
class DER>
45 SpParMat3D (DER * myseq, std::shared_ptr<CommGrid3D> grid3d,
bool colsplit,
bool special =
false);
60 std::shared_ptr< SpParMat<IT, NT, DER> >
GetLayerMat() {
return layermat;}
61 DER *
seqptr()
const {
return layermat->seqptr();}
65 template <
typename LIT>
66 int Owner(
IT total_m,
IT total_n,
IT grow,
IT gcol, LIT & lrow, LIT & lcol)
const;
72 std::shared_ptr<CommGrid3D>
getcommgrid()
const {
return commGrid3D; }
76 template <
typename SR,
typename NUO,
typename UDERO,
typename IU,
typename NU1,
typename NU2,
typename UDER1,
typename UDER2>
80 template <
typename SR,
typename NUO,
typename UDERO,
typename IU,
typename NU1,
typename NU2,
typename UDER1,
typename UDER2>
82 int phases, NUO hardThreshold, IU selectNum, IU recoverNum, NUO recoverPct,
int kselectVersion,
int computationKernel,
int64_t perProcessMemory);
85 std::shared_ptr<CommGrid3D> commGrid3D;
87 std::shared_ptr< SpParMat<IT, NT, DER> > layermat;
bool CheckSpParMatCompatibility()
friend SpParMat3D< IU, NUO, UDERO > Mult_AnXBn_SUMMA3D(SpParMat3D< IU, NU1, UDER1 > &A, SpParMat3D< IU, NU2, UDER2 > &B)
friend SpParMat3D< IU, NUO, UDERO > MemEfficientSpGEMM3D(SpParMat3D< IU, NU1, UDER1 > &A, SpParMat3D< IU, NU2, UDER2 > &B, int phases, NUO hardThreshold, IU selectNum, IU recoverNum, NUO recoverPct, int kselectVersion, int computationKernel, int64_t perProcessMemory)
std::shared_ptr< SpParMat< IT, NT, DER > > GetLayerMat()
void LocalDim(IT total_m, IT total_n, IT &localm, IT &localn) const
float LoadImbalance() const
int Owner(IT total_m, IT total_n, IT grow, IT gcol, LIT &lrow, LIT &lcol) const
std::shared_ptr< CommGrid3D > getcommgrid() const
SpParMat< IT, NT, DER > Convert2D()
std::shared_ptr< CommGrid3D > getcommgrid3D() const
void CalculateColSplitDistributionOfLayer(vector< typename DER::LocalIT > &divisions3d)