[CP2K:4012] Segfault on ia32/MPI in H2O-hfx-1 testcase
Michael Banck
mba... at debian.org
Thu Sep 6 21:09:20 UTC 2012
Hi,
On Thu, Sep 06, 2012 at 09:47:44PM +0100, Iain Bethune wrote:
> > Has this been investigated and rejected in the past and/or would this be
> > a reasonable and welcome thing to send patches for?
>
> CP2K's FFTW3 interface does re-use plans on new arrays, which is
> likely the cause of this error.
Right, as I wrote, I guess this is in order to get reasonable
performance?
> At the time I wrote the code we did not do an ISO_C_BINDING call to
> fftw_malloc for the following reasons:
>
> 1) Several important HPC compilers still did not support ISO_C_BINDING
> 2) On x86_64 platforms with gcc all arrays are aligned to 16-byte
> boundaries anyway
> 3) For the small number of 32-bit platforms still in use we considered
> it not worth the effort since the FFTW_ARRAYS_ALIGNED flag can be set
I mostly agree, things are fine on 64bit and that's what mostly matters
in practise. It would be nice being able to easily tell at compile time
that the FFTW_UNALIGNED flag should be passed to FFTW3, though.
This would be a good candidate for some autoconf check if CP2K used
autotools ;)
> What I would suggest is that you add -malign-double to FCFLAGS in your
> arch file, which should force the compiler to align the arrays
> correctly in every case, and thus solve the problem without any
> further code changes.
I tried that, but it resulted in more breakage (it messes up Fortran
formats e.g., see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31696) and
resulted in a segfault in "__cp_log_handling_MOD_cp_int_to_string at
cp_log_handling.f90:882" while running "cp2k --xml". As I understand
it, using -malign-double does not change glibc's malloc behaviour in any
way, but only the stack alignment.
Thanks,
Michael
More information about the CP2K-user
mailing list