-
Notifications
You must be signed in to change notification settings - Fork 101
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/DD #1447
base: develop
Are you sure you want to change the base?
Feature/DD #1447
Conversation
I have fixed the failing staggered dslash tests (was due to an issue with the long-link field being created erroneously when using regular (unimproved) staggered fermions. |
Hi Kate, that's an impressive tracing :) Ferenc will work on the others soon. About the tests, I still see some staggered tests failing (invert and eigensolve). I guess due to similar reasons. Maybe it's better if you have a look at those too :) |
Great! and I see now also all 7 checks passed :) Thanks @pittlerf ! |
This is a first PR towards enabling domain decomposition (DD) features in QUDA.
The goal of this PR is to enable a red-black decomposition for the Dirac operator.
Remarks
Design
Under domain decomposition, the Dirac operator assumes a block structure, e.g.
Thus we need a simple strategy to implement all possible operators and their application to a field.$D_{rb}$ , i.e. $y = D_{rb} x = P_r D P_b x$ , can be expressed by setting the input vector as "black", i.e. $x_b = P_b x$ , and the output vector as "red", i.e. $y_r = P_r y$ . A pseudocode would look like this:
Our strategy is to add the specifications about the domain decomposition directly to the vector (spinor) field.
E.g. the application of
Then, we make the application of D DD-aware and only apply it to the in/out active points.
Summary of changes:
TODO list:
Add calculation of first block parityUse global coordinatesCurrent issues:
Tests are failing if the block size is odd in the x direction for the PC operator, e.g.Now it is not allowed to have odd block size in the x-direction.dslash_test --xdim 6 --ydim 4 --zdim 4 --tdim 4 --dd-block-size 3 2 2 2 --dd-red-black=true --test 0
. It works if not PC, e.g.--test 2
or if it is odd in any other direction.export QUDA_REORDER_LOCATION=CPU
is set (dslash_test
failing withQUDA_REORDER_LOCATION=CPU
#1466).Tests are failing for MatPC withNot testing for PC operatorsCaught signal 8 (Floating point exception: integer divide by zero)
. See e.g.dslash_test --xdim 8 --ydim 8 --zdim 8 --tdim 8 --dd-red-black=true --test 1