lattice / quda

QUDA is a library for performing calculations in lattice QCD on GPUs.
https://lattice.github.io/quda
Other
287 stars 94 forks source link

Incorrect logic for determining bi-directional coarsening in multigrid #707

Open weinbe2 opened 6 years ago

weinbe2 commented 6 years ago

In feature/multigrid, the current logic for determining if you need to do bi-directional coarsening is if the previous level is preconditioned. This is true in every practical use case for Wilson-Clover, but it isn't strictly true: you need to do bi-directional coarsening if any previous operator was preconditioned, because once that's the case you've broken the Hermitian conjugate symmetry between forward and backward links. This is relevant with, for example, staggered MG, where so far we've found not preconditioning the lower levels leads to a better algorithm.

The relevant boolean bidirectional_links is defined in the function calculateY at the bottom of the file coarse_op.cuh.

Since this isn't an issue for any practical use case for Wilson-Clover, it's low priority. This is mostly a note for myself to take care of this in the future.

maddyscientist commented 4 years ago

This will be closed by #902