Possible bug in 42_libpaw/m_libpaw_mpi.F90

Moderators: jbeuken, jzwanzig, gonze, mcote

Possible bug in 42_libpaw/m_libpaw_mpi.F90

Postby cartoixa » Sun Oct 07, 2018 10:45 pm

Dear developers,

When compiling abinit 8.8.4 (or 8.6.3) with gfortran 8.1.1 and several versions of OpenMPI (1.8.8, 2.1.1 or 3.1.2), I am getting several compilation errors:
Code: Select all
../../../../src/42_libpaw/m_libpaw_mpi.F90:3349:12:

  tag=MOD(nt,MPI_TAG_UB)
            1
Error: Argument ‘P’ of MOD at (1) shall not be zero

in 42_libpaw/m_libpaw_mpi.F90 .
A previous version of gfortran (6.3.1) did not complain.

It seems to me that the error arises because MPI_TAG_UB is not a constant/parameter, but an attribute whose value should be accessed through MPI_ATTR_GET, similarly to what is done in m_xmpi.F90 .
Best regards,

Xavier
cartoixa
 
Posts: 3
Joined: Sun Oct 07, 2018 8:10 pm

Re: Possible bug in 42_libpaw/m_libpaw_mpi.F90

Postby torrent » Wed Oct 17, 2018 6:10 pm

Dear Xavier,

Thank you for detecting this bug.
Fortunately, the concerned file is not used by Abinit (because abinit uses m_xmpi MPI module ), but only in the standalone version of the PAW library.
To compile abinit with gcc8, just comment temporarily the concerned lines.
The correction has been made and will be available in the next version.
Marc Torrent
CEA - Bruyères-le-Chatel
France
User avatar
torrent
 
Posts: 121
Joined: Fri Aug 14, 2009 7:40 pm

Re: Possible bug in 42_libpaw/m_libpaw_mpi.F90

Postby jbeuken » Thu Oct 18, 2018 3:31 pm

Hi,

Our testfarm did not detect this bug ...
I would like to understand...

I have a bot under CentOS 7.5 (Silver 4110) with gcc 8.1 / OpenMPI 3.0.1 and MPICH 3.2

The compilation finishes without problems and the tests are correct.

Furthermore,

Code: Select all
mpif90 -show

gfortran -I/usr/local/openmpi-3.0.1_gcc8.1/include -pthread -I/usr/local/openmpi-3.0.1_gcc8.1/lib -Wl,-rpath -Wl,/usr/local/openmpi-3.0.1_gcc8.1/lib -Wl,--enable-new-dtags -L/usr/local/openmpi-3.0.1_gcc8.1/lib -lmpi_usempif08 -lmpi_usempi_ignore_tkr -lmpi_mpifh -lmpipi


Code: Select all
grep -r MPI_TAG_UB /usr/local/openmpi-3.0.1_gcc8.1/include/*

/usr/local/openmpi-3.0.1_gcc8.1/include/mpif-constants.h: integer MPI_TAG_UB
/usr/local/openmpi-3.0.1_gcc8.1/include/mpif-constants.h: parameter (MPI_TAG_UB = 0)
/usr/local/openmpi-3.0.1_gcc8.1/include/mpi.h: MPI_TAG_UB,
/usr/local/openmpi-3.0.1_gcc8.1/include/openmpi/ompi/mpi/cxx/constants.h:static const int TAG_UB = MPI_TAG_UB;


what is your environment?
User avatar
jbeuken
 
Posts: 282
Joined: Tue Aug 18, 2009 9:24 pm

Re: Possible bug in 42_libpaw/m_libpaw_mpi.F90

Postby ebousquet » Thu Oct 18, 2018 4:45 pm

Hi JM,
On Ubuntu 18.04 with default updated gfortran 7.3.0 and mpirun (open mpi) 2.1.1, this problem appears too.
Cheers,
Eric
ebousquet
 
Posts: 192
Joined: Tue Apr 19, 2011 11:13 am
Location: University of Liege, Belgium

Re: Possible bug in 42_libpaw/m_libpaw_mpi.F90

Postby jbeuken » Fri Oct 19, 2018 9:25 am

Hello Eric,

Ok... with
Code: Select all
enable_mpi="yes"
enable_mpi_io="yes"
with_mpi_prefix="/usr"
with_trio_flavor="netcdf"
with_dft_flavor="libxc"

I reproduced the problem with "standard" packages of Ubuntu 18.04 ( gnu 7.3 and OpenMpi 2.1.1 ) :o

Code: Select all
mpif90 -show
gfortran -I/usr/lib/x86_64-linux-gnu/openmpi/include -pthread -I/usr/lib/x86_64-linux-gnu/openmpi/lib -L/usr//lib -L/usr/lib/x86_64-linux-gnu/openmpi/lib -lmpi_usempif08 -lmpi_usempi_ignore_tkr -lmpi_mpifh -lmpi



When compiling abinit 8.8.4 with gnu 8.1 and OpenMPI 3.0 but under CentOS 7.5 , compilation succeeds !?! :roll:
Code: Select all
enable_mpi="yes"
enable_mpi_io="yes"
with_mpi_prefix="/usr/local/openmpi-3.0.1_gcc8.1"
with_trio_flavor="netcdf"
with_dft_flavor="libxc"


Code: Select all
mpif90 -show
gfortran -I/usr/local/openmpi-3.0.1_gcc8.1/include -pthread -I/usr/local/openmpi-3.0.1_gcc8.1/lib -Wl,-rpath -Wl,/usr/local/openmpi-3.0.1_gcc8.1/lib -Wl,--enable-new-dtags -L/usr/local/openmpi-3.0.1_gcc8.1/lib -lmpi_usempif08 -lmpi_usempi_ignore_tkr -lmpi_mpifh -lmpi


Then, depends on the OS and/or the compilation of OpenMPI ( the instructions of mpif90 is little different) ?!?

Any ideas/comments ?

A+

jmb
User avatar
jbeuken
 
Posts: 282
Joined: Tue Aug 18, 2009 9:24 pm

Re: Possible bug in 42_libpaw/m_libpaw_mpi.F90

Postby cartoixa » Sun Oct 21, 2018 1:20 am

Hi,

Then, depends on the OS and/or the compilation of OpenMPI ( the instructions of mpif90 is little different) ?!?

Any ideas/comments ?


I am running Fedora 28. I think that, in order for the problem to appear, two things must happen:
1) The MPI attribute MPI_TAG_UB must be coded by 0 in the MPI implementation.
2) The compiler must be set up to throw an error when it can determine at compile time that the second argument to MOD is zero.

The following program checks for 1)
Code: Select all
program mpitag
      use mpi
      implicit none
      integer :: err
      integer (KIND=MPI_ADDRESS_KIND) :: my_tag_ub
      logical flag


      call MPI_INIT(err)
      call MPI_COMM_GET_ATTR(MPI_COMM_WORLD, MPI_TAG_UB, my_tag_ub, flag, err)
      if (flag .eqv. .true.) then
         print *, "Got tag ub:", my_tag_ub
      else
         print *, "Couldn't find tag ub!"
      endif
      print *, "MPI_TAG_UB is:", MPI_TAG_UB
      call MPI_FINALIZE(err)
end program mpitag


The attached patch, though not completely up to the abinit coding standards, wants to do the job intended by the original code. It compiled successfully with my system, though, as per Marc's comment above, even if it is wrong it will not affect abinit's behavior.
Thanks,

Xavier
Attachments
m_libpaw_mpi.F90.patch.in
Might want to remove .in extension.
(7.42 KiB) Downloaded 59 times
cartoixa
 
Posts: 3
Joined: Sun Oct 07, 2018 8:10 pm

Re: Possible bug in 42_libpaw/m_libpaw_mpi.F90

Postby dsolonenko » Wed Nov 14, 2018 10:44 am

cartoixa wrote:
The attached patch, though not completely up to the abinit coding standards, wants to do the job intended by the original code. It compiled successfully with my system, though, as per Marc's comment above, even if it is wrong it will not affect abinit's behavior.


Hi to all,

I have also encountered the same problem on Ubuntu 18.04. Unfortunately, the patch from Xavier did not work out. Just to be sure that I exclude any stupid moves: how exactly should the patch be implemented during the installation?

Many thanks in advance!
dsolonenko
 
Posts: 1
Joined: Wed Nov 14, 2018 10:42 am

Re: Possible bug in 42_libpaw/m_libpaw_mpi.F90

Postby cartoixa » Fri Nov 16, 2018 6:27 pm

I have also encountered the same problem on Ubuntu 18.04. Unfortunately, the patch from Xavier did not work out. Just to be sure that I exclude any stupid moves: how exactly should the patch be implemented during the installation?


Hi,
Preferably before configure , but definitely before make , you should run the following commands in the relevant 42_libpaw directory
Code: Select all
cp -a m_libpaw_mpi.F90 m_libpaw_mpi.F90.orig   [optional, to keep a backup]
patch m_libpaw_mpi.F90 m_libpaw_mpi.F90.patch

then go to your build directory, and perform a standard configure+make , or just make .

Xavier
cartoixa
 
Posts: 3
Joined: Sun Oct 07, 2018 8:10 pm


Return to Proposed code modifications

Who is online

Users browsing this forum: No registered users and 1 guest