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

staggered contraction code #1416

Merged
merged 221 commits into from
Jun 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
221 commits
Select commit Hold shift + click to select a range
200d75f
GK merge
cpviolator Aug 10, 2021
dbb48c4
First implementation of the shifts required for the staggered spin-ta…
AlexVaq Aug 23, 2021
0b1371d
Fixed typo in prototype input for qudaShift
AlexVaq Aug 23, 2021
1a5188e
Bug fixes
AlexVaq Sep 3, 2021
4158d90
Added covDev for staggered
AlexVaq Sep 9, 2021
bd136d4
Made the gauge field persistent
AlexVaq Sep 9, 2021
bdf797e
Cleaning stuff up
AlexVaq Sep 9, 2021
10ca36b
GK merge
cpviolator Sep 17, 2021
aa5eeba
Merge remote-tracking branch 'origin/feature/generic_kernel' into fea…
cpviolator Sep 17, 2021
89b33b6
Merge remote-tracking branch 'origin/feature/generic_kernel' into fea…
cpviolator Sep 20, 2021
a7bb779
First implementation of the shifts required for the staggered spin-ta…
AlexVaq Aug 23, 2021
bdb9ae6
Fixed typo in prototype input for qudaShift
AlexVaq Aug 23, 2021
80586cf
Bug fixes
AlexVaq Sep 3, 2021
e5c2e13
Added covDev for staggered
AlexVaq Sep 9, 2021
17c8309
Made the gauge field persistent
AlexVaq Sep 9, 2021
4e67227
Cleaning stuff up
AlexVaq Sep 9, 2021
d4c4e28
Merge branch 'feature/spin-taste_operator' of github.com:lattice/quda…
AlexVaq Sep 20, 2021
e116413
Tweak parameter setting calls
cpviolator Sep 20, 2021
7d34ac3
Merge branch 'feature/generic_kernel' into feature/spin-taste_operator
Sep 21, 2021
6239c22
First implementation of the shifts required for the staggered spin-ta…
AlexVaq Aug 23, 2021
f2999f6
Fixed typo in prototype input for qudaShift
AlexVaq Aug 23, 2021
521576a
Bug fixes
AlexVaq Sep 3, 2021
c70122d
Added covDev for staggered
AlexVaq Sep 9, 2021
e054a9a
Made the gauge field persistent
AlexVaq Sep 9, 2021
4da8ab4
Cleaning stuff up
AlexVaq Sep 9, 2021
f57fa24
First implementation of the shifts required for the staggered spin-ta…
AlexVaq Aug 23, 2021
88334b3
Fixed typo in prototype input for qudaShift
AlexVaq Aug 23, 2021
b8cad49
Bug fixes
AlexVaq Sep 3, 2021
377504f
Added covDev for staggered
AlexVaq Sep 9, 2021
bc8cd81
Made the gauge field persistent
AlexVaq Sep 9, 2021
6fb9320
Cleaning stuff up
AlexVaq Sep 9, 2021
b963555
Tweak parameter setting calls
cpviolator Sep 20, 2021
845777f
Bring even with develop
cpviolator Oct 13, 2021
d3f610e
Apply new method of ReduceArg construction
cpviolator Oct 13, 2021
015d75b
Merge branch 'feature/hotqcd_correlators_gk_merged' into try-merge
Oct 19, 2021
82caad4
Resolve multiple definitions of blas test configuration parameters.
Oct 20, 2021
c88fcfb
Spin-taste operator for MILC, v1
AlexVaq Oct 22, 2021
6fcdab3
Merge branch 'feature/spin-taste_operator' of github.com:lattice/quda…
AlexVaq Oct 22, 2021
a9254ed
First implementation of the shifts required for the staggered spin-ta…
AlexVaq Aug 23, 2021
511df85
Fixed typo in prototype input for qudaShift
AlexVaq Aug 23, 2021
5ea1897
Bug fixes
AlexVaq Sep 3, 2021
79ab219
Added covDev for staggered
AlexVaq Sep 9, 2021
fd978ec
Made the gauge field persistent
AlexVaq Sep 9, 2021
1c59890
Cleaning stuff up
AlexVaq Sep 9, 2021
59680d1
First implementation of the shifts required for the staggered spin-ta…
AlexVaq Aug 23, 2021
27871be
Fixed typo in prototype input for qudaShift
AlexVaq Aug 23, 2021
b7f8b24
Bug fixes
AlexVaq Sep 3, 2021
40e3362
Added covDev for staggered
AlexVaq Sep 9, 2021
800b2ad
Made the gauge field persistent
AlexVaq Sep 9, 2021
7d33161
Cleaning stuff up
AlexVaq Sep 9, 2021
b74ddaf
Tweak parameter setting calls
cpviolator Sep 20, 2021
e6db3bd
Spin-taste operator for MILC, v1
AlexVaq Oct 22, 2021
5875c7f
Bug fixes
AlexVaq Oct 22, 2021
87a67e4
Added covDev for staggered
AlexVaq Oct 22, 2021
d1c8278
Made the gauge field persistent
AlexVaq Sep 9, 2021
8ae5e91
Cleaning stuff up
AlexVaq Sep 9, 2021
06085ed
Bug fixes
AlexVaq Oct 22, 2021
1202662
Added covDev for staggered
AlexVaq Oct 22, 2021
0988c01
Made the gauge field persistent
AlexVaq Sep 9, 2021
354eb0e
Cleaning stuff up
AlexVaq Sep 9, 2021
9678b6e
Merge branch 'feature/spin-taste_operator' of github.com:lattice/quda…
AlexVaq Oct 22, 2021
4db78e6
Prevent global reduction in contraction kernels, populate a global le…
cpviolator Oct 24, 2021
69b1d83
Fixed some minor potential bugs
AlexVaq Oct 26, 2021
9aa0437
Merge branch 'feature/spin-taste_operator' of github.com:lattice/quda…
Nov 2, 2021
94ae725
Dean's fix: Prevent global reduction in contraction kernels
Nov 11, 2021
ba6446e
Merge branch 'develop' into try-merge
Nov 15, 2021
72f1edb
Change vector_type to array in meson contractions.
Nov 16, 2021
0d2db60
Merge branch 'feature/spin-taste_operator' into merge_st_corr_with_sp…
Nov 16, 2021
a4d50a1
Fix missing libmpi_cxx dependency when linking tests.
Nov 18, 2021
10285c6
Merge branch 'try-merge' into feature/staggered_correlators_gk
Nov 18, 2021
e6712d3
Merge branch 'develop' into feature/staggered_correlators_gk
Nov 18, 2021
1ab37b3
tweak output verbosity in correlation function
cpviolator Nov 24, 2021
6838399
Merge remote-tracking branch 'origin' into feature/hotqcd_correlators…
cpviolator Nov 24, 2021
606cf6d
Rename vector_type to VectorType
cpviolator Nov 24, 2021
1e5803a
Use correct vector type
cpviolator Nov 24, 2021
42cb2ce
Merge branch 'develop' into feature/staggered_correlators_gk
Dec 2, 2021
792fc9a
Merge branch 'develop' into try-merge
Jan 7, 2022
1db9c55
Merge branch 'develop' into try-merge
Jan 10, 2022
fa17ac6
develop merge
cpviolator Jan 11, 2022
b71c88d
Merge remote-tracking branch 'origin' into feature/hotqcd_correlators…
cpviolator Jan 11, 2022
50cba58
Develop merge
cpviolator Jan 29, 2022
5e651cc
Merge remote-tracking branch 'origin' into feature/hotqcd_correlators…
cpviolator Feb 23, 2022
1902c25
Merge remote-tracking branch 'origin' into feature/hotqcd_correlators…
cpviolator Mar 3, 2022
d5c1e9a
develop merge
cpviolator Mar 8, 2022
f857f31
Merge branch 'feature/reduction_comm_cleanup' into feature/hotqcd_cor…
cpviolator Mar 8, 2022
0ce3ce7
Update contrcation kernels to conform to new reduction classes
cpviolator Mar 9, 2022
80f078a
fix minor bugs
cpviolator Mar 9, 2022
3923e55
Mid debug checkpoint
cpviolator Mar 10, 2022
c3026bb
Revert to old return statement
cpviolator Mar 10, 2022
21e2527
Merge branch 'feature/reduction_comm_cleanup' into feature/hotqcd_cor…
cpviolator Mar 10, 2022
f00ed3b
Apply changes to contraction kernels to bring into line with newer re…
cpviolator Mar 11, 2022
e326a9a
Use sincos for trig in contractions
cpviolator Mar 11, 2022
c253c37
Merge branch 'develop' into feature/hotqcd_correlators_gk_merged
cpviolator Mar 15, 2022
f35a535
Merge remote-tracking branch 'origin' into feature/hotqcd_correlators…
cpviolator Mar 17, 2022
e02e64e
Remove debug printf statements and timers
AlexVaq Mar 22, 2022
106708c
Added flag to refresh the gauge field in qudaSpinTaste and qudaShift
AlexVaq Mar 23, 2022
bef49b9
Added guard for null fields
AlexVaq Mar 23, 2022
c972bde
Alexei's fixes for arguments to ReduceArg.
james-simone Mar 28, 2022
d7d0d92
Merge branch 'feature/staggered_correlators_gk' of github.com:lattice…
james-simone Mar 29, 2022
fdc9b32
Merge branch 'develop' into feature/staggered_correlators_gk
alexstrel May 4, 2022
c48ea75
Merge branch 'feature/hotqcd_correlators_gk_merged' into feature/stag…
alexstrel May 6, 2022
41767c4
fixed compilation errors
May 10, 2022
4da244a
Add contractions on host to contractFT_test.
james-simone Aug 12, 2022
754edc2
Fixed bug in three- and four-link staggered spin-taste operators in s…
james-simone Aug 24, 2022
4784777
From hotfix/cmake_nvmath_libs. Fix to allow cmake to find the math libs
james-simone Oct 7, 2022
8edff75
Merge branch 'develop' into feature/staggered_correlators_gk
alexstrel Feb 2, 2023
f706b9e
corrected develop merge, a number of minor compilation fixes
Feb 7, 2023
c03431c
Merge branch 'develop' into feature/staggered_correlators_gk
maddyscientist Feb 13, 2023
af6dce1
Add make_4d_prop_quda source code file
cpviolator Feb 13, 2023
219db4a
Duplicate enum QudaContractGamma_s.
james-simone Feb 14, 2023
947834e
Restore QUDA_FFT_SYMM and QUDA_CONTRACT_TYPE enums.
james-simone Feb 14, 2023
19760e6
Fixes for contaction kernels. File lib/interface_quda.cpp not compiling.
james-simone Feb 14, 2023
7d261a2
Restore StaggeredContract
james-simone Feb 14, 2023
590d5de
Merge branch 'develop' into not_a_feature_rather_a_hope/staggered_cor…
cpviolator Mar 6, 2023
a33db25
Edit out unwanted code, test suite compiles.
cpviolator Mar 8, 2023
0a3b5af
Clean smearing of gauge field for wilson inversions
cpviolator Mar 8, 2023
35b895e
Enable smearing for inverter, MG, and eigensolver. Need to think abou…
cpviolator Mar 8, 2023
459363c
Restore qudaContractFT to MILC.
james-simone Mar 9, 2023
c91027c
Restore qudaContractFT signature.
james-simone Mar 11, 2023
c112701
Move gauge smearing to loadGaugeQuda, encapsulate smearing into gauge…
cpviolator Mar 12, 2023
051e926
Add boolean to gauge param to control smearing
cpviolator Mar 12, 2023
ebc2eb9
Differentiate fermion smearing operators for staggered and Wilson typ…
cpviolator Mar 13, 2023
7f47dfd
Fuse wilson type fermion smearing routines
cpviolator Mar 13, 2023
775fd5f
fix gauge pointer logic in TwoLinK
cpviolator Mar 13, 2023
b12f6b9
Update TwoLinkGaussianSmear interface function
cpviolator Mar 14, 2023
5d6ee5e
Merge in feature/quark-smearing.milc-interface, need to rework the fr…
cpviolator Mar 14, 2023
ab8a9ae
Add QUDA_TWOLINK_LINKS link type, remove all gaugeWorking references,…
cpviolator Mar 15, 2023
1e1c563
Add option to save gaugeTwoLink
cpviolator Mar 15, 2023
aabe5b5
Fix typo in commit 1e1c5631d8c029dcde8f7ba3bf78d602cee2431e
cpviolator Mar 15, 2023
90f557c
Fixed typo
james-simone Mar 15, 2023
0ee4e0c
Change last arg (gauge refresh) of qudaSpinTaste to pointer
detar Apr 28, 2023
72ed77f
Merge branch 'hotfix/heavy-quark-restart' into not_a_feature_rather_a…
james-simone Jun 26, 2023
77c2660
Merge branch 'develop' into not_a_feature_rather_a_hope/staggered_cor…
james-simone Jul 6, 2023
de56ddf
Merge branch 'develop' into not_a_feature_rather_a_hope/staggered_cor…
alexstrel Nov 3, 2023
59c4d81
Merge branch 'develop' into feature/staggered_correlators
alexstrel Nov 3, 2023
f06e88d
Merge branch 'develop' into feature/staggered_correlators
alexstrel Nov 10, 2023
34bef76
Merge branch 'develop' into feature/staggered_correlators
alexstrel Nov 10, 2023
b905793
cleaned artifacts, added Jim to co-author list
alexstrel Nov 10, 2023
c2d6e23
massive cleaning: removed artifacts
alexstrel Nov 30, 2023
84851f3
corrected zero initialization for static arrays
alexstrel Nov 30, 2023
f1b006a
added inline keyword for applySign function
alexstrel Nov 30, 2023
f8208bd
corrected previous commit: moved function body of applySign into oper…
alexstrel Nov 30, 2023
22b83a2
cleaned SpinTastePhase class
alexstrel Nov 30, 2023
da66551
fixed commit 22b83a2
alexstrel Dec 1, 2023
40cee99
Merge branch 'develop' into feature/staggered_correlators
alexstrel Dec 1, 2023
f49efe2
fixed compiler error (extra set of braces was messing)
alexstrel Dec 1, 2023
4d76007
minor cleaning of the contraction.cuh, helper structures are now move…
alexstrel Dec 4, 2023
92e6bf8
changed argument types in the interface functions (now are passed by …
alexstrel Dec 4, 2023
227a56d
using container of fields, instead of pointers
alexstrel Dec 4, 2023
4fa8f65
moved objects to stack
alexstrel Dec 5, 2023
49a2c1d
replaced spin_ with spin
alexstrel Dec 11, 2023
2d9a4b8
moved getSign sub-routine into operator()
alexstrel Dec 11, 2023
b609d38
added a spin=1 support for covdev test
alexstrel Dec 15, 2023
9bf3402
now DR contraction kernel is isolated (but share uniform control stru…
alexstrel Dec 20, 2023
d62ea10
removed correlator test
alexstrel Dec 20, 2023
5e95693
Merge branch 'develop' into feature/staggered_correlators
alexstrel Jan 2, 2024
28ffe81
minor cleaning of the contraction kernel, add doxygen
alexstrel Jan 2, 2024
32b9220
Clean up profiling
maddyscientist Jan 12, 2024
ba28de4
Switch on CONTRACT, COVDEV and SMEAR_GAUSS_TWOLINK for cuda and rocm …
maddyscientist Jan 12, 2024
5fe7a4b
For qudaSpinTaste and qudaShift, fixes three issues:
detar Jan 14, 2024
28dff9b
In qudaSpinTaste, pass the reloadGaugeField parameter by value.
detar Jan 14, 2024
7ed1a8c
Merge branch 'not_a_feature_rather_a_hope/staggered_correlator_gk' in…
maddyscientist Jan 16, 2024
80968c7
Delete some chiral propagator code that's orthogonal to this PR
maddyscientist Jan 16, 2024
bb6ad72
Merge remote-tracking branch 'origin' into feature/staggered_correlators
maddyscientist Jan 16, 2024
a8ae0e5
Update CMakeLists.txt
maddyscientist Jan 16, 2024
2c10c66
Merge branch 'develop' into feature/staggered_correlators
alexstrel Jan 18, 2024
11e0349
updated contraction test
alexstrel Feb 9, 2024
b853ee8
Merge branch 'develop' into feature/staggered_correlators
alexstrel Feb 9, 2024
4c6dfd0
corrected previous merge, note that this is related to gauge smearing…
alexstrel Feb 9, 2024
2d58f07
fixed compilation issues
alexstrel Feb 9, 2024
6c4eea9
source position is now set via CL option (--prop-source-position) , d…
alexstrel Feb 9, 2024
efc230f
added missed parameter initialization
alexstrel Feb 16, 2024
773f2d9
minor cleaning, commented spin=4 block
alexstrel Feb 23, 2024
2f84088
Merge branch 'develop' into feature/staggered_correlators
alexstrel Mar 7, 2024
d5a766b
fixed gtest, detected mem leak
alexstrel Mar 8, 2024
6028240
removed artifacts (redundant code led to memleak)
alexstrel Mar 8, 2024
956ef83
updated covdev test application (needs some cleaning, though)
alexstrel Mar 14, 2024
89c5ed2
Merge branch 'develop' into feature/staggered_correlators
alexstrel Apr 1, 2024
3d39d98
modified covdev test application: added covdev_mu option
alexstrel Apr 5, 2024
1ea6057
Merge branch 'develop' into feature/staggered_correlators
alexstrel Apr 5, 2024
601142c
Merge branch 'develop' into feature/staggered_correlators
alexstrel Apr 12, 2024
1a4c7e1
added error message when no direction is chosen for the covdev test
alexstrel Apr 17, 2024
4135a76
Merge branch 'develop' into feature/staggered_correlators
alexstrel Apr 24, 2024
e0451ef
updated (corrected) doxygen comments for milc interface functions
alexstrel Apr 24, 2024
0120341
corrected doxygen comments in quda.h
alexstrel Apr 24, 2024
0847503
removed unnecessary argument (defaulted to zero)
alexstrel Apr 24, 2024
61eb8fb
removed fflush
alexstrel Apr 24, 2024
9e980bf
replaced printf with printfQuda
alexstrel Apr 24, 2024
77c3127
corrected previous commit with more strict error message
alexstrel Apr 24, 2024
92ed5a7
Merge branch 'develop' into feature/staggered_correlators
alexstrel May 1, 2024
4d43b5d
enabled ctest , removed contract_test.cpp (can be re-introduced later)
alexstrel May 1, 2024
32b5bbe
Merge branch 'develop' into feature/staggered_correlators
alexstrel May 8, 2024
6dfde4c
removed artifacts
alexstrel May 8, 2024
f910778
removed fermion_smear_transform object
alexstrel May 8, 2024
c2beb0d
contractFT_test needs the testing cml option group
maddyscientist Jun 7, 2024
0d9328e
Kernel cleanup
maddyscientist Jun 7, 2024
9da0d3b
Apply clang format
maddyscientist Jun 7, 2024
a5569e9
Update ctest to run contractFT_test with testing enabled
maddyscientist Jun 7, 2024
5e526ab
Merge branch 'develop' into feature/staggered_correlators
alexstrel Jun 11, 2024
514ce93
corrected macro in enum_quda_fortran.h
alexstrel Jun 11, 2024
8879b08
corrected enum_quda_fortran.h (added numerals)
alexstrel Jun 11, 2024
dd7c47a
removed obsolete file
alexstrel Jun 11, 2024
6925fbd
removed artifacts
alexstrel Jun 11, 2024
1b58a10
removed commented snippet
alexstrel Jun 11, 2024
88a7263
removed mass_array
alexstrel Jun 11, 2024
d60500e
added a comment regarding spin=4 case
alexstrel Jun 11, 2024
2ace7a2
removed artifacts
alexstrel Jun 11, 2024
6323dc2
added error message when test type is wrong
alexstrel Jun 11, 2024
9dfbe57
removed static constexpr var to avoid possible unintended behavior
alexstrel Jun 11, 2024
a3eec55
Apply clang-format
maddyscientist Jun 13, 2024
1c773cc
Merge branch 'develop' into feature/staggered_correlators
alexstrel Jun 13, 2024
192bb6f
contractFT -> contract_ft
maddyscientist Jun 14, 2024
75cb0ca
Merge branch 'feature/staggered_correlators' of github.com:lattice/qu…
maddyscientist Jun 14, 2024
cc2cd2f
Remove dead code
maddyscientist Jun 14, 2024
f6039ba
Merge branch 'develop' of github.com:lattice/quda into feature/stagge…
maddyscientist Jun 14, 2024
d8233ba
Contractions are now always enabled by default. Remove QUDA_CONTRACT…
maddyscientist Jun 14, 2024
ba1db89
Tweak contact_ft_test to make it more robust
maddyscientist Jun 15, 2024
4417b8f
Switch cos/sin to cospi/sinpi in contraction kernel
maddyscientist Jun 15, 2024
e67a767
Reinstate nSpin=4 Laplace operator (closes 475)
maddyscientist Jun 15, 2024
d2c3164
Apply clang format
maddyscientist Jun 15, 2024
963e2b2
CI fix
maddyscientist Jun 15, 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
1 change: 1 addition & 0 deletions .github/workflows/cuda_githubactions_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ jobs:
-DCMAKE_CUDA_COMPILER_LAUNCHER=ccache
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
-DQUDA_GPU_ARCH=sm_80 -DQUDA_GPU_ARCH_SUFFIX=virtual -DQUDA_JITIFY=ON
-DQUDA_COVDEV=ON
-DQUDA_MULTIGRID=ON
-DQUDA_MULTIGRID_NVEC_LIST=24
-DQUDA_MDW_FUSED_LS_LIST=4
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/rocm-build-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ jobs:
-DQUDA_DIRAC_WILSON=ON \
-DQUDA_DIRAC_LAPLACE=ON \
-DQUDA_CLOVER_DYNAMIC=ON \
-DQUDA_COVDEV=ON \
-DQUDA_QDPJIT=OFF \
-DQUDA_INTERFACE_QDPJIT=OFF \
-DQUDA_INTERFACE_MILC=ON \
Expand Down
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
*.a
*~
tests/*_test
make.inc
milc_interface/*
*#*
*.pyc
Expand Down
1 change: 0 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,6 @@ option(QUDA_DIRAC_LAPLACE "build laplace operator" ${QUDA_DIRAC_DEFAULT})

option(QUDA_DIRAC_DISTANCE_PRECONDITIONING "build code for distance preconditioned Wilson/clover Dirac operators" OFF)

option(QUDA_CONTRACT "build code for bilinear contraction" OFF)
option(QUDA_COVDEV "build code for covariant derivative" OFF)

option(QUDA_QIO "build QIO code for binary I/O" OFF)
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,7 @@ Advanced Scientific Computing (PASC21) [arXiv:2104.05615[hep-lat]].
* Mario Schröck (INFN)
* Aniket Sen (HISKP, University of Bonn)
* Guochun Shi (NCSA)
* James Simone (Fermi National Accelerator Laboratory)
* Alexei Strelchenko (Fermi National Accelerator Laboratory)
* Jiqun Tu (NVIDIA)
* Carsten Urbach (HISKP, University of Bonn)
Expand Down
1 change: 1 addition & 0 deletions ci/docker/Dockerfile.build
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ RUN QUDA_TEST_GRID_SIZE="1 1 1 2" cmake -S /quda/src \
-DQUDA_DIRAC_TWISTED_CLOVER=ON \
-DQUDA_DIRAC_STAGGERED=ON \
-DQUDA_DIRAC_LAPLACE=ON \
-DQUDA_COVDEV=ON \
-GNinja \
-B /quda/build

Expand Down
26 changes: 26 additions & 0 deletions include/contract_quda.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,32 @@

namespace quda
{
/**
* Interface function that launch contraction compute kernels,
* used in interface_quda.cpp
* @param[in] x input source field
* @param[in] y input source field
* @param[out] result container of complex contraction results for
* all decay slices and spins
* @param[in] cType contraction types as defined in QudaContractType enum
* @param[in] source_position 4d array of source position
* @param[in] mom_mode 4d array of momentum
* @param[in] fft_type Fourier phase factor type
* as defined in QudaFFTSymmType enum
* @param[in] s1 spin component index (0 for staggered)
* @param[in] b1 spin component index (0 for staggered)
*/

void contractSummedQuda(const ColorSpinorField &x, const ColorSpinorField &y, std::vector<Complex> &result,
maddyscientist marked this conversation as resolved.
Show resolved Hide resolved
QudaContractType cType, const int *const source_position, const int *const mom_mode,
const QudaFFTSymmType *const fft_type, const size_t s1, const size_t b1);
/**
* @param[in] x input color spinor
* @param[in] y input color spinor
* @param[out] result pointer to the spinxspin projections per lattice site
* @param[in] cType contraction type
*/

void contractQuda(const ColorSpinorField &x, const ColorSpinorField &y, void *result, QudaContractType cType);

/**
Expand Down
22 changes: 22 additions & 0 deletions include/dslash_quda.h
Original file line number Diff line number Diff line change
Expand Up @@ -927,4 +927,26 @@ namespace quda
*/
void gamma5(ColorSpinorField &out, const ColorSpinorField &in);

/**
@brief Applies a (1 \pm gamma5)/2 projection matrix to a spinor
@param[out] out Output field
@param[in] in Input field
@param[in] proj Sign of \pm projection
*/
void ApplyChiralProj(ColorSpinorField &out, const ColorSpinorField &in, const int proj);

/**
@brief Constructs the mid-point 4D propagator from a 5D domain wall propagator
@param[out] out Output field
@param[in] in Input field
*/
void make4DMidPointProp(ColorSpinorField &out, ColorSpinorField &in);

/**
@brief Constructs the chiral 4D propagator from a 5D domain wall propagator
@param[out] out Output field
@param[in] in Input field
*/
void make4DChiralProp(ColorSpinorField &out, ColorSpinorField &in);

} // namespace quda
46 changes: 44 additions & 2 deletions include/enum_quda.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ typedef enum QudaLinkType_s {
QUDA_MOMENTUM_LINKS,
QUDA_COARSE_LINKS, // used for coarse-gauge field with multigrid
QUDA_SMEARED_LINKS, // used for loading and saving gaugeSmeared in the interface
QUDA_TWOLINK_LINKS, // used for staggered fermion smearing.
QUDA_WILSON_LINKS = QUDA_SU3_LINKS, // used by wilson, clover, twisted mass, and domain wall
QUDA_ASQTAD_FAT_LINKS = QUDA_GENERAL_LINKS,
QUDA_ASQTAD_LONG_LINKS = QUDA_THREE_LINKS,
Expand Down Expand Up @@ -544,12 +545,47 @@ typedef enum QudaStaggeredPhase_s {
QUDA_STAGGERED_PHASE_INVALID = QUDA_INVALID_ENUM
} QudaStaggeredPhase;

typedef enum QudaSpinTasteGamma_s {
QUDA_SPIN_TASTE_G1 = 0,
QUDA_SPIN_TASTE_GX = 1,
QUDA_SPIN_TASTE_GY = 2,
QUDA_SPIN_TASTE_GZ = 4,
QUDA_SPIN_TASTE_GT = 8,
QUDA_SPIN_TASTE_G5 = 15,
QUDA_SPIN_TASTE_GYGZ = 6,
QUDA_SPIN_TASTE_GZGX = 5,
QUDA_SPIN_TASTE_GXGY = 3,
QUDA_SPIN_TASTE_GXGT = 9,
QUDA_SPIN_TASTE_GYGT = 10,
QUDA_SPIN_TASTE_GZGT = 12,
QUDA_SPIN_TASTE_G5GX = 14,
QUDA_SPIN_TASTE_G5GY = 13,
QUDA_SPIN_TASTE_G5GZ = 11,
QUDA_SPIN_TASTE_G5GT = 7,
QUDA_SPIN_TASTE_INVALID = QUDA_INVALID_ENUM
} QudaSpinTasteGamma;

typedef enum QudaContractType_s {
QUDA_CONTRACT_TYPE_OPEN, // Open spin elementals
QUDA_CONTRACT_TYPE_DR, // DegrandRossi
QUDA_CONTRACT_TYPE_STAGGERED_FT_T, // Staggered, FT in tdim
QUDA_CONTRACT_TYPE_DR_FT_T, // DegrandRossi insertion, FT in tdim
QUDA_CONTRACT_TYPE_DR_FT_Z, // DegrandRossi insertion, FT in zdim
QUDA_CONTRACT_TYPE_STAGGERED, // Staggered, no summation (TODO: remove line)
QUDA_CONTRACT_TYPE_DR, // DegrandRossi insertion, no summation
QUDA_CONTRACT_TYPE_OPEN, // Open spin elementals, no summation
QUDA_CONTRACT_TYPE_OPEN_SUM_T, // Open spin elementals, spatially summed over tdim
QUDA_CONTRACT_TYPE_OPEN_SUM_Z, // Open spin elementals, spatially summed over zdim
QUDA_CONTRACT_TYPE_OPEN_FT_T, // Open spin elementals, FT in tdim
QUDA_CONTRACT_TYPE_OPEN_FT_Z, // Open spin elementals, FT in zdim
QUDA_CONTRACT_TYPE_INVALID = QUDA_INVALID_ENUM
} QudaContractType;

typedef enum QudaFFTSymmType_t {
QUDA_FFT_SYMM_ODD = 1, // sin(phase)
QUDA_FFT_SYMM_EVEN = 2, // cos(phase)
QUDA_FFT_SYMM_EO = 3, // exp(-i phase)
QUDA_FFT_SYMM_INVALID = QUDA_INVALID_ENUM
} QudaFFTSymmType;

typedef enum QudaContractGamma_s {
QUDA_CONTRACT_GAMMA_I = 0,
QUDA_CONTRACT_GAMMA_G1 = 1,
Expand Down Expand Up @@ -580,6 +616,12 @@ typedef enum QudaGaugeSmearType_s {
QUDA_GAUGE_SMEAR_INVALID = QUDA_INVALID_ENUM
} QudaGaugeSmearType;

typedef enum QudaWFlowType_s {
QUDA_WFLOW_TYPE_WILSON,
QUDA_WFLOW_TYPE_SYMANZIK,
QUDA_WFLOW_TYPE_INVALID = QUDA_INVALID_ENUM
} QudaWFlowType;

typedef enum QudaFermionSmearType_s {
QUDA_FERMION_SMEAR_TYPE_GAUSSIAN,
QUDA_FERMION_SMEAR_TYPE_WUPPERTAL,
Expand Down
34 changes: 31 additions & 3 deletions include/enum_quda_fortran.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#define QUDA_MOMENTUM_LINKS 3
#define QUDA_COARSE_LINKS 4
#define QUDA_SMEARED_LINKS 5
#define QUDA_TWOLINK_LINKS 6

#define QUDA_WILSON_LINKS QUDA_SU3_LINKS
#define QUDA_ASQTAD_FAT_LINKS QUDA_GENERAL_LINKS
Expand Down Expand Up @@ -477,10 +478,37 @@
#define QUDA_STAGGERED_PHASE_TIFR 3
#define QUDA_STAGGERED_PHASE_INVALID QUDA_INVALID_ENUM

#define QudaSpinTasteGamma integer(4)
#define QUDA_SPIN_TASTE_G1 0
#define QUDA_SPIN_TASTE_GX 1
#define QUDA_SPIN_TASTE_GY 2
#define QUDA_SPIN_TASTE_GZ 4
#define QUDA_SPIN_TASTE_GT 8
#define QUDA_SPIN_TASTE_G5 15
#define QUDA_SPIN_TASTE_GYGZ 6
#define QUDA_SPIN_TASTE_GZGX 5
#define QUDA_SPIN_TASTE_GXGY 3
#define QUDA_SPIN_TASTE_GXGT 9
#define QUDA_SPIN_TASTE_GYGT 10
#define QUDA_SPIN_TASTE_GZGT 12
#define QUDA_SPIN_TASTE_G5GX 14
#define QUDA_SPIN_TASTE_G5GY 13
#define QUDA_SPIN_TASTE_G5GZ 11
#define QUDA_SPIN_TASTE_G5GT 7
#define QUDA_SPIN_TASTE_INVALID QUDA_INVALID_ENUM

#define QudaContractType integer(4)
#define QUDA_CONTRACT_TYPE_OPEN ,
#define QUDA_CONTRACT_TYPE_DR ,
#define QUDA_CONTRACT_TYPE_INVALID = QUDA_INVALID_ENUM
#define QUDA_CONTRACT_TYPE_STAGGERED_FT_T 0
#define QUDA_CONTRACT_TYPE_DR_FT_T 1
#define QUDA_CONTRACT_TYPE_DR_FT_Z 2
#define QUDA_CONTRACT_TYPE_STAGGERED 3
#define QUDA_CONTRACT_TYPE_DR 4
#define QUDA_CONTRACT_TYPE_OPEN 5
#define QUDA_CONTRACT_TYPE_OPEN_SUM_T 6
#define QUDA_CONTRACT_TYPE_OPEN_SUM_Z 7
#define QUDA_CONTRACT_TYPE_OPEN_FT_T 8
#define QUDA_CONTRACT_TYPE_OPEN_FT_Z 9
#define QUDA_CONTRACT_TYPE_INVALID QUDA_INVALID_ENUM

#define QudaContractGamma integer(4)
#define QUDA_CONTRACT_GAMMA_I 0
Expand Down
119 changes: 119 additions & 0 deletions include/gamma.cuh
Original file line number Diff line number Diff line change
Expand Up @@ -291,4 +291,123 @@ namespace quda {
inline constexpr int Dir() const { return dir; }
};

// list of specialized structures used in the contraction kernels:

constexpr array<array<int, 4>, 16> get_dr_gm_i()
{
return {{// VECTORS
// G_idx = 1: \gamma_1
{3, 2, 1, 0},

// G_idx = 2: \gamma_2
{3, 2, 1, 0},

// G_idx = 3: \gamma_3
{2, 3, 0, 1},

// G_idx = 4: \gamma_4
{2, 3, 0, 1},

// PSEUDO-VECTORS
// G_idx = 6: \gamma_5\gamma_1
{3, 2, 1, 0},

// G_idx = 7: \gamma_5\gamma_2
{3, 2, 1, 0},

// G_idx = 8: \gamma_5\gamma_3
{2, 3, 0, 1},

// G_idx = 9: \gamma_5\gamma_4
{2, 3, 0, 1},

// SCALAR
// G_idx = 0: I
{0, 1, 2, 3},

// PSEUDO-SCALAR
// G_idx = 5: \gamma_5
{0, 1, 2, 3},

// TENSORS
// G_idx = 10: (i/2) * [\gamma_1, \gamma_2]
{0, 1, 2, 3},

// G_idx = 11: (i/2) * [\gamma_1, \gamma_3]. this matrix was corrected
{1, 0, 3, 2},

// G_idx = 12: (i/2) * [\gamma_1, \gamma_4]
{1, 0, 3, 2},

// G_idx = 13: (i/2) * [\gamma_2, \gamma_3]
{1, 0, 3, 2},

// G_idx = 14: (i/2) * [\gamma_2, \gamma_4]
{1, 0, 3, 2},

// G_idx = 15: (i/2) * [\gamma_3, \gamma_4]. this matrix was corrected
{0, 1, 2, 3}}};
}

template <typename T> constexpr array<array<complex<T>, 4>, 16> get_dr_g5gm_z()
{

constexpr complex<T> p_i = complex<T>(0., +1.);
constexpr complex<T> m_i = complex<T>(0., -1.);
constexpr complex<T> p_1 = complex<T>(+1., 0.);
constexpr complex<T> m_1 = complex<T>(-1., 0.);

return {{// VECTORS
// G_idx = 1: \gamma_1
{p_i, p_i, p_i, p_i},

// G_idx = 2: \gamma_2
{m_1, p_1, m_1, p_1},

// G_idx = 3: \gamma_3
{p_i, m_i, p_i, m_i},

// G_idx = 4: \gamma_4
{p_1, p_1, m_1, m_1},

// PSEUDO-VECTORS
// G_idx = 6: \gamma_5\gamma_1
{p_i, p_i, m_i, m_i},

// G_idx = 7: \gamma_5\gamma_2
{m_1, p_1, p_1, m_1},

// G_idx = 8: \gamma_5\gamma_3
{p_i, m_i, m_i, p_i},

// G_idx = 9: \gamma_5\gamma_4
{p_1, p_1, p_1, p_1},

// SCALAR
// G_idx = 0: I
{p_1, p_1, m_1, m_1},

// PSEUDO-SCALAR
// G_idx = 5: \gamma_5
{p_1, p_1, p_1, p_1},

// TENSORS
// G_idx = 10: (i/2) * [\gamma_1, \gamma_2]
{p_1, m_1, m_1, p_1},

// G_idx = 11: (i/2) * [\gamma_1, \gamma_3]. this matrix was corrected
{m_i, p_i, p_i, m_i},

// G_idx = 12: (i/2) * [\gamma_1, \gamma_4]
{m_1, m_1, m_1, m_1},

// G_idx = 13: (i/2) * [\gamma_2, \gamma_3]
{p_1, p_1, m_1, m_1},

// G_idx = 14: (i/2) * [\gamma_2, \gamma_4]
{m_i, p_i, m_i, p_i},

// G_idx = 15: (i/2) * [\gamma_3, \gamma_4]. this matrix was corrected
{m_1, p_1, m_1, p_1}}};
}
} // namespace quda
Loading
Loading