Closed LupoA closed 1 year ago
Hi,
thanks Ed for the suggestions. @LupoA, please fix them. We could even go for clang-format
ing? I think I did that anyways for the files I changed.
Okay, the actual point of this comment is that Test_project_on_Sp
fails on my machine.
[...]
Grid : Message : 1.225777 s : Check that Omega U Omega = conj(U)
Grid : Message : 1.225899 s : Omega U Omega - conj(U) = nan
Test_project_on_Sp: ../../../tests/sp2n/Test_project_on_Sp.cc:234: int main(int, char **): Assertion `norm2(aux) < 1e-8' failed.
[lenz-workstation:59127] *** Process received signal ***
[lenz-workstation:59127] Signal: Aborted (6)
[lenz-workstation:59127] Signal code: (-6)
[lenz-workstation:59127] [ 0] /lib/x86_64-linux-gnu/libc.so.6(+0x43090)[0x7fe4fce5f090]
[lenz-workstation:59127] [ 1] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0xcb)[0x7fe4fce5f00b]
[lenz-workstation:59127] [ 2] /lib/x86_64-linux-gnu/libc.so.6(abort+0x12b)[0x7fe4fce3e859]
[lenz-workstation:59127] [ 3] /lib/x86_64-linux-gnu/libc.so.6(+0x22729)[0x7fe4fce3e729]
[lenz-workstation:59127] [ 4] /lib/x86_64-linux-gnu/libc.so.6(+0x33fd6)[0x7fe4fce4ffd6]
[lenz-workstation:59127] [ 5] ./Test_project_on_Sp[0x409cfa]
[lenz-workstation:59127] [ 6] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0x7fe4fce40083]
[lenz-workstation:59127] [ 7] ./Test_project_on_Sp[0x40528e]
[lenz-workstation:59127] *** End of error message ***
make[2]: *** [Makefile:711: check] Aborted (core dumped)
make[2]: Leaving directory '/home/lenz/workspace/Grid_spn/build/tests/sp2n'
make[1]: *** [Makefile:569: check-recursive] Error 1
make[1]: Leaving directory '/home/lenz/workspace/Grid_spn/build/tests'
make: *** [Makefile:530: check-recursive] Error 1
Could someone try to reproduce this?
@chillenzer is it a cpu or gpu build?
This might be irrelevant but since I can't reproduce the error it might still worth saying
the function SpTa which seems to be breaking is not that different from ProjectOnSpGroup, yet you pass the assertion on line 72. One difference between the failing SpTa and the successful ProjectOnSpGroup is in their return value.
From Grid/tensors/Tensor_Ta.h:
lines 75, 83,145 return Ta(ret);
line 227, 235, 300 return ret;
$ ../configure --enable-simd=AVX --enable-comms=mpi-auto --enable-Nc=2 --prefix=/home/lenz/workspace/Grid_spn/install/ CXX=/opt/spack/opt/spack/linux-linuxmint20-skylake/gcc-9.4.0/llvm-14.0.5-yphabvl5dllh26n7b5pquzkl4zxq64xl/bin/clang++ CC=/opt/spack/opt/spack/linux-linuxmint20-skylake/gcc-9.4.0/llvm-14.0.5-yphabvl5dllh26n7b5pquzkl4zxq64xl/bin/clang CXXFLAGS=-Wno-macro-redefined --no-create --no-recursion
@chillenzer it should work now 😇
PS: Tests run fine now.
Will have a closer look in the near future. But one thing I found is that there were inconsistent changes in the test file concerning the conditions on sp(2N) algebra: The original version was
( W X )
( X* -W* )
the current version is
( W X )
( -X^* W^* )
and wikipedia claims it to be
( W Y )
( X -W^* )
where X and Y are symmetric, I think. What is the correct one?
@chillenzer thanks for having a look! They are both correct, before and after, they are just checking different things: before the test was probing the block structure of hermitian members of the algebra, now we probe anti-hermitian elements, making the block structure of the algebra look similar to the block structure of the group. The change is due to the fact the we are testing SpTa(ntihermitian) and not a generic projection on the (hermitian) algebra.
Addressing #2 and #12.
ProjectOnGaugeGroup was previously defined to take input lattice objects, and couldn't be used into Grid/qcd/action/gauge/GaugeImplTypes.h. It is now expanded to take iScalar, iVector and iMatrix inputs.
The new function in Tensors_Ta.h is SpTa. It performs a Gran-Schmidt and then Ta the result. This is tested in tests/sp2n/Test_project_on_Sp. The Group-aware function is taProj which is defined in /Grid/qcd/utils/GaugeGroup.h.