From 09ce40ac422bfb3bafde61485d6335f90792548f Mon Sep 17 00:00:00 2001 From: Peter Doak <11856692+PDoakORNL@users.noreply.github.com> Date: Fri, 22 May 2026 22:42:33 +0000 Subject: [PATCH 1/9] Update tc tutorial templates to use kagome-style threaded solver - Change accumulators from 5 to 3 - Add shared-walk-and-accumulation-thread: true - Update README to reflect 3 accumulators --- tutorials/tc/input_sp.json.in | 3 ++- tutorials/tc/input_tp.json.in | 3 ++- tutorials/tc/preconfigured/README.md | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/tutorials/tc/input_sp.json.in b/tutorials/tc/input_sp.json.in index aba3c98be..a26005429 100644 --- a/tutorials/tc/input_sp.json.in +++ b/tutorials/tc/input_sp.json.in @@ -63,7 +63,8 @@ "threaded-solver": { "walkers": 3, - "accumulators": 5 + "accumulators": 3, + "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/input_tp.json.in b/tutorials/tc/input_tp.json.in index 7bbb7ec99..b42ac72d5 100644 --- a/tutorials/tc/input_tp.json.in +++ b/tutorials/tc/input_tp.json.in @@ -65,7 +65,8 @@ "threaded-solver": { "walkers": 3, - "accumulators": 5 + "accumulators": 3, + "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/README.md b/tutorials/tc/preconfigured/README.md index 7d81158b7..5f060c634 100644 --- a/tutorials/tc/preconfigured/README.md +++ b/tutorials/tc/preconfigured/README.md @@ -1,5 +1,5 @@ This directory contains ready-to-use input files and jobs scripts for the [Tc tutorial](https://github.com/CompFUSE/DCA/wiki/Tutorial:-Tc). -The files are preconfigured to run the example with a single process (no MPI) using the threaded Monte Carlo solver with 3 walkers and 5 accumulators. +The files are preconfigured to run the example with a single process (no MPI) using the threaded Monte Carlo solver with 3 walkers and 3 accumulators. The total number of measurements is 100 000. The temperature steps are given by From 002980379a9735165eb03aaeb2b68ceddc076b5c Mon Sep 17 00:00:00 2001 From: Peter Doak <11856692+PDoakORNL@users.noreply.github.com> Date: Fri, 22 May 2026 22:42:35 +0000 Subject: [PATCH 2/9] Add gen_temps.awk to regenerate tc/preconfigured inputs --- tutorials/tc/gen_temps.awk | 94 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100755 tutorials/tc/gen_temps.awk diff --git a/tutorials/tc/gen_temps.awk b/tutorials/tc/gen_temps.awk new file mode 100755 index 000000000..6683c6c46 --- /dev/null +++ b/tutorials/tc/gen_temps.awk @@ -0,0 +1,94 @@ +#!/usr/bin/awk -f +# Generates the tc/preconfigured input files from the templates input_sp.json.in and input_tp.json.in. +# Run this script from tutorials/tc/. + +BEGIN { + # Temperature series from high to low. + n_temps = 9 + temps[1] = 1 + temps[2] = 0.75 + temps[3] = 0.5 + temps[4] = 0.25 + temps[5] = 0.125 + temps[6] = 0.1 + temps[7] = 0.09 + temps[8] = 0.08 + temps[9] = 0.07 + + # Pre-computed beta = 1/T values matching the existing preconfigured files. + betas[1] = 1 + betas[2] = 1.33333 + betas[3] = 2 + betas[4] = 4 + betas[5] = 8 + betas[6] = 10 + betas[7] = 11.1111 + betas[8] = 12.5 + betas[9] = 14.2857 + + # Temperatures that also need a two-particle (tp) input file. + has_tp[6] = 1 + has_tp[7] = 1 + has_tp[8] = 1 + has_tp[9] = 1 + + # Fixed physical parameters. + dens = 0.95 + hubbardU = 6 + vec1 = "[2, 0]" + vec2 = "[0, 2]" + + for (i = 1; i <= n_temps; i++) { + t = temps[i] + + # Previous temperature for self-energy restart ("zero" for the highest T). + prev = (i == 1) ? "zero" : temps[i - 1] + + # DCA iterations: 8 for the first temperature, 6 otherwise. + iters_sp = (i == 1) ? 8 : 6 + + dir = "preconfigured/T=" t + cmd = "mkdir -p " dir + system(cmd) + + # Generate input_sp.json. + sp_in = "input_sp.json.in" + sp_out = dir "/input_sp.json" + while ((getline line < sp_in) > 0) { + gsub(/BETA/, betas[i], line) + gsub(/DENS/, dens, line) + gsub(/HUBBARDU/, hubbardU, line) + gsub(/VEC1/, vec1, line) + gsub(/VEC2/, vec2, line) + gsub(/CURRENT_TEMP/, t, line) + gsub(/PREVIOUS_TEMP/, prev, line) + # Fix the initial self-energy for the highest temperature. + gsub(/"\.\/T=zero\/dca_sp\.hdf5"/, "\"zero\"", line) + gsub(/ITERS/, iters_sp, line) + print line > sp_out + } + close(sp_in) + close(sp_out) + + # Generate input_tp.json for temperatures that need it. + if (has_tp[i]) { + tp_in = "input_tp.json.in" + tp_out = dir "/input_tp.json" + while ((getline line < tp_in) > 0) { + gsub(/BETA/, betas[i], line) + gsub(/DENS/, dens, line) + gsub(/HUBBARDU/, hubbardU, line) + gsub(/VEC1/, vec1, line) + gsub(/VEC2/, vec2, line) + gsub(/CURRENT_TEMP/, t, line) + # PREVIOUS_TEMP is not used in the tp template, but substitute + # with the current temperature for safety. + gsub(/PREVIOUS_TEMP/, t, line) + gsub(/ITERS/, 1, line) + print line > tp_out + } + close(tp_in) + close(tp_out) + } + } +} From fd35747ac5f3f9321549e32b0dbe2d104827d725 Mon Sep 17 00:00:00 2001 From: Peter Doak <11856692+PDoakORNL@users.noreply.github.com> Date: Fri, 22 May 2026 22:42:38 +0000 Subject: [PATCH 3/9] Regenerate tc/preconfigured inputs from updated templates --- tutorials/tc/preconfigured/T=0.07/input_sp.json | 3 ++- tutorials/tc/preconfigured/T=0.07/input_tp.json | 3 ++- tutorials/tc/preconfigured/T=0.08/input_sp.json | 3 ++- tutorials/tc/preconfigured/T=0.08/input_tp.json | 3 ++- tutorials/tc/preconfigured/T=0.09/input_sp.json | 3 ++- tutorials/tc/preconfigured/T=0.09/input_tp.json | 3 ++- tutorials/tc/preconfigured/T=0.1/input_sp.json | 3 ++- tutorials/tc/preconfigured/T=0.1/input_tp.json | 3 ++- tutorials/tc/preconfigured/T=0.125/input_sp.json | 3 ++- tutorials/tc/preconfigured/T=0.25/input_sp.json | 3 ++- tutorials/tc/preconfigured/T=0.5/input_sp.json | 3 ++- tutorials/tc/preconfigured/T=0.75/input_sp.json | 3 ++- tutorials/tc/preconfigured/T=1/input_sp.json | 3 ++- 13 files changed, 26 insertions(+), 13 deletions(-) diff --git a/tutorials/tc/preconfigured/T=0.07/input_sp.json b/tutorials/tc/preconfigured/T=0.07/input_sp.json index a028bd057..a0a06c0e5 100644 --- a/tutorials/tc/preconfigured/T=0.07/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.07/input_sp.json @@ -63,7 +63,8 @@ "threaded-solver": { "walkers": 3, - "accumulators": 5 + "accumulators": 3, + "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.07/input_tp.json b/tutorials/tc/preconfigured/T=0.07/input_tp.json index 2fd28ecf3..ccf4c6200 100644 --- a/tutorials/tc/preconfigured/T=0.07/input_tp.json +++ b/tutorials/tc/preconfigured/T=0.07/input_tp.json @@ -65,7 +65,8 @@ "threaded-solver": { "walkers": 3, - "accumulators": 5 + "accumulators": 3, + "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.08/input_sp.json b/tutorials/tc/preconfigured/T=0.08/input_sp.json index b6b02ab3d..c6ca33b93 100644 --- a/tutorials/tc/preconfigured/T=0.08/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.08/input_sp.json @@ -63,7 +63,8 @@ "threaded-solver": { "walkers": 3, - "accumulators": 5 + "accumulators": 3, + "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.08/input_tp.json b/tutorials/tc/preconfigured/T=0.08/input_tp.json index 0c465ec05..3d13c2b37 100644 --- a/tutorials/tc/preconfigured/T=0.08/input_tp.json +++ b/tutorials/tc/preconfigured/T=0.08/input_tp.json @@ -65,7 +65,8 @@ "threaded-solver": { "walkers": 3, - "accumulators": 5 + "accumulators": 3, + "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.09/input_sp.json b/tutorials/tc/preconfigured/T=0.09/input_sp.json index b57e2e6f1..993694a68 100644 --- a/tutorials/tc/preconfigured/T=0.09/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.09/input_sp.json @@ -63,7 +63,8 @@ "threaded-solver": { "walkers": 3, - "accumulators": 5 + "accumulators": 3, + "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.09/input_tp.json b/tutorials/tc/preconfigured/T=0.09/input_tp.json index a971589e0..21b7d4d2d 100644 --- a/tutorials/tc/preconfigured/T=0.09/input_tp.json +++ b/tutorials/tc/preconfigured/T=0.09/input_tp.json @@ -65,7 +65,8 @@ "threaded-solver": { "walkers": 3, - "accumulators": 5 + "accumulators": 3, + "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.1/input_sp.json b/tutorials/tc/preconfigured/T=0.1/input_sp.json index ad6b3da99..43ce4e5aa 100644 --- a/tutorials/tc/preconfigured/T=0.1/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.1/input_sp.json @@ -63,7 +63,8 @@ "threaded-solver": { "walkers": 3, - "accumulators": 5 + "accumulators": 3, + "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.1/input_tp.json b/tutorials/tc/preconfigured/T=0.1/input_tp.json index b987c9e2b..14a2f2667 100644 --- a/tutorials/tc/preconfigured/T=0.1/input_tp.json +++ b/tutorials/tc/preconfigured/T=0.1/input_tp.json @@ -65,7 +65,8 @@ "threaded-solver": { "walkers": 3, - "accumulators": 5 + "accumulators": 3, + "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.125/input_sp.json b/tutorials/tc/preconfigured/T=0.125/input_sp.json index a984c7bff..bbfb6f195 100644 --- a/tutorials/tc/preconfigured/T=0.125/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.125/input_sp.json @@ -63,7 +63,8 @@ "threaded-solver": { "walkers": 3, - "accumulators": 5 + "accumulators": 3, + "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.25/input_sp.json b/tutorials/tc/preconfigured/T=0.25/input_sp.json index 821c8cef0..8ee38754d 100644 --- a/tutorials/tc/preconfigured/T=0.25/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.25/input_sp.json @@ -63,7 +63,8 @@ "threaded-solver": { "walkers": 3, - "accumulators": 5 + "accumulators": 3, + "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.5/input_sp.json b/tutorials/tc/preconfigured/T=0.5/input_sp.json index e85404d5e..b6649df9d 100644 --- a/tutorials/tc/preconfigured/T=0.5/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.5/input_sp.json @@ -63,7 +63,8 @@ "threaded-solver": { "walkers": 3, - "accumulators": 5 + "accumulators": 3, + "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.75/input_sp.json b/tutorials/tc/preconfigured/T=0.75/input_sp.json index 97d0eda1c..64767fbf9 100644 --- a/tutorials/tc/preconfigured/T=0.75/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.75/input_sp.json @@ -63,7 +63,8 @@ "threaded-solver": { "walkers": 3, - "accumulators": 5 + "accumulators": 3, + "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=1/input_sp.json b/tutorials/tc/preconfigured/T=1/input_sp.json index 29210fb69..9be112b61 100644 --- a/tutorials/tc/preconfigured/T=1/input_sp.json +++ b/tutorials/tc/preconfigured/T=1/input_sp.json @@ -63,7 +63,8 @@ "threaded-solver": { "walkers": 3, - "accumulators": 5 + "accumulators": 3, + "shared-walk-and-accumulation-thread": true } }, From f2b9f71f4121cb89d13026ea046997c2b59c36b8 Mon Sep 17 00:00:00 2001 From: Peter Doak <11856692+PDoakORNL@users.noreply.github.com> Date: Sat, 23 May 2026 12:58:31 +0000 Subject: [PATCH 4/9] Add local workstation job scripts using mpiexec --- .../job.local.analysis_U=6_d=0.95_Nc=4.sh | 17 +++++++++++++ .../job.local.dca_U=6_d=0.95_Nc=4.sh | 25 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100755 tutorials/tc/preconfigured/job.local.analysis_U=6_d=0.95_Nc=4.sh create mode 100755 tutorials/tc/preconfigured/job.local.dca_U=6_d=0.95_Nc=4.sh diff --git a/tutorials/tc/preconfigured/job.local.analysis_U=6_d=0.95_Nc=4.sh b/tutorials/tc/preconfigured/job.local.analysis_U=6_d=0.95_Nc=4.sh new file mode 100755 index 000000000..e77adcd84 --- /dev/null +++ b/tutorials/tc/preconfigured/job.local.analysis_U=6_d=0.95_Nc=4.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Run analysis on a local workstation (no scheduler, single process). +# NOTE: Do not use mpiexec/multi-process with the threaded solver; a code bug +# causes incorrect density measurements when MPI is combined with +# shared-walk-and-accumulation-thread. + +RUN_DCA="../../applications/analysis/main_analysis" + +date + +$RUN_DCA ./T=0.1/input_tp.json +$RUN_DCA ./T=0.09/input_tp.json +$RUN_DCA ./T=0.08/input_tp.json +$RUN_DCA ./T=0.07/input_tp.json + +date diff --git a/tutorials/tc/preconfigured/job.local.dca_U=6_d=0.95_Nc=4.sh b/tutorials/tc/preconfigured/job.local.dca_U=6_d=0.95_Nc=4.sh new file mode 100755 index 000000000..285d2b3dd --- /dev/null +++ b/tutorials/tc/preconfigured/job.local.dca_U=6_d=0.95_Nc=4.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# Run all tc calculations on a local workstation (no scheduler, single process). +# NOTE: Do not use mpiexec/multi-process with the threaded solver; a code bug +# causes incorrect density measurements when MPI is combined with +# shared-walk-and-accumulation-thread. + +RUN_DCA="../../applications/dca/main_dca" +date + +$RUN_DCA ./T=1/input_sp.json +$RUN_DCA ./T=0.75/input_sp.json +$RUN_DCA ./T=0.5/input_sp.json +$RUN_DCA ./T=0.25/input_sp.json +$RUN_DCA ./T=0.125/input_sp.json +$RUN_DCA ./T=0.1/input_sp.json +$RUN_DCA ./T=0.1/input_tp.json +$RUN_DCA ./T=0.09/input_sp.json +$RUN_DCA ./T=0.09/input_tp.json +$RUN_DCA ./T=0.08/input_sp.json +$RUN_DCA ./T=0.08/input_tp.json +$RUN_DCA ./T=0.07/input_sp.json +$RUN_DCA ./T=0.07/input_tp.json + +date From b86725fbbcfa60d4b8545ba08b4b31e15b4d8b1b Mon Sep 17 00:00:00 2001 From: Peter Doak <11856692+PDoakORNL@users.noreply.github.com> Date: Sat, 23 May 2026 14:18:19 +0000 Subject: [PATCH 5/9] Update tc tutorial to 6 walkers/6 accumulators, single-process only --- tutorials/tc/input_sp.json.in | 4 ++-- tutorials/tc/input_tp.json.in | 4 ++-- tutorials/tc/preconfigured/README.md | 2 +- tutorials/tc/preconfigured/T=0.07/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=0.07/input_tp.json | 4 ++-- tutorials/tc/preconfigured/T=0.08/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=0.08/input_tp.json | 4 ++-- tutorials/tc/preconfigured/T=0.09/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=0.09/input_tp.json | 4 ++-- tutorials/tc/preconfigured/T=0.1/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=0.1/input_tp.json | 4 ++-- tutorials/tc/preconfigured/T=0.125/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=0.25/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=0.5/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=0.75/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=1/input_sp.json | 4 ++-- 16 files changed, 31 insertions(+), 31 deletions(-) diff --git a/tutorials/tc/input_sp.json.in b/tutorials/tc/input_sp.json.in index a26005429..887258de3 100644 --- a/tutorials/tc/input_sp.json.in +++ b/tutorials/tc/input_sp.json.in @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 3, - "accumulators": 3, + "walkers": 6, + "accumulators": 6, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/input_tp.json.in b/tutorials/tc/input_tp.json.in index b42ac72d5..3ee031c3a 100644 --- a/tutorials/tc/input_tp.json.in +++ b/tutorials/tc/input_tp.json.in @@ -64,8 +64,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 3, - "accumulators": 3, + "walkers": 6, + "accumulators": 6, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/README.md b/tutorials/tc/preconfigured/README.md index 5f060c634..b097c517e 100644 --- a/tutorials/tc/preconfigured/README.md +++ b/tutorials/tc/preconfigured/README.md @@ -1,5 +1,5 @@ This directory contains ready-to-use input files and jobs scripts for the [Tc tutorial](https://github.com/CompFUSE/DCA/wiki/Tutorial:-Tc). -The files are preconfigured to run the example with a single process (no MPI) using the threaded Monte Carlo solver with 3 walkers and 3 accumulators. +The files are preconfigured to run the example with a single process (no MPI) using the threaded Monte Carlo solver with 6 walkers and 6 accumulators. The total number of measurements is 100 000. The temperature steps are given by diff --git a/tutorials/tc/preconfigured/T=0.07/input_sp.json b/tutorials/tc/preconfigured/T=0.07/input_sp.json index a0a06c0e5..70c54aff4 100644 --- a/tutorials/tc/preconfigured/T=0.07/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.07/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 3, - "accumulators": 3, + "walkers": 6, + "accumulators": 6, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.07/input_tp.json b/tutorials/tc/preconfigured/T=0.07/input_tp.json index ccf4c6200..128a457b3 100644 --- a/tutorials/tc/preconfigured/T=0.07/input_tp.json +++ b/tutorials/tc/preconfigured/T=0.07/input_tp.json @@ -64,8 +64,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 3, - "accumulators": 3, + "walkers": 6, + "accumulators": 6, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.08/input_sp.json b/tutorials/tc/preconfigured/T=0.08/input_sp.json index c6ca33b93..8aa42306e 100644 --- a/tutorials/tc/preconfigured/T=0.08/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.08/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 3, - "accumulators": 3, + "walkers": 6, + "accumulators": 6, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.08/input_tp.json b/tutorials/tc/preconfigured/T=0.08/input_tp.json index 3d13c2b37..6c8f12132 100644 --- a/tutorials/tc/preconfigured/T=0.08/input_tp.json +++ b/tutorials/tc/preconfigured/T=0.08/input_tp.json @@ -64,8 +64,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 3, - "accumulators": 3, + "walkers": 6, + "accumulators": 6, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.09/input_sp.json b/tutorials/tc/preconfigured/T=0.09/input_sp.json index 993694a68..0472d7e69 100644 --- a/tutorials/tc/preconfigured/T=0.09/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.09/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 3, - "accumulators": 3, + "walkers": 6, + "accumulators": 6, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.09/input_tp.json b/tutorials/tc/preconfigured/T=0.09/input_tp.json index 21b7d4d2d..038df3dc1 100644 --- a/tutorials/tc/preconfigured/T=0.09/input_tp.json +++ b/tutorials/tc/preconfigured/T=0.09/input_tp.json @@ -64,8 +64,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 3, - "accumulators": 3, + "walkers": 6, + "accumulators": 6, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.1/input_sp.json b/tutorials/tc/preconfigured/T=0.1/input_sp.json index 43ce4e5aa..a374cae4a 100644 --- a/tutorials/tc/preconfigured/T=0.1/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.1/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 3, - "accumulators": 3, + "walkers": 6, + "accumulators": 6, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.1/input_tp.json b/tutorials/tc/preconfigured/T=0.1/input_tp.json index 14a2f2667..a6bb08109 100644 --- a/tutorials/tc/preconfigured/T=0.1/input_tp.json +++ b/tutorials/tc/preconfigured/T=0.1/input_tp.json @@ -64,8 +64,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 3, - "accumulators": 3, + "walkers": 6, + "accumulators": 6, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.125/input_sp.json b/tutorials/tc/preconfigured/T=0.125/input_sp.json index bbfb6f195..85e76eba6 100644 --- a/tutorials/tc/preconfigured/T=0.125/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.125/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 3, - "accumulators": 3, + "walkers": 6, + "accumulators": 6, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.25/input_sp.json b/tutorials/tc/preconfigured/T=0.25/input_sp.json index 8ee38754d..d26975967 100644 --- a/tutorials/tc/preconfigured/T=0.25/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.25/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 3, - "accumulators": 3, + "walkers": 6, + "accumulators": 6, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.5/input_sp.json b/tutorials/tc/preconfigured/T=0.5/input_sp.json index b6649df9d..6f6fe65a3 100644 --- a/tutorials/tc/preconfigured/T=0.5/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.5/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 3, - "accumulators": 3, + "walkers": 6, + "accumulators": 6, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.75/input_sp.json b/tutorials/tc/preconfigured/T=0.75/input_sp.json index 64767fbf9..3f50307a6 100644 --- a/tutorials/tc/preconfigured/T=0.75/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.75/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 3, - "accumulators": 3, + "walkers": 6, + "accumulators": 6, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=1/input_sp.json b/tutorials/tc/preconfigured/T=1/input_sp.json index 9be112b61..a2b32ed99 100644 --- a/tutorials/tc/preconfigured/T=1/input_sp.json +++ b/tutorials/tc/preconfigured/T=1/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 3, - "accumulators": 3, + "walkers": 6, + "accumulators": 6, "shared-walk-and-accumulation-thread": true } }, From 0f63aa8f00b68474478e7537cf6996f3191f3c9d Mon Sep 17 00:00:00 2001 From: Peter Doak <11856692+PDoakORNL@users.noreply.github.com> Date: Tue, 26 May 2026 14:46:28 +0000 Subject: [PATCH 6/9] Switch tc tutorial to 1 walker/1 accumulator per MPI rank with shared=true The multi-thread per rank configuration (3+ walkers/accumulators with shared-walk-and-accumulation-thread) triggers a code bug causing expansion order explosion and chemical potential divergence. shared=false is being removed from the codebase. The only viable working configuration is: - walkers: 1 - accumulators: 1 - shared-walk-and-accumulation-thread: true - MPI parallelism across ranks (mpiexec -n 4) for workstation runs --- tutorials/tc/input_sp.json.in | 4 ++-- tutorials/tc/input_tp.json.in | 4 ++-- tutorials/tc/preconfigured/README.md | 2 +- tutorials/tc/preconfigured/T=0.07/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=0.07/input_tp.json | 4 ++-- tutorials/tc/preconfigured/T=0.08/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=0.08/input_tp.json | 4 ++-- tutorials/tc/preconfigured/T=0.09/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=0.09/input_tp.json | 4 ++-- tutorials/tc/preconfigured/T=0.1/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=0.1/input_tp.json | 4 ++-- tutorials/tc/preconfigured/T=0.125/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=0.25/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=0.5/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=0.75/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=1/input_sp.json | 4 ++-- .../preconfigured/job.local.analysis_U=6_d=0.95_Nc=4.sh | 9 ++++----- .../tc/preconfigured/job.local.dca_U=6_d=0.95_Nc=4.sh | 9 ++++----- 18 files changed, 39 insertions(+), 41 deletions(-) diff --git a/tutorials/tc/input_sp.json.in b/tutorials/tc/input_sp.json.in index 887258de3..c80e15470 100644 --- a/tutorials/tc/input_sp.json.in +++ b/tutorials/tc/input_sp.json.in @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 6, - "accumulators": 6, + "walkers": 1, + "accumulators": 1, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/input_tp.json.in b/tutorials/tc/input_tp.json.in index 3ee031c3a..8d537712a 100644 --- a/tutorials/tc/input_tp.json.in +++ b/tutorials/tc/input_tp.json.in @@ -64,8 +64,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 6, - "accumulators": 6, + "walkers": 1, + "accumulators": 1, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/README.md b/tutorials/tc/preconfigured/README.md index b097c517e..4623f0da7 100644 --- a/tutorials/tc/preconfigured/README.md +++ b/tutorials/tc/preconfigured/README.md @@ -1,5 +1,5 @@ This directory contains ready-to-use input files and jobs scripts for the [Tc tutorial](https://github.com/CompFUSE/DCA/wiki/Tutorial:-Tc). -The files are preconfigured to run the example with a single process (no MPI) using the threaded Monte Carlo solver with 6 walkers and 6 accumulators. +The files are preconfigured to run the example with a single process (no MPI) using the threaded Monte Carlo solver with 1 walker and 1 accumulator per MPI rank. The total number of measurements is 100 000. The temperature steps are given by diff --git a/tutorials/tc/preconfigured/T=0.07/input_sp.json b/tutorials/tc/preconfigured/T=0.07/input_sp.json index 70c54aff4..0e0c7cb1f 100644 --- a/tutorials/tc/preconfigured/T=0.07/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.07/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 6, - "accumulators": 6, + "walkers": 1, + "accumulators": 1, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.07/input_tp.json b/tutorials/tc/preconfigured/T=0.07/input_tp.json index 128a457b3..76ac11edb 100644 --- a/tutorials/tc/preconfigured/T=0.07/input_tp.json +++ b/tutorials/tc/preconfigured/T=0.07/input_tp.json @@ -64,8 +64,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 6, - "accumulators": 6, + "walkers": 1, + "accumulators": 1, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.08/input_sp.json b/tutorials/tc/preconfigured/T=0.08/input_sp.json index 8aa42306e..9ddaaca53 100644 --- a/tutorials/tc/preconfigured/T=0.08/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.08/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 6, - "accumulators": 6, + "walkers": 1, + "accumulators": 1, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.08/input_tp.json b/tutorials/tc/preconfigured/T=0.08/input_tp.json index 6c8f12132..e43f6d51e 100644 --- a/tutorials/tc/preconfigured/T=0.08/input_tp.json +++ b/tutorials/tc/preconfigured/T=0.08/input_tp.json @@ -64,8 +64,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 6, - "accumulators": 6, + "walkers": 1, + "accumulators": 1, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.09/input_sp.json b/tutorials/tc/preconfigured/T=0.09/input_sp.json index 0472d7e69..5b3ec6053 100644 --- a/tutorials/tc/preconfigured/T=0.09/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.09/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 6, - "accumulators": 6, + "walkers": 1, + "accumulators": 1, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.09/input_tp.json b/tutorials/tc/preconfigured/T=0.09/input_tp.json index 038df3dc1..4fc5a0489 100644 --- a/tutorials/tc/preconfigured/T=0.09/input_tp.json +++ b/tutorials/tc/preconfigured/T=0.09/input_tp.json @@ -64,8 +64,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 6, - "accumulators": 6, + "walkers": 1, + "accumulators": 1, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.1/input_sp.json b/tutorials/tc/preconfigured/T=0.1/input_sp.json index a374cae4a..1805bd80a 100644 --- a/tutorials/tc/preconfigured/T=0.1/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.1/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 6, - "accumulators": 6, + "walkers": 1, + "accumulators": 1, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.1/input_tp.json b/tutorials/tc/preconfigured/T=0.1/input_tp.json index a6bb08109..f0d02e8f0 100644 --- a/tutorials/tc/preconfigured/T=0.1/input_tp.json +++ b/tutorials/tc/preconfigured/T=0.1/input_tp.json @@ -64,8 +64,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 6, - "accumulators": 6, + "walkers": 1, + "accumulators": 1, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.125/input_sp.json b/tutorials/tc/preconfigured/T=0.125/input_sp.json index 85e76eba6..f96b1ddd7 100644 --- a/tutorials/tc/preconfigured/T=0.125/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.125/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 6, - "accumulators": 6, + "walkers": 1, + "accumulators": 1, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.25/input_sp.json b/tutorials/tc/preconfigured/T=0.25/input_sp.json index d26975967..01c0ee97e 100644 --- a/tutorials/tc/preconfigured/T=0.25/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.25/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 6, - "accumulators": 6, + "walkers": 1, + "accumulators": 1, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.5/input_sp.json b/tutorials/tc/preconfigured/T=0.5/input_sp.json index 6f6fe65a3..36b07849e 100644 --- a/tutorials/tc/preconfigured/T=0.5/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.5/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 6, - "accumulators": 6, + "walkers": 1, + "accumulators": 1, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.75/input_sp.json b/tutorials/tc/preconfigured/T=0.75/input_sp.json index 3f50307a6..f2958e94f 100644 --- a/tutorials/tc/preconfigured/T=0.75/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.75/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 6, - "accumulators": 6, + "walkers": 1, + "accumulators": 1, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=1/input_sp.json b/tutorials/tc/preconfigured/T=1/input_sp.json index a2b32ed99..795ff7517 100644 --- a/tutorials/tc/preconfigured/T=1/input_sp.json +++ b/tutorials/tc/preconfigured/T=1/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 6, - "accumulators": 6, + "walkers": 1, + "accumulators": 1, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/job.local.analysis_U=6_d=0.95_Nc=4.sh b/tutorials/tc/preconfigured/job.local.analysis_U=6_d=0.95_Nc=4.sh index e77adcd84..fede977cf 100755 --- a/tutorials/tc/preconfigured/job.local.analysis_U=6_d=0.95_Nc=4.sh +++ b/tutorials/tc/preconfigured/job.local.analysis_U=6_d=0.95_Nc=4.sh @@ -1,11 +1,10 @@ #!/bin/bash -# Run analysis on a local workstation (no scheduler, single process). -# NOTE: Do not use mpiexec/multi-process with the threaded solver; a code bug -# causes incorrect density measurements when MPI is combined with -# shared-walk-and-accumulation-thread. +# Run analysis on a local workstation (no scheduler) using MPI. +# The threaded solver is configured for 1 walker + 1 accumulator per MPI rank. -RUN_DCA="../../applications/analysis/main_analysis" +RUNNER="mpiexec -n 4" +RUN_DCA="${RUNNER} ../../applications/analysis/main_analysis" date diff --git a/tutorials/tc/preconfigured/job.local.dca_U=6_d=0.95_Nc=4.sh b/tutorials/tc/preconfigured/job.local.dca_U=6_d=0.95_Nc=4.sh index 285d2b3dd..8c1ad4c8a 100755 --- a/tutorials/tc/preconfigured/job.local.dca_U=6_d=0.95_Nc=4.sh +++ b/tutorials/tc/preconfigured/job.local.dca_U=6_d=0.95_Nc=4.sh @@ -1,11 +1,10 @@ #!/bin/bash -# Run all tc calculations on a local workstation (no scheduler, single process). -# NOTE: Do not use mpiexec/multi-process with the threaded solver; a code bug -# causes incorrect density measurements when MPI is combined with -# shared-walk-and-accumulation-thread. +# Run all tc calculations on a local workstation (no scheduler) using MPI. +# The threaded solver is configured for 1 walker + 1 accumulator per MPI rank. -RUN_DCA="../../applications/dca/main_dca" +RUNNER="mpiexec -n 4" +RUN_DCA="${RUNNER} ../../applications/dca/main_dca" date $RUN_DCA ./T=1/input_sp.json From b14b0dafb2ca163108d3e6e5ebcf92b5b9178d4e Mon Sep 17 00:00:00 2001 From: Peter Doak <11856692+PDoakORNL@users.noreply.github.com> Date: Tue, 26 May 2026 17:10:45 +0000 Subject: [PATCH 7/9] Add unit tests for CT_AUX_HS_configuration::get_first_non_interacting_spin_index Tests cover: - Empty configuration returns 0 - All-annihilatable config returns size() sentinel - Manually marking first entry non-annihilatable returns 0 - Inserting non-interacting vertex is found correctly Uses existing G0Setup test fixture with bilayer lattice and StubRng. --- .../ctaux/structs/CMakeLists.txt | 7 + .../structs/ct_aux_hs_configuration_test.cpp | 142 ++++++++++++++++++ 2 files changed, 149 insertions(+) create mode 100644 test/unit/phys/dca_step/cluster_solver/ctaux/structs/ct_aux_hs_configuration_test.cpp diff --git a/test/unit/phys/dca_step/cluster_solver/ctaux/structs/CMakeLists.txt b/test/unit/phys/dca_step/cluster_solver/ctaux/structs/CMakeLists.txt index 33414c352..82d0b22ca 100644 --- a/test/unit/phys/dca_step/cluster_solver/ctaux/structs/CMakeLists.txt +++ b/test/unit/phys/dca_step/cluster_solver/ctaux/structs/CMakeLists.txt @@ -6,3 +6,10 @@ dca_add_gtest(read_write_config_test INCLUDE_DIRS ${DCA_INCLUDE_DIRS};${PROJECT_SOURCE_DIR} LIBS FFTW::Double ${DCA_LIBS} ) + +dca_add_gtest(ct_aux_hs_configuration_test + FAST + GTEST_MAIN + INCLUDE_DIRS ${DCA_INCLUDE_DIRS};${PROJECT_SOURCE_DIR} + LIBS FFTW::Double ${DCA_LIBS} + ) diff --git a/test/unit/phys/dca_step/cluster_solver/ctaux/structs/ct_aux_hs_configuration_test.cpp b/test/unit/phys/dca_step/cluster_solver/ctaux/structs/ct_aux_hs_configuration_test.cpp new file mode 100644 index 000000000..8f1b5979c --- /dev/null +++ b/test/unit/phys/dca_step/cluster_solver/ctaux/structs/ct_aux_hs_configuration_test.cpp @@ -0,0 +1,142 @@ +// Copyright (C) 2025 UT-Battelle, LLC +// All rights reserved. +// +// See LICENSE for terms of usage. +// See CITATION.md for citation guidelines, if DCA++ is used for scientific publications. +// +// Unit tests for CT_AUX_HS_configuration, focusing on get_first_non_interacting_spin_index. + +#include "dca/phys/dca_step/cluster_solver/ctaux/structs/ct_aux_hs_configuration.hpp" + +#include + +#include "dca/testing/gtest_h_w_warning_blocking.h" + +#include "dca/math/random/std_random_wrapper.hpp" +#include "dca/phys/dca_step/cluster_solver/ctaux/structs/cv.hpp" + +using Scalar = double; + +#include "test/mock_mcconfig.hpp" +namespace dca { +namespace config { +using McOptions = MockMcOptions; +} // namespace config +} // namespace dca + +#include "test/unit/phys/dca_step/cluster_solver/test_setup.hpp" + +constexpr char input_name[] = + DCA_SOURCE_DIR "/test/unit/phys/dca_step/cluster_solver/ctaux/structs/input.json"; + +using CtauxHsConfigurationTest = + dca::testing::G0Setup; +using Parameters = CtauxHsConfigurationTest::Parameters; + +TEST_F(CtauxHsConfigurationTest, EmptyConfig) { + dca::phys::solver::ctaux::CV::get_H_interaction() = data_->H_interactions; + + std::vector random(200); + for (auto& x : random) + x = static_cast(std::rand()) / RAND_MAX; + Parameters::random_number_generator rng(random); + dca::phys::solver::ctaux::CT_AUX_HS_configuration config(parameters_, rng); + + // Empty configuration: method returns 0 (same as size() since both are 0). + EXPECT_EQ(0, config.get_first_non_interacting_spin_index(dca::phys::e_UP)); + EXPECT_EQ(0, config.get_first_non_interacting_spin_index(dca::phys::e_DN)); +} + +TEST_F(CtauxHsConfigurationTest, AllAnnihilatableReturnsSize) { + dca::phys::solver::ctaux::CV::get_H_interaction() = data_->H_interactions; + + std::vector random(200); + for (auto& x : random) + x = static_cast(std::rand()) / RAND_MAX; + Parameters::random_number_generator rng(random); + dca::phys::solver::ctaux::CT_AUX_HS_configuration config(parameters_, rng); + config.initialize(); + + // After initialize(), all vertices are interacting (annihilatable). + // Method should return size() as the "not found" sentinel. + const int up_size = config.get(dca::phys::e_UP).size(); + const int dn_size = config.get(dca::phys::e_DN).size(); + + EXPECT_EQ(up_size, config.get_first_non_interacting_spin_index(dca::phys::e_UP)); + EXPECT_EQ(dn_size, config.get_first_non_interacting_spin_index(dca::phys::e_DN)); +} + +TEST_F(CtauxHsConfigurationTest, FirstEntryNonAnnihilatable) { + dca::phys::solver::ctaux::CV::get_H_interaction() = data_->H_interactions; + + std::vector random(200); + for (auto& x : random) + x = static_cast(std::rand()) / RAND_MAX; + Parameters::random_number_generator rng(random); + dca::phys::solver::ctaux::CT_AUX_HS_configuration config(parameters_, rng); + config.initialize(); + + // Mark the vertex referenced by configuration_e_UP[0] as non-annihilatable. + const auto& up = config.get(dca::phys::e_UP); + if (!up.empty()) { + int target_idx = up[0].get_configuration_index(); + config[target_idx].set_annihilatable(false); + + // The first entry is now non-annihilatable, so the method should return 0. + EXPECT_EQ(0, config.get_first_non_interacting_spin_index(dca::phys::e_UP)); + EXPECT_FALSE(config[target_idx].is_annihilatable()); + } + + // Mark the vertex referenced by configuration_e_DN[0] as non-annihilatable. + const auto& dn = config.get(dca::phys::e_DN); + if (!dn.empty()) { + int target_idx = dn[0].get_configuration_index(); + config[target_idx].set_annihilatable(false); + + EXPECT_EQ(0, config.get_first_non_interacting_spin_index(dca::phys::e_DN)); + EXPECT_FALSE(config[target_idx].is_annihilatable()); + } +} + +TEST_F(CtauxHsConfigurationTest, InsertNoninteractingVertex) { + dca::phys::solver::ctaux::CV::get_H_interaction() = data_->H_interactions; + + std::vector random(200); + for (auto& x : random) + x = static_cast(std::rand()) / RAND_MAX; + Parameters::random_number_generator rng(random); + dca::phys::solver::ctaux::CT_AUX_HS_configuration config(parameters_, rng); + config.initialize(); + + int old_size = config.size(); + + // Insert a non-interacting vertex (mark_annihilatable = false). + config.insert_random_noninteracting_vertex(false); + + EXPECT_EQ(old_size + 1, config.size()); + EXPECT_FALSE(config[old_size].is_annihilatable()); + + // Verify e_UP: the first non-annihilatable index should point to a non-annihilatable vertex, + // and all entries before it must be annihilatable. + const auto& up = config.get(dca::phys::e_UP); + int first_up = config.get_first_non_interacting_spin_index(dca::phys::e_UP); + if (first_up < static_cast(up.size())) { + int config_idx = up[first_up].get_configuration_index(); + EXPECT_FALSE(config[config_idx].is_annihilatable()); + for (int i = 0; i < first_up; ++i) { + EXPECT_TRUE(config[up[i].get_configuration_index()].is_annihilatable()); + } + } + + // Same check for e_DN. + const auto& dn = config.get(dca::phys::e_DN); + int first_dn = config.get_first_non_interacting_spin_index(dca::phys::e_DN); + if (first_dn < static_cast(dn.size())) { + int config_idx = dn[first_dn].get_configuration_index(); + EXPECT_FALSE(config[config_idx].is_annihilatable()); + for (int i = 0; i < first_dn; ++i) { + EXPECT_TRUE(config[dn[i].get_configuration_index()].is_annihilatable()); + } + } +} From 85e58ac44e4ce4bff7af343d509edf182eeaf90c Mon Sep 17 00:00:00 2001 From: Peter Doak <11856692+PDoakORNL@users.noreply.github.com> Date: Tue, 26 May 2026 20:17:27 +0000 Subject: [PATCH 8/9] Fix Matrix::resize debug zeroing and update tutorial max-submatrix-size - Fix critical memory-corruption bug in Matrix::resize debug path: The column-major indexing was using row-major stride (i * new_size.second + j instead of i + j * leadingDimension()), causing zeros to be written to the wrong locations and corrupting existing matrix data. Also expanded the zeroing to cover all newly exposed elements, not just the bottom-right corner. In CT-AUX, this corruption produced incorrect determinant ratios, which caused the expansion order (number of vertices k) to spike to nonphysical values, eventually grinding the solver to a halt. - Update tutorial input templates (input_sp.json.in, input_tp.json.in) to use max-submatrix-size=256 instead of 16 for reasonable performance. - Regenerate all preconfigured tutorial inputs from the updated templates. --- include/dca/linalg/matrix.hpp | 13 +++++++++---- .../cluster_solver/ctaux/ctaux_walker.hpp | 16 ++++++++-------- .../stdthread_qmci_cluster_solver.hpp | 2 +- tutorials/tc/input_sp.json.in | 2 +- tutorials/tc/input_tp.json.in | 2 +- tutorials/tc/preconfigured/T=0.07/input_sp.json | 2 +- tutorials/tc/preconfigured/T=0.07/input_tp.json | 2 +- tutorials/tc/preconfigured/T=0.08/input_sp.json | 2 +- tutorials/tc/preconfigured/T=0.08/input_tp.json | 2 +- tutorials/tc/preconfigured/T=0.09/input_sp.json | 2 +- tutorials/tc/preconfigured/T=0.09/input_tp.json | 2 +- tutorials/tc/preconfigured/T=0.1/input_sp.json | 2 +- tutorials/tc/preconfigured/T=0.1/input_tp.json | 2 +- tutorials/tc/preconfigured/T=0.125/input_sp.json | 2 +- tutorials/tc/preconfigured/T=0.25/input_sp.json | 2 +- tutorials/tc/preconfigured/T=0.5/input_sp.json | 2 +- tutorials/tc/preconfigured/T=0.75/input_sp.json | 2 +- tutorials/tc/preconfigured/T=1/input_sp.json | 2 +- 18 files changed, 33 insertions(+), 28 deletions(-) diff --git a/include/dca/linalg/matrix.hpp b/include/dca/linalg/matrix.hpp index 8325b008a..d1d9b4da7 100644 --- a/include/dca/linalg/matrix.hpp +++ b/include/dca/linalg/matrix.hpp @@ -401,10 +401,15 @@ void Matrix::resize(std::pair new_size // This is slow but still thinking about what to do here, the legacy behavior is fine if // we're just overwriting the new sections but not if its assumed they are 0, not all client // code is clear about this. - if constexpr (device_name == linalg::DeviceType::CPU) - for (int i = size_.first; i < new_size.first; ++i) - for (int j = size_.second; j < new_size.second; ++j) - *(data_ + i * new_size.second + j) = 0; + if constexpr (device_name == linalg::DeviceType::CPU) { + const int ld = leadingDimension(); + for (int j = 0; j < new_size.second; ++j) + for (int i = size_.first; i < new_size.first; ++i) + data_[i + j * ld] = 0; + for (int j = size_.second; j < new_size.second; ++j) + for (int i = 0; i < size_.first; ++i) + data_[i + j * ld] = 0; + } size_ = new_size; } #endif diff --git a/include/dca/phys/dca_step/cluster_solver/ctaux/ctaux_walker.hpp b/include/dca/phys/dca_step/cluster_solver/ctaux/ctaux_walker.hpp index 54c117ddc..730fd9396 100644 --- a/include/dca/phys/dca_step/cluster_solver/ctaux/ctaux_walker.hpp +++ b/include/dca/phys/dca_step/cluster_solver/ctaux/ctaux_walker.hpp @@ -518,7 +518,7 @@ CtauxWalker::CtauxWalker(Parameters& parameters_ref, } } - + template void CtauxWalker::printSummary() const { // std::defaultfloat is only supported by GCC 5 or later. @@ -940,11 +940,11 @@ int CtauxWalker::generateDelayedSpinsAbortAtBennett( assert(single_spin_updates_proposed == currently_proposed_creations_ + currently_proposed_annihilations_ + num_statics); -// #ifndef NDEBUG -// if (single_spin_updates_proposed >= max_num_delayed_spins) { -// std::cout << "single_spin_updates_proposed = " << single_spin_updates_proposed << " max_num_delayed_spins = " << max_num_delayed_spins << '\n'; -// } -// #endif +#ifndef NDEBUG + if (single_spin_updates_proposed > max_num_delayed_spins) { + std::cout << "single_spin_updates_proposed = " << single_spin_updates_proposed << " max_num_delayed_spins = " << max_num_delayed_spins << '\n'; + } +#endif return single_spin_updates_proposed; } @@ -1403,7 +1403,7 @@ void CtauxWalker::add_delayed_spin(int& delayed_inde #ifndef NDEBUG isDebugTestMinMax(false, true, ratio_HS_field_DN, Gamma_index_HS_field_DN, Gamma_up_CPU, Gamma_up_diag_max, Gamma_up_diag_min, trace_depth); #endif - + Gamma_up_size += 1; } else { @@ -1459,7 +1459,7 @@ void CtauxWalker::add_delayed_spin(int& delayed_inde std::cerr << "Gamma_index_HS_field_UP = " << Gamma_index_HS_field_UP << " Gamma_dn_size = " << Gamma_dn_size << '\n'; } #endif - + ratio_HS_field_UP = ctaux_tools.solve_Gamma_blocked(Gamma_index_HS_field_UP, Gamma_dn_CPU, exp_delta_V_HS_field_UP, Gamma_dn_diag_max, Gamma_dn_diag_min); diff --git a/include/dca/phys/dca_step/cluster_solver/stdthread_qmci/stdthread_qmci_cluster_solver.hpp b/include/dca/phys/dca_step/cluster_solver/stdthread_qmci/stdthread_qmci_cluster_solver.hpp index 676a72559..75fee3a43 100644 --- a/include/dca/phys/dca_step/cluster_solver/stdthread_qmci/stdthread_qmci_cluster_solver.hpp +++ b/include/dca/phys/dca_step/cluster_solver/stdthread_qmci/stdthread_qmci_cluster_solver.hpp @@ -641,7 +641,7 @@ void StdThreadQmciClusterSolver::startWalkerAndAccumulator(int id, catch (...) { throw std::runtime_error("something mysterious went wrong in walker thread!"); } - + ++walk_finished_; if (BaseClass::writer_ && BaseClass::writer_->isADIOS2()) BaseClass::writer_->flush(); diff --git a/tutorials/tc/input_sp.json.in b/tutorials/tc/input_sp.json.in index c80e15470..01faf2093 100644 --- a/tutorials/tc/input_sp.json.in +++ b/tutorials/tc/input_sp.json.in @@ -72,7 +72,7 @@ "expansion-parameter-K": 1., "initial-configuration-size": 16, "initial-matrix-size": 16, - "max-submatrix-size": 16, + "max-submatrix-size": 256, "neglect-Bennett-updates": false, "additional-time-measurements": false } diff --git a/tutorials/tc/input_tp.json.in b/tutorials/tc/input_tp.json.in index 8d537712a..920575aaf 100644 --- a/tutorials/tc/input_tp.json.in +++ b/tutorials/tc/input_tp.json.in @@ -74,7 +74,7 @@ "expansion-parameter-K": 1., "initial-configuration-size": 16, "initial-matrix-size": 16, - "max-submatrix-size": 16, + "max-submatrix-size": 256, "neglect-Bennett-updates": false, "additional-time-measurements": false }, diff --git a/tutorials/tc/preconfigured/T=0.07/input_sp.json b/tutorials/tc/preconfigured/T=0.07/input_sp.json index 0e0c7cb1f..2193ce9e1 100644 --- a/tutorials/tc/preconfigured/T=0.07/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.07/input_sp.json @@ -72,7 +72,7 @@ "expansion-parameter-K": 1., "initial-configuration-size": 16, "initial-matrix-size": 16, - "max-submatrix-size": 16, + "max-submatrix-size": 256, "neglect-Bennett-updates": false, "additional-time-measurements": false } diff --git a/tutorials/tc/preconfigured/T=0.07/input_tp.json b/tutorials/tc/preconfigured/T=0.07/input_tp.json index 76ac11edb..1664dae9a 100644 --- a/tutorials/tc/preconfigured/T=0.07/input_tp.json +++ b/tutorials/tc/preconfigured/T=0.07/input_tp.json @@ -74,7 +74,7 @@ "expansion-parameter-K": 1., "initial-configuration-size": 16, "initial-matrix-size": 16, - "max-submatrix-size": 16, + "max-submatrix-size": 256, "neglect-Bennett-updates": false, "additional-time-measurements": false }, diff --git a/tutorials/tc/preconfigured/T=0.08/input_sp.json b/tutorials/tc/preconfigured/T=0.08/input_sp.json index 9ddaaca53..03febd669 100644 --- a/tutorials/tc/preconfigured/T=0.08/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.08/input_sp.json @@ -72,7 +72,7 @@ "expansion-parameter-K": 1., "initial-configuration-size": 16, "initial-matrix-size": 16, - "max-submatrix-size": 16, + "max-submatrix-size": 256, "neglect-Bennett-updates": false, "additional-time-measurements": false } diff --git a/tutorials/tc/preconfigured/T=0.08/input_tp.json b/tutorials/tc/preconfigured/T=0.08/input_tp.json index e43f6d51e..3ee83aff0 100644 --- a/tutorials/tc/preconfigured/T=0.08/input_tp.json +++ b/tutorials/tc/preconfigured/T=0.08/input_tp.json @@ -74,7 +74,7 @@ "expansion-parameter-K": 1., "initial-configuration-size": 16, "initial-matrix-size": 16, - "max-submatrix-size": 16, + "max-submatrix-size": 256, "neglect-Bennett-updates": false, "additional-time-measurements": false }, diff --git a/tutorials/tc/preconfigured/T=0.09/input_sp.json b/tutorials/tc/preconfigured/T=0.09/input_sp.json index 5b3ec6053..4f5407cf3 100644 --- a/tutorials/tc/preconfigured/T=0.09/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.09/input_sp.json @@ -72,7 +72,7 @@ "expansion-parameter-K": 1., "initial-configuration-size": 16, "initial-matrix-size": 16, - "max-submatrix-size": 16, + "max-submatrix-size": 256, "neglect-Bennett-updates": false, "additional-time-measurements": false } diff --git a/tutorials/tc/preconfigured/T=0.09/input_tp.json b/tutorials/tc/preconfigured/T=0.09/input_tp.json index 4fc5a0489..703b12223 100644 --- a/tutorials/tc/preconfigured/T=0.09/input_tp.json +++ b/tutorials/tc/preconfigured/T=0.09/input_tp.json @@ -74,7 +74,7 @@ "expansion-parameter-K": 1., "initial-configuration-size": 16, "initial-matrix-size": 16, - "max-submatrix-size": 16, + "max-submatrix-size": 256, "neglect-Bennett-updates": false, "additional-time-measurements": false }, diff --git a/tutorials/tc/preconfigured/T=0.1/input_sp.json b/tutorials/tc/preconfigured/T=0.1/input_sp.json index 1805bd80a..ef93ee0b9 100644 --- a/tutorials/tc/preconfigured/T=0.1/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.1/input_sp.json @@ -72,7 +72,7 @@ "expansion-parameter-K": 1., "initial-configuration-size": 16, "initial-matrix-size": 16, - "max-submatrix-size": 16, + "max-submatrix-size": 256, "neglect-Bennett-updates": false, "additional-time-measurements": false } diff --git a/tutorials/tc/preconfigured/T=0.1/input_tp.json b/tutorials/tc/preconfigured/T=0.1/input_tp.json index f0d02e8f0..4b792b47b 100644 --- a/tutorials/tc/preconfigured/T=0.1/input_tp.json +++ b/tutorials/tc/preconfigured/T=0.1/input_tp.json @@ -74,7 +74,7 @@ "expansion-parameter-K": 1., "initial-configuration-size": 16, "initial-matrix-size": 16, - "max-submatrix-size": 16, + "max-submatrix-size": 256, "neglect-Bennett-updates": false, "additional-time-measurements": false }, diff --git a/tutorials/tc/preconfigured/T=0.125/input_sp.json b/tutorials/tc/preconfigured/T=0.125/input_sp.json index f96b1ddd7..2abba830b 100644 --- a/tutorials/tc/preconfigured/T=0.125/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.125/input_sp.json @@ -72,7 +72,7 @@ "expansion-parameter-K": 1., "initial-configuration-size": 16, "initial-matrix-size": 16, - "max-submatrix-size": 16, + "max-submatrix-size": 256, "neglect-Bennett-updates": false, "additional-time-measurements": false } diff --git a/tutorials/tc/preconfigured/T=0.25/input_sp.json b/tutorials/tc/preconfigured/T=0.25/input_sp.json index 01c0ee97e..722ecd9cc 100644 --- a/tutorials/tc/preconfigured/T=0.25/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.25/input_sp.json @@ -72,7 +72,7 @@ "expansion-parameter-K": 1., "initial-configuration-size": 16, "initial-matrix-size": 16, - "max-submatrix-size": 16, + "max-submatrix-size": 256, "neglect-Bennett-updates": false, "additional-time-measurements": false } diff --git a/tutorials/tc/preconfigured/T=0.5/input_sp.json b/tutorials/tc/preconfigured/T=0.5/input_sp.json index 36b07849e..5ca86d220 100644 --- a/tutorials/tc/preconfigured/T=0.5/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.5/input_sp.json @@ -72,7 +72,7 @@ "expansion-parameter-K": 1., "initial-configuration-size": 16, "initial-matrix-size": 16, - "max-submatrix-size": 16, + "max-submatrix-size": 256, "neglect-Bennett-updates": false, "additional-time-measurements": false } diff --git a/tutorials/tc/preconfigured/T=0.75/input_sp.json b/tutorials/tc/preconfigured/T=0.75/input_sp.json index f2958e94f..f0f25b1c3 100644 --- a/tutorials/tc/preconfigured/T=0.75/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.75/input_sp.json @@ -72,7 +72,7 @@ "expansion-parameter-K": 1., "initial-configuration-size": 16, "initial-matrix-size": 16, - "max-submatrix-size": 16, + "max-submatrix-size": 256, "neglect-Bennett-updates": false, "additional-time-measurements": false } diff --git a/tutorials/tc/preconfigured/T=1/input_sp.json b/tutorials/tc/preconfigured/T=1/input_sp.json index 795ff7517..ed790b820 100644 --- a/tutorials/tc/preconfigured/T=1/input_sp.json +++ b/tutorials/tc/preconfigured/T=1/input_sp.json @@ -72,7 +72,7 @@ "expansion-parameter-K": 1., "initial-configuration-size": 16, "initial-matrix-size": 16, - "max-submatrix-size": 16, + "max-submatrix-size": 256, "neglect-Bennett-updates": false, "additional-time-measurements": false } From 53ce74ea592359563819a667b80b7d7b43a3b0a9 Mon Sep 17 00:00:00 2001 From: Peter Doak <11856692+PDoakORNL@users.noreply.github.com> Date: Thu, 28 May 2026 20:44:15 +0000 Subject: [PATCH 9/9] Set tutorial threaded solver to 4 shared walker/accumulator threads Update both input templates (input_sp.json.in, input_tp.json.in) to use 4 walkers and 4 accumulators with shared-walk-and-accumulation-thread: true. Regenerate all preconfigured tutorial inputs from the updated templates. --- tutorials/tc/input_sp.json.in | 4 ++-- tutorials/tc/input_tp.json.in | 4 ++-- tutorials/tc/preconfigured/T=0.07/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=0.07/input_tp.json | 4 ++-- tutorials/tc/preconfigured/T=0.08/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=0.08/input_tp.json | 4 ++-- tutorials/tc/preconfigured/T=0.09/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=0.09/input_tp.json | 4 ++-- tutorials/tc/preconfigured/T=0.1/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=0.1/input_tp.json | 4 ++-- tutorials/tc/preconfigured/T=0.125/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=0.25/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=0.5/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=0.75/input_sp.json | 4 ++-- tutorials/tc/preconfigured/T=1/input_sp.json | 4 ++-- 15 files changed, 30 insertions(+), 30 deletions(-) diff --git a/tutorials/tc/input_sp.json.in b/tutorials/tc/input_sp.json.in index 01faf2093..c2cf939cb 100644 --- a/tutorials/tc/input_sp.json.in +++ b/tutorials/tc/input_sp.json.in @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 1, - "accumulators": 1, + "walkers": 4, + "accumulators": 4, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/input_tp.json.in b/tutorials/tc/input_tp.json.in index 920575aaf..c0449e6c5 100644 --- a/tutorials/tc/input_tp.json.in +++ b/tutorials/tc/input_tp.json.in @@ -64,8 +64,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 1, - "accumulators": 1, + "walkers": 4, + "accumulators": 4, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.07/input_sp.json b/tutorials/tc/preconfigured/T=0.07/input_sp.json index 2193ce9e1..ad7374621 100644 --- a/tutorials/tc/preconfigured/T=0.07/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.07/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 1, - "accumulators": 1, + "walkers": 4, + "accumulators": 4, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.07/input_tp.json b/tutorials/tc/preconfigured/T=0.07/input_tp.json index 1664dae9a..9e62aac57 100644 --- a/tutorials/tc/preconfigured/T=0.07/input_tp.json +++ b/tutorials/tc/preconfigured/T=0.07/input_tp.json @@ -64,8 +64,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 1, - "accumulators": 1, + "walkers": 4, + "accumulators": 4, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.08/input_sp.json b/tutorials/tc/preconfigured/T=0.08/input_sp.json index 03febd669..ae94d391e 100644 --- a/tutorials/tc/preconfigured/T=0.08/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.08/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 1, - "accumulators": 1, + "walkers": 4, + "accumulators": 4, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.08/input_tp.json b/tutorials/tc/preconfigured/T=0.08/input_tp.json index 3ee83aff0..27eb1e01d 100644 --- a/tutorials/tc/preconfigured/T=0.08/input_tp.json +++ b/tutorials/tc/preconfigured/T=0.08/input_tp.json @@ -64,8 +64,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 1, - "accumulators": 1, + "walkers": 4, + "accumulators": 4, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.09/input_sp.json b/tutorials/tc/preconfigured/T=0.09/input_sp.json index 4f5407cf3..554a7bbed 100644 --- a/tutorials/tc/preconfigured/T=0.09/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.09/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 1, - "accumulators": 1, + "walkers": 4, + "accumulators": 4, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.09/input_tp.json b/tutorials/tc/preconfigured/T=0.09/input_tp.json index 703b12223..81d2ec6d7 100644 --- a/tutorials/tc/preconfigured/T=0.09/input_tp.json +++ b/tutorials/tc/preconfigured/T=0.09/input_tp.json @@ -64,8 +64,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 1, - "accumulators": 1, + "walkers": 4, + "accumulators": 4, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.1/input_sp.json b/tutorials/tc/preconfigured/T=0.1/input_sp.json index ef93ee0b9..ae76a74b1 100644 --- a/tutorials/tc/preconfigured/T=0.1/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.1/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 1, - "accumulators": 1, + "walkers": 4, + "accumulators": 4, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.1/input_tp.json b/tutorials/tc/preconfigured/T=0.1/input_tp.json index 4b792b47b..509f26989 100644 --- a/tutorials/tc/preconfigured/T=0.1/input_tp.json +++ b/tutorials/tc/preconfigured/T=0.1/input_tp.json @@ -64,8 +64,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 1, - "accumulators": 1, + "walkers": 4, + "accumulators": 4, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.125/input_sp.json b/tutorials/tc/preconfigured/T=0.125/input_sp.json index 2abba830b..7246f83aa 100644 --- a/tutorials/tc/preconfigured/T=0.125/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.125/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 1, - "accumulators": 1, + "walkers": 4, + "accumulators": 4, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.25/input_sp.json b/tutorials/tc/preconfigured/T=0.25/input_sp.json index 722ecd9cc..0d2ba569a 100644 --- a/tutorials/tc/preconfigured/T=0.25/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.25/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 1, - "accumulators": 1, + "walkers": 4, + "accumulators": 4, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.5/input_sp.json b/tutorials/tc/preconfigured/T=0.5/input_sp.json index 5ca86d220..396e93bff 100644 --- a/tutorials/tc/preconfigured/T=0.5/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.5/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 1, - "accumulators": 1, + "walkers": 4, + "accumulators": 4, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=0.75/input_sp.json b/tutorials/tc/preconfigured/T=0.75/input_sp.json index f0f25b1c3..2c183760e 100644 --- a/tutorials/tc/preconfigured/T=0.75/input_sp.json +++ b/tutorials/tc/preconfigured/T=0.75/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 1, - "accumulators": 1, + "walkers": 4, + "accumulators": 4, "shared-walk-and-accumulation-thread": true } }, diff --git a/tutorials/tc/preconfigured/T=1/input_sp.json b/tutorials/tc/preconfigured/T=1/input_sp.json index ed790b820..9a76f1cfb 100644 --- a/tutorials/tc/preconfigured/T=1/input_sp.json +++ b/tutorials/tc/preconfigured/T=1/input_sp.json @@ -62,8 +62,8 @@ "measurements": 100000, "threaded-solver": { - "walkers": 1, - "accumulators": 1, + "walkers": 4, + "accumulators": 4, "shared-walk-and-accumulation-thread": true } },