Hello everyone,
I am using siesta-3.2-pl-5. It works perfectly on our cluster with mpif90
(gfortran based compiler). However, I want to compile with mpiifort
(wrapper for ifort 16.0.1 20151021), because I have been told it will run
much faster (apparently avx2 support is better).
After using the Intel Link Adviser, I was able to successfully compile.
However, I always get the following error, for instance when running the
h2o test:
...
InitMesh: Mesh cutoff (required, used) = 50.000 50.384 Ry
* Maximum dynamic memory allocated = 4 MB
stepf: Fermi-Dirac step function
alloc_err: allocate status error 41
alloc_err: array numdg requested by read_dm
alloc_err: dim, lbound, ubound: 1 1********
alloc_err: allocate error
ERROR STOP from Node: 0
I am using the -O0 flag now. When using -O2 I believe all I saw was:
alloc_err: allocate error
ERROR STOP from Node: 0
I'm on 64 bit machine, so compiling with 64 bit libraries is essential. One
thought I had is that the problem may have something to do with how many
bits are assigned to integers. I tried using both 32bit integer (LP64)
Intel libraries and 64 bit (ILP64) but both gave the same error at runtime.
Here is my arch.make file:
.SUFFIXES:
.SUFFIXES: .f .F .o .a .f90 .F90
SIESTA_ARCH=x86_64-unknown-linux-gnu--unknown
FPP=
FPP_OUTPUT=
FC=mpiifort
RANLIB=ranlib
SYS=nag
SP_KIND=4
DP_KIND=8
KINDS=$(SP_KIND) $(DP_KIND)
MKLROOT=/gpfs/software/intel_2016_update1/mkl
FFLAGS=-O0 -i8 -I${MKLROOT}/include
FPPFLAGS= -DMPI -DFC_HAVE_FLUSH -DFC_HAVE_ABORT -DPHI_GRID_SP
LDFLAGS=-L$(MKLROOT)
ARFLAGS_EXTRA=
FCFLAGS_fixed_f=
FCFLAGS_free_f90=
FPPFLAGS_fixed_F=
FPPFLAGS_free_F90=
BLAS_LIBS=
LAPACK_LIBS=-Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a
${MKLROOT}/lib/intel64/libmkl_core.a
${MKLROOT}/lib/intel64/libmkl_sequential.a
${MKLROOT}/lib/intel64/libmkl_blacs_intelmpi_lp64.a -Wl,--end-group
-lpthread -lm
BLACS_LIBS=
SCALAPACK_LIBS= ${MKLROOT}/lib/intel64/libmkl_scalapack_lp64.a
COMP_LIBS=
NETCDF_LIBS=
NETCDF_INTERFACE=
LIBS=$(SCALAPACK_LIBS) $(BLACS_LIBS) $(LAPACK_LIBS) $(BLAS_LIBS)
$(NETCDF_LIBS)
#SIESTA needs an F90 interface to MPI
#This will give you SIESTA's own implementation
#If your compiler vendor offers an alternative, you may change
#to it here.
MPI_INTERFACE=libmpi_f90.a
MPI_INCLUDE=.
#Dependency rules are created by autoconf according to whether
#discrete preprocessing is necessary or not.
.F.o:
$(FC) -c $(FFLAGS) $(INCFLAGS) $(FPPFLAGS) $(FPPFLAGS_fixed_F) $<
.F90.o:
$(FC) -c $(FFLAGS) $(INCFLAGS) $(FPPFLAGS) $(FPPFLAGS_free_F90) $<
.f.o:
$(FC) -c $(FFLAGS) $(INCFLAGS) $(FCFLAGS_fixed_f) $<
.f90.o:
$(FC) -c $(FFLAGS) $(INCFLAGS) $(FCFLAGS_free_f90) $<
Any help would be appreciated!
Thanks,
-Dan
Daniel C. Elton
Physics PhD Candidate
Institute for Advanced Computational Science
Stony Brook University, Stony Brook, NY 11794
@moreisdifferent <http://twitter.com/moreisdifferent> www.danielcelton.com