1#ifndef _SP_PAR_MAT_3D_H_
2#define _SP_PAR_MAT_3D_H_
34 template <
class IT,
class NT,
class DER>
60 std::shared_ptr< SpParMat<IT, NT, DER> >
GetLayerMat() {
return layermat;}
65 template <
typename LIT>
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>
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
SpParMat3D(const SpParMat3D< IT, NT, DER > &A3D, bool colsplit)
SpParMat< IT, NT, DER > Convert2D()
std::shared_ptr< CommGrid3D > getcommgrid3D() const
SpParMat3D(const SpParMat< IT, NT, DER > &A2D, int nlayers, bool colsplit, bool special=false)
SpParMat3D(DER *myseq, std::shared_ptr< CommGrid3D > grid3d, bool colsplit, bool special=false)
void CalculateColSplitDistributionOfLayer(vector< typename DER::LocalIT > &divisions3d)