Comments (14)
Thanks for the info, Carleton. Do you have a reference MILC input file I can use to reproduce this? Also, what ensemble(s) have you been seeing this on?
from quda.
from quda.
Thanks Carleton, the reproducer may be necessary so I can understand the full workflow. The CG code "doesn't know" about even/odd, it's just handed an operator. The stencil code knows the bare minimum necessary, most relevantly in the prepare/reconstruct bits. You can double check here, though I just did a skim and all looks good (aka "symmetric" between even and odd), check the code for the DiracImprovedStaggeredPC
operator: https://github.com/lattice/quda/blob/develop/lib/dirac_improved_staggered.cpp
Remind me, does MILC use the odd Schur op directly, or does it prepare an even source, use the even op, and reconstruct?
from quda.
from quda.
Thanks Carleton. I'm in the moving and I'm not quite sure where my keyfob is right now---can you send me your submit script and input file via Slack or e-mail? I have configurations of various sizes (64^3, 96^3, 144^3, 192^3) on our internal cluster, hopefully one of those will suffice to reproduce the issue.
Also, thank you for describing the measurement. Between your description and my code investigations, I can't spot any inherent issue/asymmetry, but extra investigations will clearly be in order.
from quda.
One question---is the host source in MILC single parity or the length of the full volume? It looks like qudaInvert
is assuming it is a full volume source (contiguous even and odd), and as such there is an offset into just the odd part. This has been the assumption in the code for a very, very long time---I checked, and it's been this way for 10 years!!
If in reality the source in MILC is single parity (just odd), this could give garbage---and if the off chance the memory it points to is zero, it's reasonable that it would be a very slow (as well as meaningless) solve.
For reference:
- The offset calculation routine is called here: https://github.com/lattice/quda/blob/develop/lib/milc_interface.cpp#L1203 (note the hard-coded
false
) - And the offset routine itself is called here: https://github.com/lattice/quda/blob/develop/lib/milc_interface.cpp#L1031 ; note that, since the second argument is false, it'll give an offset halfway into the lattice (
volume * 6 / 2
, or full volume times Nc == 3 times 2 for complex divided by 2 for half of the lattice).
from quda.
from quda.
from quda.
Thank you, Carleton. I'm sorry that I haven't had a chance to test this yet, but I'll be able to on Monday; the requisite scripts are essentially ready to go.
from quda.
Just an update, as a quick test I saw if I could reproduce the behavior on a smaller lattice (64^3x96) and I was unsuccessful, so now I'm going to try a configuration from an ensemble with the same global volume, beta, quark masses, etc. I'll keep you updated.
from quda.
I may have found the issue, will post back soon.
from quda.
I've reproduced the behavior on a 144^3 configuration, for both an odd and even source. It seems like the logic for heavy quark residual reliable updates is breaking down in ways that it wasn't on smaller configurations (i.e., 64^3, 96^3). We have a call on Wednesday and we'll figure out a solution.
from quda.
Related Issues (20)
- Overrelaxed Coulomb gauge fixing convergence criteria needs to be made more robust
- MG Setup (or refresh) fails with "too many heavy quark residual restarts" HOT 7
- QDP interface and copy_gauge_inc.cu HOT 1
- Can't build with CUDA 11.5 HOT 9
- Query: QUDA Feature-SYCL branch HOT 19
- Plenty of time was wasted when calculating the propagators HOT 15
- SYCL wiki page
- Direct aggregation staggered MG fails HOT 1
- Add appropriate `const` modifiers to member functions of the shared memory cache
- MPI err_string length too small, would overflow if MPI errors HOT 1
- Only compile `host_reference` test files when appropriate Dirac types are enabled
- `comm_init_common` (optionally) explicitly relies on the existence of `CUDA_VISIBLE_DEVICES`, ignores `HIP_VISIBLE_DEVICES` HOT 4
- Tuning behavior is dependent on verbosity setting HOT 1
- BCGRQ problems
- Update CMakeLists.txt in the test directory to only `try_compile` `c_interface_test` HOT 1
- HIP build broken... HOT 6
- Typo in macro in develop branch, file lib/targets/hip/device.cpp prevents HIP compilation
- Error finding a Communicator in quda::get_current_communicator() when running Chroma + QDP_JIT HOT 8
- `site unroll not supported for nSpin = 2 nColor = 32` in coarse-grid-deflated MG HOT 11
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from quda.