lattice / quda

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

A new gauge fixing algorithm which returns the rotation field. #1481

Open SaltyChiang opened 4 months ago

SaltyChiang commented 4 months ago

I implemented a new over-relaxation gauge-fixing algorithm. The major difference between the new and the old implementations is we can obtain the rotation field now. Our workflow often requires this.

The rotation field $g(x)$ is defined as follows: $$ U^\prime\mu(x)=g(x)U\mu(x)g^\dag(x+\hat{\mu}) $$

There are also some utility functions such as gaugeRotation and gaugeFixQuality which can be exposed in quda.h, I'll add them later.

SaltyChiang commented 4 months ago

I'm wondering if I should just override the old interface computeGaugeFixingOVRQuda or add a new interface function. Please let me know if you have any considerations.

I tested the performance and didn't see any significant performance regression compared to the old implementation. But more testing is definitely needed.

maddyscientist commented 3 months ago

@Jenkins test this please

maddyscientist commented 3 months ago

Thanks for this PR @SaltyChiang. I don't think there should be any performance change, so I think we could just replace the old interface with the new one.

Can you go ahead and make this change to your PR? I think you'll need to update the MILC interface code (milc_interface.cpp) since that code calls the older interface, but that should be an easy change.