Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit c4e1b82

Browse files
committedFeb 24, 2025·
defensive try and updated baselines post kpoint sort consistency
1 parent a4bd470 commit c4e1b82

File tree

3 files changed

+71
-62
lines changed

3 files changed

+71
-62
lines changed
 

‎src/Particle/HDFWalkerInput_0_4.cpp

+57-48
Original file line numberDiff line numberDiff line change
@@ -127,63 +127,72 @@ bool HDFWalkerInput_0_4::read_hdf5(const std::filesystem::path& h5name)
127127
{
128128
size_t nw_in = 0;
129129

130-
hdf_archive hin(myComm, false); //everone reads this
131-
bool success = hin.open(h5name, H5F_ACC_RDONLY);
132-
//check if hdf and xml versions can work together
133-
HDFVersion aversion;
134-
135-
hin.read(aversion, hdf::version);
136-
if (!(aversion < i_info.version))
137-
{
138-
int found_group = hin.is_group(hdf::main_state);
139-
hin.push(hdf::main_state);
140-
hin.read(nw_in, hdf::num_walkers);
141-
}
142-
else
143-
{
144-
app_error() << " Mismatched version. xml = " << i_info.version << " hdf = " << aversion << std::endl;
145-
}
146-
147-
if (nw_in == 0)
130+
// This prevents a strange race condition I've see where the previous sections
131+
// for sure already closed hdf5 file isn't available.
132+
try
148133
{
149-
app_error() << " No walkers in " << h5name << std::endl;
150-
return false;
151-
}
134+
hdf_archive hin(myComm, false); //everone reads this
135+
myComm->barrier();
136+
bool success = hin.open(h5name, H5F_ACC_RDONLY);
137+
//check if hdf and xml versions can work together
138+
HDFVersion aversion;
139+
hin.read(aversion, hdf::version);
140+
if (!(aversion < i_info.version))
141+
{
142+
int found_group = hin.is_group(hdf::main_state);
143+
hin.push(hdf::main_state);
144+
hin.read(nw_in, hdf::num_walkers);
145+
}
146+
else
147+
{
148+
app_error() << " Mismatched version. xml = " << i_info.version << " hdf = " << aversion << std::endl;
149+
}
152150

153-
using Buffer_t = std::vector<QMCTraits::RealType>;
154-
std::array<size_t, 3> dims{nw_in, num_ptcls_, OHMMS_DIM};
155-
Buffer_t posin(dims[0] * dims[1] * dims[2]);
156-
hin.readSlabReshaped(posin, dims, hdf::walkers);
157-
std::vector<QMCTraits::FullPrecRealType> weights_in(nw_in);
158-
const bool has_weights = hin.readEntry(weights_in, hdf::walker_weights);
151+
if (nw_in == 0)
152+
{
153+
app_error() << " No walkers in " << h5name << std::endl;
154+
return false;
155+
}
159156

160-
std::vector<int> woffsets;
161-
hin.read(woffsets, "walker_partition");
157+
using Buffer_t = std::vector<QMCTraits::RealType>;
158+
std::array<size_t, 3> dims{nw_in, num_ptcls_, OHMMS_DIM};
159+
Buffer_t posin(dims[0] * dims[1] * dims[2]);
160+
hin.readSlabReshaped(posin, dims, hdf::walkers);
161+
std::vector<QMCTraits::FullPrecRealType> weights_in(nw_in);
162+
const bool has_weights = hin.readEntry(weights_in, hdf::walker_weights);
162163

163-
int np1 = myComm->size() + 1;
164-
if (woffsets.size() != np1)
165-
{
166-
woffsets.resize(myComm->size() + 1, 0);
167-
FairDivideLow(nw_in, myComm->size(), woffsets);
168-
}
164+
std::vector<int> woffsets;
165+
hin.read(woffsets, "walker_partition");
169166

170-
app_log() << " HDFWalkerInput_0_4::put getting " << dims[0] << " walkers " << posin.size() << std::endl;
171-
nw_in = woffsets[myComm->rank() + 1] - woffsets[myComm->rank()];
172-
{
173-
const int nitems = num_ptcls_ * OHMMS_DIM;
174-
const int curWalker = wc_list_.getActiveWalkers();
175-
wc_list_.createWalkers(nw_in, num_ptcls_);
167+
int np1 = myComm->size() + 1;
168+
if (woffsets.size() != np1)
169+
{
170+
woffsets.resize(myComm->size() + 1, 0);
171+
FairDivideLow(nw_in, myComm->size(), woffsets);
172+
}
176173

177-
auto it = posin.begin() + woffsets[myComm->rank()] * nitems;
178-
for (int i = 0; i < nw_in; ++i, it += nitems)
179-
copy(it, it + nitems, get_first_address(wc_list_[i + curWalker]->R));
180-
if (has_weights)
174+
app_log() << " HDFWalkerInput_0_4::put getting " << dims[0] << " walkers " << posin.size() << std::endl;
175+
nw_in = woffsets[myComm->rank() + 1] - woffsets[myComm->rank()];
181176
{
182-
const auto woffset = woffsets[myComm->rank()];
183-
for (int i = 0; i < nw_in; ++i)
184-
wc_list_[i + curWalker]->Weight = weights_in[i + woffset];
177+
const int nitems = num_ptcls_ * OHMMS_DIM;
178+
const int curWalker = wc_list_.getActiveWalkers();
179+
wc_list_.createWalkers(nw_in, num_ptcls_);
180+
181+
auto it = posin.begin() + woffsets[myComm->rank()] * nitems;
182+
for (int i = 0; i < nw_in; ++i, it += nitems)
183+
copy(it, it + nitems, get_first_address(wc_list_[i + curWalker]->R));
184+
if (has_weights)
185+
{
186+
const auto woffset = woffsets[myComm->rank()];
187+
for (int i = 0; i < nw_in; ++i)
188+
wc_list_[i + curWalker]->Weight = weights_in[i + woffset];
189+
}
185190
}
186191
}
192+
catch (...)
193+
{
194+
throw std::runtime_error("Failed to open: " + h5name.string() + "to read walkers!");
195+
}
187196

188197
return true;
189198
}

‎tests/solids/diamondC_2x1x1-Gaussian_pp_MSD/CMakeLists.txt

+3-3
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ if(QMC_MIXED_PRECISION)
357357
list(APPEND det_diamondC_2x1x1-Gaussian_pp_MSD_VMC_DMC_BATCH_MWALKERS-r1-t16_1_SCALARS "eeenergy"
358358
"-5.08527221 0.00003")
359359
list(APPEND det_diamondC_2x1x1-Gaussian_pp_MSD_VMC_DMC_BATCH_MWALKERS-r1-t16_1_SCALARS "ionion"
360-
"-25.55133363 0.000002")
360+
"-25.55132413 0.000002")
361361
list(APPEND det_diamondC_2x1x1-Gaussian_pp_MSD_VMC_DMC_BATCH_MWALKERS-r1-t16_1_SCALARS "localecp"
362362
"-9.83228444 0.0002")
363363
list(APPEND det_diamondC_2x1x1-Gaussian_pp_MSD_VMC_DMC_BATCH_MWALKERS-r1-t16_1_SCALARS "nonlocalecp"
@@ -373,7 +373,7 @@ if(QMC_MIXED_PRECISION)
373373
list(APPEND det_diamondC_2x1x1-Gaussian_pp_MSD_VMC_DMC_BATCH_MWALKERS-r1-t16_2_SCALARS "eeenergy"
374374
"-4.68529565 0.00003")
375375
list(APPEND det_diamondC_2x1x1-Gaussian_pp_MSD_VMC_DMC_BATCH_MWALKERS-r1-t16_2_SCALARS "ionion"
376-
"-25.55133363 0.000002")
376+
"-25.55132413 0.000002")
377377
list(APPEND det_diamondC_2x1x1-Gaussian_pp_MSD_VMC_DMC_BATCH_MWALKERS-r1-t16_2_SCALARS "localecp"
378378
"-15.31087459 0.0002")
379379
list(APPEND det_diamondC_2x1x1-Gaussian_pp_MSD_VMC_DMC_BATCH_MWALKERS-r1-t16_2_SCALARS "nonlocalecp"
@@ -389,7 +389,7 @@ if(QMC_MIXED_PRECISION)
389389
list(APPEND det_diamondC_2x1x1-Gaussian_pp_MSD_VMC_DMC_BATCH_MWALKERS-r1-t16_3_SCALARS "eeenergy"
390390
"-4.60729524 0.00003")
391391
list(APPEND det_diamondC_2x1x1-Gaussian_pp_MSD_VMC_DMC_BATCH_MWALKERS-r1-t16_3_SCALARS "ionion"
392-
"-25.55133363 0.000002")
392+
"-25.55132353 0.000002")
393393
list(APPEND det_diamondC_2x1x1-Gaussian_pp_MSD_VMC_DMC_BATCH_MWALKERS-r1-t16_3_SCALARS "localecp"
394394
"-17.12262279 0.0002")
395395
list(APPEND det_diamondC_2x1x1-Gaussian_pp_MSD_VMC_DMC_BATCH_MWALKERS-r1-t16_3_SCALARS "nonlocalecp"

‎tests/solids/diamondC_2x1x1_pp/CMakeLists.txt

+11-11
Original file line numberDiff line numberDiff line change
@@ -517,7 +517,7 @@ if(QMC_MIXED_PRECISION)
517517
list(APPEND DET_DIAMOND2_DMC_SCALARS "kinetic" "22.67695498 0.00001003")
518518
list(APPEND DET_DIAMOND2_DMC_SCALARS "potential" "-43.71422745 0.00000515")
519519
list(APPEND DET_DIAMOND2_DMC_SCALARS "eeenergy" "-6.17624904 0.000001")
520-
list(APPEND DET_DIAMOND2_DMC_SCALARS "ionion" "-25.55133296 0.0000014")
520+
list(APPEND DET_DIAMOND2_DMC_SCALARS "ionion" "-25.55132413 0.0000014")
521521
list(APPEND DET_DIAMOND2_DMC_SCALARS "localecp" "-9.10928079 0.00000442")
522522
list(APPEND DET_DIAMOND2_DMC_SCALARS "nonlocalecp" "-2.87736895 0.00000177")
523523
list(APPEND DET_DIAMOND2_DMC_SCALARS "samples" "9.00000000 0.0")
@@ -571,7 +571,7 @@ if(QMC_MIXED_PRECISION)
571571
list(APPEND DET_DIAMOND2_DMC_EXCITED_SCALARS "kinetic" "24.80059962 0.00002563")
572572
list(APPEND DET_DIAMOND2_DMC_EXCITED_SCALARS "potential" "-44.85581823 0.00000861")
573573
list(APPEND DET_DIAMOND2_DMC_EXCITED_SCALARS "eeenergy" "-5.88258978 0.00000192")
574-
list(APPEND DET_DIAMOND2_DMC_EXCITED_SCALARS "ionion" "-25.55133347 0.000002")
574+
list(APPEND DET_DIAMOND2_DMC_EXCITED_SCALARS "ionion" "-25.55132413 0.000002")
575575
list(APPEND DET_DIAMOND2_DMC_EXCITED_SCALARS "localecp" "-16.39535242 0.00000777")
576576
list(APPEND DET_DIAMOND2_DMC_EXCITED_SCALARS "nonlocalecp" "2.97345613 0.00001229")
577577
list(APPEND DET_DIAMOND2_DMC_EXCITED_SCALARS "samples" "9.00000000 0.0")
@@ -626,7 +626,7 @@ if(QMC_MIXED_PRECISION)
626626
list(APPEND DET_DIAMOND2_VMC_BATCH_MWALKERS1_SCALARS "kinetic" "19.21103034 0.0005")
627627
list(APPEND DET_DIAMOND2_VMC_BATCH_MWALKERS1_SCALARS "potential" "-41.26064989 0.0001")
628628
list(APPEND DET_DIAMOND2_VMC_BATCH_MWALKERS1_SCALARS "eeenergy" "-6.68405093 0.00003")
629-
list(APPEND DET_DIAMOND2_VMC_BATCH_MWALKERS1_SCALARS "ionion" "-25.55133345 0.000002")
629+
list(APPEND DET_DIAMOND2_VMC_BATCH_MWALKERS1_SCALARS "ionion" "-25.55132413 0.000002")
630630
list(APPEND DET_DIAMOND2_VMC_BATCH_MWALKERS1_SCALARS "localecp" "-10.92577863 0.0002")
631631
list(APPEND DET_DIAMOND2_VMC_BATCH_MWALKERS1_SCALARS "nonlocalecp" "1.90051359 0.0001")
632632
list(APPEND DET_DIAMOND2_VMC_BATCH_MWALKERS1_SCALARS "flux" "-0.31336816 0.001")
@@ -744,7 +744,7 @@ if(QMC_MIXED_PRECISION)
744744
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_1_SCALARS "kinetic" "21.58412194 0.0005")
745745
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_1_SCALARS "potential" "-43.34107537 0.0001")
746746
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_1_SCALARS "eeenergy" "-4.93051914 0.00003")
747-
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_1_SCALARS "ionion" "-25.55133345 0.000002")
747+
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_1_SCALARS "ionion" "-25.55132413 0.000002")
748748
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_1_SCALARS "localecp" "-14.55016309 0.0002")
749749
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_1_SCALARS "nonlocalecp" "1.69094030 0.0001")
750750
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_1_SCALARS "flux" "14.56015197 0.001")
@@ -754,7 +754,7 @@ if(QMC_MIXED_PRECISION)
754754
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_2_SCALARS "kinetic" "21.75835414 0.0005")
755755
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_2_SCALARS "potential" "-43.16599791 0.0001")
756756
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_2_SCALARS "eeenergy" "-5.31127989 0.00003")
757-
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_2_SCALARS "ionion" "-25.55133345 0.000002")
757+
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_2_SCALARS "ionion" "-25.55132413 0.000002")
758758
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_2_SCALARS "localecp" "-13.83088578 0.0002")
759759
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_2_SCALARS "nonlocalecp" "1.52749084 0.0001")
760760
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_2_SCALARS "flux" "1.55142989 0.001")
@@ -764,7 +764,7 @@ if(QMC_MIXED_PRECISION)
764764
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_3_SCALARS "kinetic" "24.31653559 0.0005")
765765
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_3_SCALARS "potential" "-46.08009462 0.0001")
766766
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_3_SCALARS "eeenergy" "-5.15140370 0.00003")
767-
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_3_SCALARS "ionion" "-25.55133345 0.000002")
767+
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_3_SCALARS "ionion" "-25.55132413 0.000002")
768768
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_3_SCALARS "localecp" "-17.32746386 0.0002")
769769
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_3_SCALARS "nonlocalecp" "1.95010638 0.0001")
770770
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t4_3_SCALARS "flux" "-15.81523996 0.001")
@@ -886,7 +886,7 @@ if(QMC_MIXED_PRECISION)
886886
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_1_SCALARS "kinetic" "20.59152300 0.0005")
887887
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_1_SCALARS "potential" "-42.28743906 0.0001")
888888
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_1_SCALARS "eeenergy" "-4.99385904 0.00003")
889-
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_1_SCALARS "ionion" "-25.55133345 0.000002")
889+
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_1_SCALARS "ionion" "-25.55132413 0.000002")
890890
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_1_SCALARS "localecp" "-13.52316837 0.0002")
891891
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_1_SCALARS "nonlocalecp" "1.78092056 0.0001")
892892
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_1_SCALARS "flux" "0.04231199 0.001")
@@ -896,7 +896,7 @@ if(QMC_MIXED_PRECISION)
896896
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_2_SCALARS "kinetic" "20.01371014 0.0005")
897897
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_2_SCALARS "potential" "-41.48156478 0.0001")
898898
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_2_SCALARS "eeenergy" "-5.33482570 0.00003")
899-
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_2_SCALARS "ionion" "-25.55133345 0.000002")
899+
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_2_SCALARS "ionion" "-25.55132413 0.000002")
900900
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_2_SCALARS "localecp" "-12.01852844 0.0002")
901901
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_2_SCALARS "nonlocalecp" "1.42312156 0.0001")
902902
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_2_SCALARS "flux" "-3.44516609 0.001")
@@ -906,7 +906,7 @@ if(QMC_MIXED_PRECISION)
906906
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_3_SCALARS "kinetic" "19.99149153 0.0005")
907907
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_3_SCALARS "potential" "-41.44921562 0.0001")
908908
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_3_SCALARS "eeenergy" "-5.08977813 0.00003")
909-
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_3_SCALARS "ionion" "-25.55133345 0.000002")
909+
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_3_SCALARS "ionion" "-25.55132393 0.000002")
910910
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_3_SCALARS "localecp" "-11.98988102 0.0002")
911911
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_3_SCALARS "nonlocalecp" "1.18177600 0.0001")
912912
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS_SERIALIZED-r1-t4_3_SCALARS "flux" "-11.51920996 0.001")
@@ -1080,7 +1080,7 @@ if(QMC_MIXED_PRECISION)
10801080
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t16_3_SCALARS "kinetic" "19.10457607 0.0005")
10811081
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t16_3_SCALARS "potential" "-41.32836692 0.0001")
10821082
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t16_3_SCALARS "eeenergy" "-5.53681243 0.00003")
1083-
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t16_3_SCALARS "ionion" "-25.55133345 0.000002")
1083+
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t16_3_SCALARS "ionion" "-25.55132393 0.000002")
10841084
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t16_3_SCALARS "localecp" "-12.48670659 0.0002")
10851085
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t16_3_SCALARS "nonlocalecp" "2.24647505 0.0001")
10861086
list(APPEND DET_DIAMOND2_VMC_DMC_BATCH_MWALKERS-r1-t16_3_SCALARS "flux" "-6.00048904 0.001")
@@ -1565,7 +1565,7 @@ if(QMC_MIXED_PRECISION)
15651565
list(APPEND DET_DIAMOND2_DMC_BATCH_EXCITED_SCALARS "kinetic" "17.47436757 0.00002563")
15661566
list(APPEND DET_DIAMOND2_DMC_BATCH_EXCITED_SCALARS "potential" "-38.41717159 0.00000861")
15671567
list(APPEND DET_DIAMOND2_DMC_BATCH_EXCITED_SCALARS "eeenergy" "-5.71276953 0.00000192")
1568-
list(APPEND DET_DIAMOND2_DMC_BATCH_EXCITED_SCALARS "ionion" "-25.55133347 0.000002")
1568+
list(APPEND DET_DIAMOND2_DMC_BATCH_EXCITED_SCALARS "ionion" "-25.55132690 0.000002")
15691569
list(APPEND DET_DIAMOND2_DMC_BATCH_EXCITED_SCALARS "localecp" "-8.33530885 0.00000777")
15701570
list(APPEND DET_DIAMOND2_DMC_BATCH_EXCITED_SCALARS "nonlocalecp" "1.18224586 0.00001229")
15711571
else()

0 commit comments

Comments
 (0)
Please sign in to comment.