Loading include/dca/math/random/std_random_wrapper.hpp +11 −5 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #define DCA_MATH_RANDOM_STD_RANDOM_WRAPPER_HPP #include <cstdint> // for uint64_t #include <iostream> #include <random> #include "dca/math/random/random_utils.hpp" Loading @@ -35,7 +36,11 @@ public: initial_seed_(seed), seed_(detail::generateSeed(global_id_, seed)), engine_(seed_), distro_(0., 1.) {} distro_(0., 1.) { #ifndef NDEBUG std::cout << "Generated Rng with global id: " << global_id_ << " and seed: " << seed_ << '\n'; #endif } // Make the random number generator object non-copyable, but move-constructible. // The implicit move assignment operator is deleted since with we have non-static const members. Loading Loading @@ -71,6 +76,7 @@ public: void discard(unsigned long long num_discard) { engine_.discard(num_discard); } private: static int counter_; Loading @@ -90,8 +96,8 @@ int StdRandomWrapper<Engine>::counter_ = 0; template <typename UIntType, UIntType a, UIntType c, UIntType m> class StdRandomWrapper<std::linear_congruential_engine<UIntType, a, c, m>>; } // random } // math } // dca } // namespace random } // namespace math } // namespace dca #endif // DCA_MATH_RANDOM_STD_RANDOM_WRAPPER_HPP include/dca/phys/dca_step/cluster_solver/stdthread_qmci/stdthread_qmci_cluster_solver.hpp +1 −1 Original line number Diff line number Diff line Loading @@ -398,7 +398,7 @@ void StdThreadQmciClusterSolver<QmciSolver>::iterateOverLocalMeasurements( f(meas_id, n_local_meas, print); } else { throw std::runtime_error("Non fixed_meas_per_walker accumulation is suspect and disabled at this time."); throw std::runtime_error("Non fix-meas-per-walker accumulation is suspect and disabled at this time."); // Perform the total number of loop with a shared atomic counter. // for (int meas_id = measurements_done_++; meas_id < n_local_meas; meas_id = measurements_done_++) // f(meas_id, n_local_meas, print); Loading test/integration/cluster_solver/ctint/ctint_square_lattice_tp_test.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,9 @@ // // No-change test for CT-INT. // Square lattice with single band and double occupancy repulsion U. // This test has been known to hang when exceptions are thrown. #include <iostream> #include <string> Loading test/integration/cluster_solver/ctint/square_lattice_tp_input.json +3 −2 Original line number Diff line number Diff line Loading @@ -61,8 +61,9 @@ "threaded-solver" : { "walkers": 1, "accumulators": 3, "shared-walk-and-accumulation-thread": false "accumulators": 1, "shared-walk-and-accumulation-thread": true, "fix-meas-per-walker": true }, "seed" : 0 Loading test/integration/cluster_solver/stdthread_qmci/gpu/stdthread_ctaux_gpu_tp_test.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -81,10 +81,14 @@ TEST(PosixCtauxClusterSolverTest, G_k_w) { dca::phys::DcaLoopData<Parameters> loop_data; solver.finalize(loop_data); }; std::cout << "Creating CPU solver\n"; QmcSolverCpu qmc_solver_cpu(parameters, data_cpu, nullptr); perform_integration(qmc_solver_cpu); RngType::resetCounter(); // Use the same seed for both solvers. // i.e. assume that the consumption of random numbers is exactly the same in sequence for gpu and cpu. // This will not be true unless walker and accumulator share a thread. std::cout << "Creating GPU solver\n"; QmcSolverGpu qmc_solver_gpu(parameters, data_gpu, nullptr); perform_integration(qmc_solver_gpu); Loading @@ -93,5 +97,6 @@ TEST(PosixCtauxClusterSolverTest, G_k_w) { dca::func::util::difference(data_cpu.get_G4()[0], data_gpu.get_G4()[0]); EXPECT_GE(5e-7, err_g.l_inf); EXPECT_GE(5e-7, err_g4.l_inf); // Is this too large? EXPECT_GE(5e-5, err_g4.l_inf); } Loading
include/dca/math/random/std_random_wrapper.hpp +11 −5 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ #define DCA_MATH_RANDOM_STD_RANDOM_WRAPPER_HPP #include <cstdint> // for uint64_t #include <iostream> #include <random> #include "dca/math/random/random_utils.hpp" Loading @@ -35,7 +36,11 @@ public: initial_seed_(seed), seed_(detail::generateSeed(global_id_, seed)), engine_(seed_), distro_(0., 1.) {} distro_(0., 1.) { #ifndef NDEBUG std::cout << "Generated Rng with global id: " << global_id_ << " and seed: " << seed_ << '\n'; #endif } // Make the random number generator object non-copyable, but move-constructible. // The implicit move assignment operator is deleted since with we have non-static const members. Loading Loading @@ -71,6 +76,7 @@ public: void discard(unsigned long long num_discard) { engine_.discard(num_discard); } private: static int counter_; Loading @@ -90,8 +96,8 @@ int StdRandomWrapper<Engine>::counter_ = 0; template <typename UIntType, UIntType a, UIntType c, UIntType m> class StdRandomWrapper<std::linear_congruential_engine<UIntType, a, c, m>>; } // random } // math } // dca } // namespace random } // namespace math } // namespace dca #endif // DCA_MATH_RANDOM_STD_RANDOM_WRAPPER_HPP
include/dca/phys/dca_step/cluster_solver/stdthread_qmci/stdthread_qmci_cluster_solver.hpp +1 −1 Original line number Diff line number Diff line Loading @@ -398,7 +398,7 @@ void StdThreadQmciClusterSolver<QmciSolver>::iterateOverLocalMeasurements( f(meas_id, n_local_meas, print); } else { throw std::runtime_error("Non fixed_meas_per_walker accumulation is suspect and disabled at this time."); throw std::runtime_error("Non fix-meas-per-walker accumulation is suspect and disabled at this time."); // Perform the total number of loop with a shared atomic counter. // for (int meas_id = measurements_done_++; meas_id < n_local_meas; meas_id = measurements_done_++) // f(meas_id, n_local_meas, print); Loading
test/integration/cluster_solver/ctint/ctint_square_lattice_tp_test.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,9 @@ // // No-change test for CT-INT. // Square lattice with single band and double occupancy repulsion U. // This test has been known to hang when exceptions are thrown. #include <iostream> #include <string> Loading
test/integration/cluster_solver/ctint/square_lattice_tp_input.json +3 −2 Original line number Diff line number Diff line Loading @@ -61,8 +61,9 @@ "threaded-solver" : { "walkers": 1, "accumulators": 3, "shared-walk-and-accumulation-thread": false "accumulators": 1, "shared-walk-and-accumulation-thread": true, "fix-meas-per-walker": true }, "seed" : 0 Loading
test/integration/cluster_solver/stdthread_qmci/gpu/stdthread_ctaux_gpu_tp_test.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -81,10 +81,14 @@ TEST(PosixCtauxClusterSolverTest, G_k_w) { dca::phys::DcaLoopData<Parameters> loop_data; solver.finalize(loop_data); }; std::cout << "Creating CPU solver\n"; QmcSolverCpu qmc_solver_cpu(parameters, data_cpu, nullptr); perform_integration(qmc_solver_cpu); RngType::resetCounter(); // Use the same seed for both solvers. // i.e. assume that the consumption of random numbers is exactly the same in sequence for gpu and cpu. // This will not be true unless walker and accumulator share a thread. std::cout << "Creating GPU solver\n"; QmcSolverGpu qmc_solver_gpu(parameters, data_gpu, nullptr); perform_integration(qmc_solver_gpu); Loading @@ -93,5 +97,6 @@ TEST(PosixCtauxClusterSolverTest, G_k_w) { dca::func::util::difference(data_cpu.get_G4()[0], data_gpu.get_G4()[0]); EXPECT_GE(5e-7, err_g.l_inf); EXPECT_GE(5e-7, err_g4.l_inf); // Is this too large? EXPECT_GE(5e-5, err_g4.l_inf); }