Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/adjoint flow #1526

Open
wants to merge 53 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
151e48f
add fermion test skeleton
Oct 25, 2024
372df86
basic wilson fermion flow test
Oct 27, 2024
462e3fd
first successful compile of adjFlowSafe
Oct 31, 2024
eddf431
Successful compile of adjFlowSafe
Nov 2, 2024
637fd72
first working Adj Safe GFlow
Nov 3, 2024
1e18c3b
added adjoint flow first commit
Nov 15, 2024
e88dc98
added hiearchical counting structure
Nov 15, 2024
91d1391
first working implementation of hierarchial adjoint gradient flow
Nov 17, 2024
368ec5b
more changes with meaningful log messages
Nov 18, 2024
42b8a5a
verbosity switches in interface
Nov 18, 2024
d123539
Mods to allow copy in/out of full QDP-JIT spinors
bjoo Oct 16, 2024
95b12e3
QDPJIT parity only flopped on ODD parity
bjoo Oct 28, 2024
6f3409e
Prettied doxygen for compute parity
bjoo Oct 28, 2024
b339c8f
Fixed another doxygen booboo
bjoo Oct 28, 2024
eb3bc5a
Use the first `r_coarse` to verify the MG setup.
SaltyChiang Nov 1, 2024
b2cea40
Enable `computeHISQForceQuda` for other gauge field orders than the M…
SaltyChiang Nov 1, 2024
1628ac7
Fix typo.
SaltyChiang Nov 1, 2024
3dd7fad
Add hash for the Eigen tarball.
SaltyChiang Nov 1, 2024
a56cb4d
add printing gauge field for debugging
jcosborn Nov 17, 2024
c2307c6
fix issue caused by formatting
jcosborn Nov 17, 2024
fae8a66
Fix bug with fine-grained accessor with staggered half precision fiel…
maddyscientist Nov 17, 2024
ef21a75
add config options for adj_test
Nov 18, 2024
8ff70c4
ONE n_safe step of Safe agrees with Hier numerically
Nov 20, 2024
34a8904
get the fin, fout out of the refernee wrapper list
Nov 20, 2024
01d44e4
numerical agreement 2 steps, 2 nsave
Nov 20, 2024
e985648
numerical agreement 3 steps, 2 nsave
Nov 20, 2024
edf5967
apparently working for n nsave steps
Nov 20, 2024
0fc7deb
clean up interface
Nov 20, 2024
3bfa042
cleaning log messages plus NB section removed (useless and irritating)
Nov 20, 2024
a6977ed
removed all NB stuff from header files...etc and changed config on Safe
Nov 20, 2024
5d455af
merged two fermion tests
Nov 21, 2024
26615f4
add fermion test
Nov 21, 2024
5d3efc1
Merge branch 'tempdev' into dev, bring lattice develop changes to dev
Nov 21, 2024
7483d27
added first pass correctness check and cleaning things up
Dec 1, 2024
b9287f3
cleaned up tests
Dec 1, 2024
b981d9f
begun adding obs params for adj
Dec 1, 2024
ccbc750
verified global indexing in hier works
Dec 1, 2024
a2a3145
removed gauge obs params from adjoint
Dec 1, 2024
8a683e0
just identical verification btw fwd and adj
Dec 1, 2024
883d8f3
removed gauge verification
Dec 1, 2024
a08c2fa
added separate timings for different methods
Dec 2, 2024
c214eae
rearranging
Dec 2, 2024
a1ecba3
tidy
Dec 2, 2024
2bcfe52
correction to deviation oom pred
Dec 4, 2024
81b55a9
revert back
Dec 4, 2024
c12e774
with matmul in test
Dec 12, 2024
7c34c5a
rearranging smear warnings
Dec 12, 2024
6ae6374
cleanup
Dec 12, 2024
b7abaf2
extend to multirank
Dec 13, 2024
091ff76
fix some warnings
Dec 14, 2024
a440cd9
Incorportating changes to lattice develop into local dev; Merge branc…
Dec 15, 2024
5dea08e
modify laplacians in adjoint
Dec 15, 2024
0683ad6
trace computation clang compatibility
Dec 16, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions include/quda.h
Original file line number Diff line number Diff line change
Expand Up @@ -871,6 +871,8 @@ extern "C" {
double alpha3; /**< The coefficient used in HYP smearing step 1*/
unsigned int meas_interval; /**< Perform the requested measurements on the gauge field at this interval */
QudaGaugeSmearType smear_type; /**< The smearing type to perform */
unsigned int adj_n_save; /**< How many intermediate gauge fields to save at each large nblock to perform adj flow*/
unsigned int hier_threshold; /**< Minimum *hierarchical* threshold for adj gradient flow*/
QudaBoolean restart; /**< Used to restart the smearing from existing gaugeSmeared */
double t0; /**< Starting flow time for Wilson flow */
int dir_ignore; /**< The direction to be ignored by the smearing algorithm
Expand Down Expand Up @@ -1703,6 +1705,26 @@ extern "C" {
*/
void performGFlowQuda(void *h_out, void *h_in, QudaInvertParam *inv_param, QudaGaugeSmearParam *smear_param,
QudaGaugeObservableParam *obs_param);

/**
* Performs Adjoint Gradient Flow (gauge + fermion) the "safe" way on gaugePrecise and stores it in gaugeSmeared
* @param[out] h_out Output fermion field
* @param[in] h_in Input fermion field
* @param[in] smear_param Parameter struct that defines the computation parameters
* @param[in,out] obs_param Parameter struct that defines which
* observables we are making and the resulting observables.
*/
void performAdjGFlowSafe(void *h_out, void *h_in, QudaInvertParam *inv_param, QudaGaugeSmearParam *smear_param);

/**
* Performs Adjoint Gradient Flow (gauge + fermion) the Hierarchical way on gaugePrecise and stores it in gaugeSmeared
* @param[out] h_out Output fermion field
* @param[in] h_in Input fermion field
* @param[in] smear_param Parameter struct that defines the computation parameters
* @param[in,out] obs_param Parameter struct that defines which
* observables we are making and the resulting observables.
*/
void performAdjGFlowHier(void *h_out, void *h_in, QudaInvertParam *inv_param, QudaGaugeSmearParam *smear_param);

/**
* @brief Calculates a variety of gauge-field observables. If a
Expand Down
16 changes: 16 additions & 0 deletions lib/check_params.h
Original file line number Diff line number Diff line change
Expand Up @@ -1163,6 +1163,18 @@ void printQudaGaugeSmearParam(QudaGaugeSmearParam *param)
#if defined CHECK_PARAM
if (param->struct_size != (size_t)INVALID_INT && param->struct_size != sizeof(*param))
errorQuda("Unexpected QudaGaugeSmearParam struct size %lu, expected %lu", param->struct_size, sizeof(*param));

if (param->n_steps <= param->adj_n_save ) {

logQuda(QUDA_SUMMARIZE,"Not good practice to adj_n_save (%d) >= n_steps (%d); adj_n_save manually altered: \n",param->n_steps,param->adj_n_save);
if (param->n_steps == 1)
param->adj_n_save = param->n_steps;
else
param->adj_n_save = param->n_steps - 1;
logQuda(QUDA_SUMMARIZE,"adj_n_save (%d) ; n_steps (%d) \n\n",param->n_steps,param->adj_n_save);

}

#else
P(struct_size, (size_t)INVALID_INT);
#endif
Expand All @@ -1176,6 +1188,8 @@ void printQudaGaugeSmearParam(QudaGaugeSmearParam *param)
P(rho, 0.0);
P(epsilon, 0.0);
P(restart, QUDA_BOOLEAN_FALSE);
P(adj_n_save,5);
P(hier_threshold,6);
P(t0, 0.0);
P(alpha1, 0.0);
P(alpha2, 0.0);
Expand All @@ -1188,6 +1202,8 @@ void printQudaGaugeSmearParam(QudaGaugeSmearParam *param)
P(rho, INVALID_DOUBLE);
P(epsilon, INVALID_DOUBLE);
P(restart, QUDA_BOOLEAN_INVALID);
P(adj_n_save,(unsigned int)INVALID_INT);
P(hier_threshold,(unsigned int)INVALID_INT);
P(t0, INVALID_DOUBLE);
P(alpha1, INVALID_DOUBLE);
P(alpha2, INVALID_DOUBLE);
Expand Down
Loading
Loading