Implement deleting Vppph
This commit is contained in:
parent
7d37bd9f8b
commit
fed19ff52c
33
atrip.org
33
atrip.org
@ -2955,6 +2955,7 @@ namespace atrip {
|
|||||||
GROUP_AND_SORT,
|
GROUP_AND_SORT,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ADD_ATTRIBUTE(bool, deleteVppph, false)
|
||||||
ADD_ATTRIBUTE(bool, rankRoundRobin, false)
|
ADD_ATTRIBUTE(bool, rankRoundRobin, false)
|
||||||
ADD_ATTRIBUTE(bool, chrono, false)
|
ADD_ATTRIBUTE(bool, chrono, false)
|
||||||
ADD_ATTRIBUTE(bool, barrier, false)
|
ADD_ATTRIBUTE(bool, barrier, false)
|
||||||
@ -3063,14 +3064,6 @@ Atrip::Output Atrip::run(Atrip::Input<F> const& in) {
|
|||||||
MPI_Comm_size(child_comm, &child_size);
|
MPI_Comm_size(child_comm, &child_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// BUILD SLICES PARAMETRIZED BY NV ==================================={{{1
|
|
||||||
WITH_CHRONO("nv-slices",
|
|
||||||
LOG(0,"Atrip") << "BUILD NV-SLICES\n";
|
|
||||||
TAPHH<F> taphh(*in.Tpphh, (size_t)No, (size_t)Nv, (size_t)np, child_comm, universe);
|
|
||||||
HHHA<F> hhha(*in.Vhhhp, (size_t)No, (size_t)Nv, (size_t)np, child_comm, universe);
|
|
||||||
)
|
|
||||||
|
|
||||||
// BUILD SLICES PARAMETRIZED BY NV x NV =============================={{{1
|
// BUILD SLICES PARAMETRIZED BY NV x NV =============================={{{1
|
||||||
WITH_CHRONO("nv-nv-slices",
|
WITH_CHRONO("nv-nv-slices",
|
||||||
LOG(0,"Atrip") << "BUILD NV x NV-SLICES\n";
|
LOG(0,"Atrip") << "BUILD NV x NV-SLICES\n";
|
||||||
@ -3079,6 +3072,18 @@ Atrip::Output Atrip::run(Atrip::Input<F> const& in) {
|
|||||||
TABHH<F> tabhh(*in.Tpphh, (size_t)No, (size_t)Nv, (size_t)np, child_comm, universe);
|
TABHH<F> tabhh(*in.Tpphh, (size_t)No, (size_t)Nv, (size_t)np, child_comm, universe);
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// delete the Vppph so that we don't have a HWM situation for the NV slices
|
||||||
|
if (in.deleteVppph) {
|
||||||
|
delete in.Vppph;
|
||||||
|
}
|
||||||
|
|
||||||
|
// BUILD SLICES PARAMETRIZED BY NV ==================================={{{1
|
||||||
|
WITH_CHRONO("nv-slices",
|
||||||
|
LOG(0,"Atrip") << "BUILD NV-SLICES\n";
|
||||||
|
TAPHH<F> taphh(*in.Tpphh, (size_t)No, (size_t)Nv, (size_t)np, child_comm, universe);
|
||||||
|
HHHA<F> hhha(*in.Vhhhp, (size_t)No, (size_t)Nv, (size_t)np, child_comm, universe);
|
||||||
|
)
|
||||||
|
|
||||||
// all tensors
|
// all tensors
|
||||||
std::vector< SliceUnion<F>* > unions = {&taphh, &hhha, &abph, &abhh, &tabhh};
|
std::vector< SliceUnion<F>* > unions = {&taphh, &hhha, &abph, &abhh, &tabhh};
|
||||||
|
|
||||||
@ -3251,12 +3256,12 @@ Atrip::Output Atrip::run(Atrip::Input<F> const& in) {
|
|||||||
|
|
||||||
const double doublesFlops
|
const double doublesFlops
|
||||||
= double(No)
|
= double(No)
|
||||||
* double(No)
|
,* double(No)
|
||||||
* double(No)
|
,* double(No)
|
||||||
* (double(No) + double(Nv))
|
,* (double(No) + double(Nv))
|
||||||
* 2.0
|
,* 2.0
|
||||||
* (traits::isComplex<F>() ? 2.0 : 1.0)
|
,* (traits::isComplex<F>() ? 2.0 : 1.0)
|
||||||
* 6.0
|
,* 6.0
|
||||||
/ 1e9
|
/ 1e9
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
@ -17,13 +17,15 @@ int main(int argc, char** argv) {
|
|||||||
MPI_Init(&argc, &argv);
|
MPI_Init(&argc, &argv);
|
||||||
|
|
||||||
int no(10), nv(10), itMod(-1), percentageMod(10);
|
int no(10), nv(10), itMod(-1), percentageMod(10);
|
||||||
bool nochrono(false), barrier(false), rankRoundRobin(false);
|
bool nochrono(false), barrier(false), rankRoundRobin(false),
|
||||||
|
keepVppph(false);
|
||||||
std::string tuplesDistributionString = "naive";
|
std::string tuplesDistributionString = "naive";
|
||||||
|
|
||||||
CLI::App app{"Main bench for atrip"};
|
CLI::App app{"Main bench for atrip"};
|
||||||
app.add_option("--no", no, "Occupied orbitals");
|
app.add_option("--no", no, "Occupied orbitals");
|
||||||
app.add_option("--nv", nv, "Virtual orbitals");
|
app.add_option("--nv", nv, "Virtual orbitals");
|
||||||
app.add_option("--mod", itMod, "Iteration modifier");
|
app.add_option("--mod", itMod, "Iteration modifier");
|
||||||
|
app.add_flag("--keep-vppph", keepVppph, "Do not delete Vppph");
|
||||||
app.add_flag("--nochrono", nochrono, "Do not print chrono");
|
app.add_flag("--nochrono", nochrono, "Do not print chrono");
|
||||||
app.add_flag("--rank-round-robin", rankRoundRobin, "Do rank round robin");
|
app.add_flag("--rank-round-robin", rankRoundRobin, "Do rank round robin");
|
||||||
app.add_flag("--barrier", barrier, "Use the first barrier");
|
app.add_flag("--barrier", barrier, "Use the first barrier");
|
||||||
@ -38,7 +40,8 @@ int main(int argc, char** argv) {
|
|||||||
constexpr double elem_to_gb = 8.0 / 1024.0 / 1024.0 / 1024.0;
|
constexpr double elem_to_gb = 8.0 / 1024.0 / 1024.0 / 1024.0;
|
||||||
|
|
||||||
// USER PRINTING TEST BEGIN
|
// USER PRINTING TEST BEGIN
|
||||||
const double doublesFlops = no * no * no
|
const double doublesFlops
|
||||||
|
= no * no * no
|
||||||
* (no + nv)
|
* (no + nv)
|
||||||
* 2.0
|
* 2.0
|
||||||
* 6.0
|
* 6.0
|
||||||
@ -110,7 +113,8 @@ int main(int argc, char** argv) {
|
|||||||
Vppph.fill_random(0, 1);
|
Vppph.fill_random(0, 1);
|
||||||
|
|
||||||
atrip::Atrip::init();
|
atrip::Atrip::init();
|
||||||
const auto in = atrip::Atrip::Input<double>()
|
const auto in
|
||||||
|
= atrip::Atrip::Input<double>()
|
||||||
// Tensors
|
// Tensors
|
||||||
.with_epsilon_i(&ei)
|
.with_epsilon_i(&ei)
|
||||||
.with_epsilon_a(&ea)
|
.with_epsilon_a(&ea)
|
||||||
@ -120,6 +124,7 @@ int main(int argc, char** argv) {
|
|||||||
.with_Vijka(&Vhhhp)
|
.with_Vijka(&Vhhhp)
|
||||||
.with_Vabci(&Vppph)
|
.with_Vabci(&Vppph)
|
||||||
// some options
|
// some options
|
||||||
|
.with_deleteVppph(!keepVppph)
|
||||||
.with_barrier(barrier)
|
.with_barrier(barrier)
|
||||||
.with_chrono(!nochrono)
|
.with_chrono(!nochrono)
|
||||||
.with_rankRoundRobin(rankRoundRobin)
|
.with_rankRoundRobin(rankRoundRobin)
|
||||||
|
|||||||
@ -60,6 +60,7 @@ namespace atrip {
|
|||||||
GROUP_AND_SORT,
|
GROUP_AND_SORT,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ADD_ATTRIBUTE(bool, deleteVppph, false)
|
||||||
ADD_ATTRIBUTE(bool, rankRoundRobin, false)
|
ADD_ATTRIBUTE(bool, rankRoundRobin, false)
|
||||||
ADD_ATTRIBUTE(bool, chrono, false)
|
ADD_ATTRIBUTE(bool, chrono, false)
|
||||||
ADD_ATTRIBUTE(bool, barrier, false)
|
ADD_ATTRIBUTE(bool, barrier, false)
|
||||||
|
|||||||
@ -96,14 +96,6 @@ Atrip::Output Atrip::run(Atrip::Input<F> const& in) {
|
|||||||
MPI_Comm_size(child_comm, &child_size);
|
MPI_Comm_size(child_comm, &child_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// BUILD SLICES PARAMETRIZED BY NV ==================================={{{1
|
|
||||||
WITH_CHRONO("nv-slices",
|
|
||||||
LOG(0,"Atrip") << "BUILD NV-SLICES\n";
|
|
||||||
TAPHH<F> taphh(*in.Tpphh, (size_t)No, (size_t)Nv, (size_t)np, child_comm, universe);
|
|
||||||
HHHA<F> hhha(*in.Vhhhp, (size_t)No, (size_t)Nv, (size_t)np, child_comm, universe);
|
|
||||||
)
|
|
||||||
|
|
||||||
// BUILD SLICES PARAMETRIZED BY NV x NV =============================={{{1
|
// BUILD SLICES PARAMETRIZED BY NV x NV =============================={{{1
|
||||||
WITH_CHRONO("nv-nv-slices",
|
WITH_CHRONO("nv-nv-slices",
|
||||||
LOG(0,"Atrip") << "BUILD NV x NV-SLICES\n";
|
LOG(0,"Atrip") << "BUILD NV x NV-SLICES\n";
|
||||||
@ -112,6 +104,18 @@ Atrip::Output Atrip::run(Atrip::Input<F> const& in) {
|
|||||||
TABHH<F> tabhh(*in.Tpphh, (size_t)No, (size_t)Nv, (size_t)np, child_comm, universe);
|
TABHH<F> tabhh(*in.Tpphh, (size_t)No, (size_t)Nv, (size_t)np, child_comm, universe);
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// delete the Vppph so that we don't have a HWM situation for the NV slices
|
||||||
|
if (in.deleteVppph) {
|
||||||
|
delete in.Vppph;
|
||||||
|
}
|
||||||
|
|
||||||
|
// BUILD SLICES PARAMETRIZED BY NV ==================================={{{1
|
||||||
|
WITH_CHRONO("nv-slices",
|
||||||
|
LOG(0,"Atrip") << "BUILD NV-SLICES\n";
|
||||||
|
TAPHH<F> taphh(*in.Tpphh, (size_t)No, (size_t)Nv, (size_t)np, child_comm, universe);
|
||||||
|
HHHA<F> hhha(*in.Vhhhp, (size_t)No, (size_t)Nv, (size_t)np, child_comm, universe);
|
||||||
|
)
|
||||||
|
|
||||||
// all tensors
|
// all tensors
|
||||||
std::vector< SliceUnion<F>* > unions = {&taphh, &hhha, &abph, &abhh, &tabhh};
|
std::vector< SliceUnion<F>* > unions = {&taphh, &hhha, &abph, &abhh, &tabhh};
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user