paboyle / Grid

Data parallel C++ mathematical object library
GNU General Public License v2.0
155 stars 111 forks source link

Cannot compile the gparity and adjoint versions of the CompactWilsonCloverAction #383

Closed fjosw closed 2 years ago

fjosw commented 2 years ago

I am unable to compile the current develop version of Grid (215df671be6ab6c53dce424ea1cd0cde803d97dd) on my laptop or tesseract with the standard compile flags. I am only successful when I disable gpartity and extra fermion representation support.

On my laptop I use gcc 9.3.0 on ubuntu 20.04. The code compiles successfully with the following configure options: ../configure --with-hdf5=/usr/lib/x86_64-linux-gnu/hdf5/serial --enable-comms=none --enable-simd=AVX2 --prefix $prefix CXX=g++ MPICXX=g++ LDFLAGS=-L$prefix/lib/ CXXFLAGS="-I$prefix/include/ -std=c++11 -fpermissive" --disable-gparity --enable-fermion-reps=no

If I enable extra fermion representations I get the following error:

In file included from /home/fjosw/Codes/Grid/Grid/qcd/action/fermion/WilsonCloverFermion.h:33,
                 from /home/fjosw/Codes/Grid/Grid/qcd/action/fermion/Fermion.h:55,
                 from /home/fjosw/Codes/Grid/Grid/qcd/action/Action.h:46,
                 from /home/fjosw/Codes/Grid/Grid/Grid.h:43,
                 from ../../Grid/qcd/action/fermion/instantiation/WilsonAdjImplD/CompactWilsonCloverFermionInstantiationWilsonAdjImplD.cc:31:
/home/fjosw/Codes/Grid/Grid/qcd/action/fermion/WilsonCloverTypes.h: In instantiation of ‘class Grid::CompactWilsonCloverTypes<Grid::WilsonImpl<Grid::Grid_simd<std::complex<double>, __vector(4) double>, Grid::AdjointRep<3>, Grid::CoeffReal> >’:
/home/fjosw/Codes/Grid/Grid/qcd/action/fermion/WilsonCloverHelpers.h:219:3:   required from ‘class Grid::CompactWilsonCloverHelpers<Grid::WilsonImpl<Grid::Grid_simd<std::complex<double>, __vector(4) double>, Grid::AdjointRep<3>, Grid::CoeffReal> >’
/home/fjosw/Codes/Grid/Grid/qcd/action/fermion/CompactWilsonCloverFermion.h:89:7:   required from ‘class Grid::CompactWilsonCloverFermion<Grid::WilsonImpl<Grid::Grid_simd<std::complex<double>, __vector(4) double>, Grid::AdjointRep<3>, Grid::CoeffReal> >’
../../Grid/qcd/action/fermion/instantiation/WilsonAdjImplD/CompactWilsonCloverFermionInstantiationWilsonAdjImplD.cc:39:16:   required from here
/home/fjosw/Codes/Grid/Grid/qcd/action/fermion/WilsonCloverTypes.h:50:47: error: static assertion failed: Wrong dimensions
   50 |   static_assert(Nd == 4 && Nc == 3 && Ns == 4 && Impl::Dimension == 3, "Wrong dimensions");
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~

If I enable gpartity I get the following error:

In file included from ../../Grid/qcd/action/fermion/instantiation/GparityWilsonImplD/CompactWilsonCloverFermionInstantiationGparityWilsonImplD.cc:34:
/tessfs1/home/dp199/dp199/dc-josw1/Development/Grid/Grid/qcd/action/fermion/implementation/CompactWilsonCloverFermionImplementation.h:50:28: error: no member named 'boundary_phases' in 'Grid::GparityWilsonImplParams'
  , open_boundaries(impl_p.boundary_phases[Nd-1] == 0.0)
                    ~~~~~~ ^
../../Grid/qcd/action/fermion/instantiation/GparityWilsonImplD/CompactWilsonCloverFermionInstantiationGparityWilsonImplD.cc:39:16: note: in instantiation of member function 'Grid::CompactWilsonCloverFermion<Grid::GparityWilsonImpl<Grid::Grid_simd<std::__1::complex<double>, __attribute__((__vector_size__(4 * sizeof(double)))) double>, Grid::FundamentalRep<3>, Grid::CoeffReal> >::CompactWilsonCloverFermion' requested here
template class CompactWilsonCloverFermion<IMPLEMENTATION>;