-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Taken from email chain:
Hi Samuel,
probably you're already looking into this, but could you help Chris debug and figure out how to solve the issue of abinit on Quantum Mobile?
aiidateam/aiida-common-workflows#159
The only blocking thing, before submission of the common-workflows paper, is to make sure we can reproduce the results of the paper in Quantum Mobile; once abinit (and CP2K, that Chris is addressing separately) are fixed, we're ready to submit.
Let me know if you discover that the issue is much more complex to fix than expected, so we look into a plan B (but I hope that, being a library issue, this can be sorted out?)
samuel ponce:
Yes, I've been following it but I'm not sure how to fix this.
In fact, I often struggle linking/compiling Abinit on various hpc machines.
I'm adding Jean-Michel in c.c., since with Matteo, he probably has the most experience on this.
In brief, Chris is trying to make a docker image of the Quantum Mobile which now includes Abinit.
However Abinit does not properly run due to the Abinit build system detecting a NetCDF library with MPI-IO support but then compiling it without MPI-IO support:
aiidateam/aiida-common-workflows#159
Just to clarify Docker images are in general OS agnostic (that’s in essence their raison d’être) , certainly for software e.g. the build library locations do not change when using MacOs or Ubuntu, except…
for this subtle compilation optimisation business (that I was not aware before) which, only if requested, will look at the hosts hardware and will depend on what host it is built (see https://stackoverflow.com/a/54163496/5033292)
Matteo Giantomassi
From what I can see in the output of
abinit -b
, both MPI-IO and parallel netcdf+hdf5 are activated in the buid
(activated means that the corresponding CPP preprocessing options are activated in the Abinit source and calls to MPI-IO and netcdf4+hdf5 are exposed to the compiler).
The linker is happy hence these external IO routines are present in the external libraries yet the code aborts inside the MPI library due to a stack smashing error.
This means that the ubuntu library you are using was compiled with this kind of runtime check.
To avoid harcoding paths, you can use use the nc-config (C lib) and nf-config (Fortran) executables provided by netcdf.
with_netcdf=${nc-config --prefix}
with_hdf5=${nc-config --prefix}
with_netcdf_fortran=$(nf-config —prefix)
PS: it would be useful to have the output of:
nc-config —all
nf-config —all
to get further insight into the aiidateam/aiida-common-workflows#159 issue
cc also @sphuber