-
Notifications
You must be signed in to change notification settings - Fork 109
Feature/DD #1447
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
Conversation
I'd like to better understand what's going on with the |
I just completed a visual review, and needless to say this is very impressive work---I left some QUDA style convention comments, and a few questions. I think the most important piece of feedback I have is about My thoughts are all orthogonal to doing actual code testing, so I'll carry on with that next. |
FYI @pittlerf re: |
…avoid mixing them up with color spinor copy filenames
I just got done with the boolean op replacement, done by hand instead of with |
…lor to the staggered tests
…ash*.cu files can then be dslash*.cpp files
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for all this great work. Approving this PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is awesome work, approved!
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