Page 1 of 1

Configuring Abinit 8.10 with NetCDF as default  [SOLVED]

Posted: Fri Feb 15, 2019 10:38 pm
by rogphys
Hello everyone,

I have been having some trouble using ABINIT with NetCDF in Linux. I am interested in outputting everything in NetCDF format, either by setting the `enable_netcdf_default="yes"` in the configuration stage, or by using `iomode 3` in the input file. This is my configuration file:

Code: Select all

enable_fallbacks="yes"
enable_gw-dpc="yes"
enable_macroave="yes"

enable_mpi="yes"
enable_mpi_io="yes"

enable_openmp="yes"

with_fft_flavor=fftw3
with_fft_incs="-I/usr/include/"
with_fft_libs="-L/usr/lib/x86_64-linux-gnu/ -lfftw3 -lfftw3f"

with_trio_flavor=netcdf
with_netcdf_libs="-L/usr/lib/x86_64-linux-gnu/ -lnetcdf -lnetcdff"
with_netcdf_incs="-I/usr/include/"
enable_netcdf_default="yes"


I configure with this:

Code: Select all

CC=mpicc FC=mpifort CXX=mpicxx ../configure


This compiles successfully, but when I run the tests using MPI, I get this error:

Code: Select all

--netcdf-default is on but netcdf library does not support MPI-IO. Aborting now


This has happened to me on various Linux systems using various compilers and libraries. I have tried to alleviate this problem by compiling NetCDF with parallel capabilities by hand and linking to that, but those attempts have been unsuccessful so far.

Surely there must be a way to launch ABINIT with MPI parallelism, but with sequential writing of the NetCDF files! Any help would be greatly appreciated.

Re: Configuring Abinit 8.10 with NetCDF as default

Posted: Tue Feb 19, 2019 3:18 pm
by jbeuken
Hi,

it seems that the "enable_netcdf_default" option involves netcdf-4 with a parallel hdf5
the netcdf package of ubuntu does not seem to support this configuration

below the ac file which contains the 4 configurations I tested:
    1) netcdf of ubuntu
    2) compilation of netcdf-4.6 + netcdf-fortran
    3) compilation of hdf5_serial + netcdf-4.6+ netcdf-fortran
    4) compilation of hdf5_paral + netcdf-4.6+ netcdf-fortran

only "config 4" works with "enable_netcdf_default="yes""

Code: Select all

enable_mpi="yes"
enable_mpi_io="yes"
with_mpi_prefix="/usr"

enable_openmp="yes"

with_fft_flavor=fftw3
with_fft_incs="-I/usr/include/"
with_fft_libs="-L/usr/lib/x86_64-linux-gnu/ -lfftw3 -lfftw3f"

####### netcdf package from Ubuntu 18.04
#
#with_trio_flavor="netcdf"
#with_netcdf_libs="-L/usr/lib/x86_64-linux-gnu/ -lnetcdf -lnetcdff -lhdf5_serial -lhdf5_serial_hl"
#with_netcdf_incs="-I/usr/include/"

####### netcdf-4.6 without hdf5
#
#with_trio_flavor="netcdf"
#with_netcdf_incs="-I/usr/local/netcdf-4.6.2_gcc73/include"
#with_netcdf_libs="-L/usr/local/netcdf-4.6.2_gcc73/lib -lnetcdff -lnetcdf"

####### netcdf-4.6  with hdf5 serial
#
#with_trio_flavor="netcdf"
#with_netcdf_incs="-I/usr/local/netcdf-4.6.2_gcc73_s_openmpi/include"
#with_netcdf_libs="-L/usr/local/netcdf-4.6.2_gcc73_s_openmpi/lib -lnetcdff -lnetcdf -L/usr/local/hdf5-1.10.4_gcc73_serial/lib -lhdf5hl_fortran -lhdf5_hl -lhdf5_fortran -lhdf5  -lz -ldl"

####### netcdf-4.6  with hdf5 //
#
with_trio_flavor="netcdf"
with_netcdf_incs="-I/usr/local/netcdf-4.6.2_gcc73_openmpi/include"
with_netcdf_libs="-L/usr/local/netcdf-4.6.2_gcc73_openmpi/lib -lnetcdff -lnetcdf -L/usr/local/hdf5-1.10.4_gcc73_paral/lib -lhdf5hl_fortran -lhdf5_hl -lhdf5_fortran -lhdf5  -lz -ldl"

enable_netcdf_default="yes"

enable_gw_dpc="yes"
enable_macroave="yes"


regards

jmb

Re: Configuring Abinit 8.10 with NetCDF as default

Posted: Tue Feb 19, 2019 8:33 pm
by jbeuken
I'm just found that there is a parallel netcdf lib ( libpnetcdf-dev ) : to try...

jmb

Re: Configuring Abinit 8.10 with NetCDF as default

Posted: Wed Feb 20, 2019 6:04 pm
by rogphys
Thank you for the suggestions. Is there anyway to simply tell the program to not write the NetCDF files in parallel? That would definitely be the easiest solution...

Re: Configuring Abinit 8.10 with NetCDF as default

Posted: Fri Feb 22, 2019 9:28 pm
by jbeuken
Hi,

Is there anyway to simply tell the program to not write the NetCDF files in parallel?

simple answer : no :|

some more details...
libpnetcdf-dev : not usable because it's another paradigm

ubuntu packages : libnetcdf-dev + libnetcdff-dev + libhdf5-openmpi-dev + libhdf5-mpi-dev : don't work :-(
ubuntu didn't really compile the parallel support :roll:

root@yambo3:~/Workspace/trunk_release-8.10# nc-config --all

This netCDF 4.6.0 has been built with the following features:

--cc -> /usr/bin/cc
--cflags -> -I/usr/include -I/usr/include/hdf5/serial
--libs -> -L/usr/lib/x86_64-linux-gnu -L/usr/lib/x86_64-linux-gnu/hdf5/serial -lnetcdf -lhdf5_hl -lhdf5 -lpthread -lsz -lz -ldl -lm -lcurl

--has-c++ -> no
--cxx ->

--has-c++4 -> no
--cxx4 ->

--has-fortran-> yes
--fc -> gfortran
--fflags -> -I/usr/include
--flibs -> -L/usr/lib -lnetcdff -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -lnetcdf -lnetcdf
--has-f90 -> no
--has-f03 -> yes

--has-dap -> yes
--has-dap2 -> yes
--has-dap4 -> yes
--has-nc2 -> yes
--has-nc4 -> yes
--has-hdf5 -> yes
--has-hdf4 -> no
--has-logging-> no
--has-pnetcdf-> no
--has-szlib -> no
--has-cdf5 -> no
--has-parallel-> no

--prefix -> /usr
--includedir-> /usr/include
--libdir -> /usr/lib/x86_64-linux-gnu
--version -> netCDF 4.6.0


only the "config 4" in my previous post works ( compilation of hdf5_paral + netcdf-4.6+ netcdf-fortran )

root@yambo3:/usr/local/hdf5-1.10.4_gcc73_paral/bin# /usr/local/netcdf-4.6.2_gcc73_openmpi/bin/nc-config --all

This netCDF 4.6.2 has been built with the following features:

--cc -> mpicc
--cflags -> -I/usr/local/netcdf-4.6.2_gcc73_openmpi/include -I/usr/local/hdf5-1.10.4_gcc73_paral/include
--libs -> -L/usr/local/netcdf-4.6.2_gcc73_openmpi/lib -L/usr/local/hdf5-1.10.4_gcc73_paral/lib -lnetcdf -lhdf5_hl -lhdf5 -lm -ldl -lz

--has-c++ -> no
--cxx ->

--has-c++4 -> no
--cxx4 ->

--has-fortran -> yes
--fc -> gfortran
--fflags -> -I/usr/include
--flibs -> -L/usr/lib -lnetcdff -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -lnetcdf -lnetcdf
--has-f90 -> no
--has-f03 -> yes

--has-dap -> no
--has-dap2 -> no
--has-dap4 -> no
--has-nc2 -> yes
--has-nc4 -> yes
--has-hdf5 -> yes
--has-hdf4 -> no
--has-logging -> no
--has-pnetcdf -> no
--has-szlib -> no
--has-cdf5 -> yes
--has-parallel4 -> yes
--has-parallel -> yes


--prefix -> /usr/local/netcdf-4.6.2_gcc73_openmpi
--includedir -> /usr/local/netcdf-4.6.2_gcc73_openmpi/include
--libdir -> /usr/local/netcdf-4.6.2_gcc73_openmpi/lib
--version -> netCDF 4.6.2


I removed all installed packages by default (openmpi, hdf5, netcdf, ...) and I recompiled everything (MPICH3 + HDF5 + NetCDF + NetCDF-fortran ...) and then, everything works ...

Code: Select all

./runtests.py paral mpiio -n 4 -j 2 --no-logo
...
Suite   failed  passed  succeeded  skipped  disabled  run_etime  tot_etime
paral        0       9         30       77         0     797.29     805.70
...
Suite   failed  passed  succeeded  skipped  disabled  run_etime  tot_etime
mpiio        0       2         12        4         0     262.67     282.94


The standard packages of ubuntu are not made for the "simulation" nor to make the HPC !!

if you need recipes to compile the different packages (HDF5, NetCDF, NetCDF-fortran, ...), I provide them

A+

jmb

Re: Configuring Abinit 8.10 with NetCDF as default

Posted: Sat Feb 23, 2019 4:15 pm
by rogphys
jbeuken wrote:The standard packages of ubuntu are not made for the "simulation" nor to make the HPC !!

if you need recipes to compile the different packages (HDF5, NetCDF, NetCDF-fortran, ...), I provide them


That would be incredibly useful for me! My final install will be on a small HPC system using the Intel compilers.

Many thanks!

Re: Configuring Abinit 8.10 with NetCDF as default

Posted: Mon Mar 04, 2019 5:28 am
by rogphys
jbeuken wrote:if you need recipes to compile the different packages (HDF5, NetCDF, NetCDF-fortran, ...), I provide them

jmb


I would really appreciate these, if you have the chance. Thanks!