compiling vasp.5.2 on BlueGene/P

Questions regarding the compilation of VASP on various platforms: hardware, compilers and libraries, etc.


Moderators: Global Moderator, Moderator

Post Reply
Message
Author
nkwem
Newbie
Newbie
Posts: 12
Joined: Tue Feb 23, 2010 7:31 am
License Nr.: 5-44
Location: South Africa

compiling vasp.5.2 on BlueGene/P

#1 Post by nkwem » Tue Feb 23, 2010 8:35 am

I have been trying to compile vasp.5.2 without success. Here is my makefile

.SUFFIXES: .inc .f .F
#-----------------------------------------------------------------------
# Makefile for RS 6000/ SP2, SP3 and possibly SP4
#
# on some systems the file mpif.h is located somewhere in the default
# include search path.
# Copying the mpif.h file to the local directory and converting it
# to f90 style does not work (because the system wide mpif.h file
# is included). One solution is to rename the mpif.h file to mpif90.h.
# If the new mpi routines (parallel_new.tar) are used only the file
# pm.inc must be changed accordingly.
#
# Attention:
# =======================
# present default optimisation is -O3, but you might try -O4 as well
#
# several files are optimized less aggressive (see bottom of the makefile),
# since agressive optimisation of those files caused VASP to bomb
# in one or the other compiler version
# because it was impossible to keep track of which file is not
# properly compiled by which version, all files that
# are problematic in one or the other version are compiled
# with lower optimisation
#
# ZHEEVX is not working properly, so please uncomment the line
# #define USE_ZHEEVX
# in subrot.F and wavepre_noio.F
#
#-----------------------------------------------------------------------

# all CPP processed fortran files have the extension .f
SUFFIX=.f

#-----------------------------------------------------------------------
# fortran compiler and linker
#-----------------------------------------------------------------------
BGPSYS = /bgsys/drivers/ppcfloor/
FC=/bgsys/drivers/ppcfloor/comm/bin/mpixlf90_r -g
FC2=$(FC)
FCL=$(FC)

#-----------------------------------------------------------------------
# C-preprocessor define any of the flags given below
# MPI generate parallel version
# NGZhalf charge density reduced in Z direction
# wNGZhalf gamma point only reduced in Z direction
# CACHE_SIZE 5001 for SP3 and Power 3
# 32768 for 550,590,3CT
# 8001 595/397 quad word systems
# scaLAPACK use scaLAPACK
#-----------------------------------------------------------------------
# Precompilation:
# Scalapack -DscaLAPACK gamma version -DwNGZhalf
# half storage for densities and charges -DNGZhalf
# SCALAPACK:
# It is advised to compile with scalapack for large number of processors
# Depending on the processor type the block size must be adapted (line 56 in scala.F)
# on BlueGene the optimal size is 16-64
# synchrone -Dno_async
# By experience, NB=36 is around the better valuefor scalapack blocks in scala.F
# tuned levels:
# no bgl tuned except mpi block control
# -DCACHE_SIZE=4000 -DMPI_BLOCK=40000
# tuned-level 0, replace mpi_alltoall by mpi_allreduce in mpi.F
# -DCACHE_SIZE=4000 -DBGL -DMPI_BLOCK=40000 $*.F >$*.f
# ESSL FFT: IBM version with FFT1D from ESSL
# -DFFT_ESSL
# IBM version to reduce Memory size
# -DBG_DEBUG_OK
#-----------------------------------------------------------------------

CPP = /usr/bin/cpp -P -C -DHOST=\"BlueGene\" -DMPI -DNGZhalf \
-Davoidalloc -DBG_SCALAPACK -DBG_DEBUG_OK -DFFT_ESSL -DFFT_ESSL_SIZE \
-DscaLAPACK -DCACHE_SIZE=4000 -DBGL \
-DMPI_BLOCK=40000 -Duse_collective -Duse_allreduce $*.F >$*.f

CPP = /usr/bin/cpp -P -C -DHOST=\"BlueGene\" -DMPI -DNGZhalf \
-Davoidalloc -DBG_DEBUG_OK -DFFT_ESSL -DFFT_ESSL_SIZE \
-DCACHE_SIZE=4000 -DBGL \
-DMPI_BLOCK=40000 -Duse_collective -Duse_allreduce $*.F >$*.f



# -DMPI_BLOCK=40000 -Duse_collective -Duse_allreduce -DTIMER_DETAILS $*.F >$*.f

#-----------------------------------------------------------------------
# general fortran flags, none required
#-----------------------------------------------------------------------

FFLAGS = -qarch=450d -qtune=450

#-----------------------------------------------------------------------
# optimization:
# optimise for the machine on which the code is compiled
#-----------------------------------------------------------------------

OFLAG = -O3 -qarch=450d -qtune=450
OFLAG_HIGH = $(OFLAG)
OBJ_HIGH = none
OBJ_NOOPT = none
DEBUG = -g
INCS = -I/bgsys/ibm_essl/sles10/prod/opt/ibmmath/include
###Might try to uncomment this line
#INCS = -I$(BGPSYS)/include -I$(BGPSYS)/comm/include -L$(BGPSYS)/lib
INLINE = $(OFLAG)

#-----------------------------------------------------------------------
# maybe one need to set an include path (usually not required)
#-----------------------------------------------------------------------

#-----------------------------------------------------------------------
# options for linking
# the following option increases the size of the data frame
# the default makefile does not include support for scaLAPACK
# since problems with scaLAPACK were reported
#
#-----------------------------------------------------------------------

BGSYS = /bgsys/ibm_essl/sles10/prod/opt/ibmmath

###Might try to uncomment this line
#LINK = -g -L$(BGPSYS)/lib -L/opt/ibmmath/lib
LINK = -g

#LIBSCA = /bgpusr1/vezolle/lib
#LIBLOC = /bgpusr1/vezolle/lib
#LIBSCA = /CHPC/usr/local/scalapack
#LIBLOC = /CHPC/usr/local/scalapack
#SCALAPACK = -L$(LIBSCA) -lscalapack -lblacsF77init -lblacs
###Might try to uncomment this line
#SCALAPACK = -L$(LIBSCA) -lscalapack -lblacsF77init_MPI-BGP-0 -lblacs_MPI-BGP-0

#ESSL = ../vasp.4.lib/dsygv.o ../vasp.4.lib/dgegv.o -L/opt/ibmmath/essl/4.3/lib/libesslbg.a /opt/ibmcmp/xlmass/bg/4.4/bglib/libmass.a /opt/ibmcmp/xlmass/bg/4.4/bglib/libmassv.a

#ESSL = -L/opt/ibmmath/essl/4.3/lib -lesslbg
ESSL = -L$(BGSYS)/lib -lesslbg

LIB = -Wl,-allow-multiple-definition -L../vasp.4.lib -ldmy ../vasp.4.lib/linpack_double.o ../vasp.4.lib/lapack_double.o $(SCALAPACK) $(ESSL)

#-----------------------------------------------------------------------
# specify 3d-fft to be used with VASP
#-----------------------------------------------------------------------
FFT3D = fftmpi.o fftmpi_map.o fft3dlib.o
#FFT3D = fftmpiessl.o fftmpi_map.o fft3dlib.o

#-----------------------------------------------------------------------
# general rules and compile lines
#-----------------------------------------------------------------------
BASIC= symmetry.o symlib.o lattlib.o random.o

SOURCE= base.o mpi.o smart_allocate.o xml.o \
constant.o jacobi.o main_mpi.o scala.o \
asa.o lattice.o poscar.o ini.o setex.o radial.o \
pseudo.o mgrid.o mkpoints.o wave.o wave_mpi.o $(BASIC) \
nonl.o nonlr.o dfast.o choleski2.o \
mix.o charge.o xcgrad.o xcspin.o potex1.o potex2.o \
metagga.o constrmag.o pot.o cl_shift.o force.o dos.o elf.o \
tet.o hamil.o steep.o \
chain.o dyna.o relativistic.o LDApU.o sphpro.o paw.o us.o \
ebs.o wavpre.o wavpre_noio.o broyden.o \
dynbr.o rmm-diis.o reader.o writer.o tutor.o xml_writer.o \
brent.o stufak.o fileio.o opergrid.o stepver.o \
dipol.o xclib.o chgloc.o subrot.o optreal.o davidson.o \
edtest.o electron.o shm.o pardens.o paircorrection.o \
optics.o constr_cell_relax.o stm.o finite_diff.o \
elpol.o setlocalpp.o aedens.o

INC=

vasp: $(SOURCE) $(FFT3D) $(INC) main.o
rm -f vasp
$(FCL) -o vasp main.o $(SOURCE) $(FFT3D) $(LIB) $(LINK)
makeparam: $(SOURCE) $(FFT3D) makeparam.o main.F $(INC)
$(FCL) -o makeparam $(LINK) makeparam.o $(SOURCE) $(FFT3D) $(LIB)
zgemmtest: zgemmtest.o base.o random.o $(INC)
$(FCL) -o zgemmtest $(LINK) zgemmtest.o random.o base.o $(LIB)
dgemmtest: dgemmtest.o base.o random.o $(INC)
$(FCL) -o dgemmtest $(LINK) dgemmtest.o random.o base.o $(LIB)
ffttest: base.o smart_allocate.o mpi.o mgrid.o random.o ffttest.o $(FFT3D) $(INC)
$(FCL) -o ffttest $(LINK) ffttest.o mpi.o mgrid.o random.o smart_allocate.o base.o $(FFT3D) $(LIB)
kpoints: $(SOURCE) $(FFT3D) makekpoints.o main.F $(INC)
$(FCL) -o kpoints $(LINK) makekpoints.o $(SOURCE) $(FFT3D) $(LIB)

clean:
-rm -f *.g *.f *.o *.L *.mod

main.o: main$(SUFFIX)
$(FC) $(FFLAGS) $(DEBUG) $(INCS) -c main$(SUFFIX)
xcgrad.o: xcgrad$(SUFFIX)
$(FC) $(FFLAGS) $(INLINE) $(INCS) -c xcgrad$(SUFFIX)
xcspin.o: xcspin$(SUFFIX)
$(FC) $(FFLAGS) $(INLINE) $(INCS) -c xcspin$(SUFFIX)

makeparam.o: makeparam$(SUFFIX)
$(FC) $(FFLAGS)$(DEBUG) $(INCS) -c makeparam$(SUFFIX)

makeparam$(SUFFIX): makeparam.F main.F
#
# MIND: I do not have a full dependency list for the include
# and MODULES: here are only the minimal basic dependencies
# if one strucuture is changed then touch_dep must be called
# with the corresponding name of the structure
#

#include Makefile.dep

$(OBJ_HIGH):
$(CPP)
$(FC) $(FFLAGS) $(OFLAG_HIGH) $(INCS) -c $*$(SUFFIX)
$(OBJ_NOOPT):
$(CPP)
$(FC) $(FFLAGS) $(INCS) -c $*$(SUFFIX)

fft3dlib_f77.o: fft3dlib_f77.F
$(CPP)
$(F77) $(FFLAGS_F77) -c $*$(SUFFIX)

.F.o:
$(CPP)
$(FC) $(FFLAGS) $(OFLAG) $(INCS) -c $*$(SUFFIX)
.F$(SUFFIX):
$(CPP)
$(SUFFIX).o:
$(FC) $(FFLAGS) $(OFLAG) $(INCS) -c $*$(SUFFIX)

# special rules
#-----------------------------------------------------------------------

radial.o: radial.F
$(CPP)
$(FC) $(FFLAGS) $(INCS) -O2 -c $*$(SUFFIX)

wave.o: wave.F
$(CPP)
$(FC2) $(FFLAGS) $(INCS) -O2 -c $*$(SUFFIX)

metagga.o: metagga.F
$(CPP)
$(FC) $(FFLAGS) $(INCS) -O2 -c $*$(SUFFIX)

nonl.o: nonl.F
$(CPP)
$(FC) $(FFLAGS) $(INCS) -O -c $*$(SUFFIX)

paw.o: paw.F
$(CPP)
$(FC) $(FFLAGS) $(INCS) -O2 -c $*$(SUFFIX)

pseudo.o: pseudo.F
$(CPP)
$(FC) $(FFLAGS) $(INCS) -O2 -c $*$(SUFFIX)

random.o: random.F
$(CPP)
$(FC2) $(FFLAGS) $(INCS) -O3 -c $*$(SUFFIX)

xclib.o: xclib.F
$(CPP)
$(FC2) $(FFLAGS) $(INCS) -O3 -c $*$(SUFFIX)

setex.o: setex.F
$(CPP)
$(FC2) $(FFLAGS) $(INCS) -O3 -c $*$(SUFFIX)

fft3dlib.o: fft3dlib.F
$(CPP)
$(FC2) $(FFLAGS) $(INCS) -O3 -c $*$(SUFFIX)

xml.o: xml.F
$(CPP)
$(FC2) $(FFLAGS) $(INCS) -O3 -c $*$(SUFFIX)

asa.o: asa.F
$(CPP)
$(FC2) $(FFLAGS) $(INCS) -O3 -c $*$(SUFFIX)

ebs.o: ebs.F
$(CPP)
$(FC2) $(FFLAGS) $(INCS) -O3 -c $*$(SUFFIX)

mpi.o: mpi.F
$(CPP)
$(FC2) $(FFLAGS) $(INCS) -O3 -c $*$(SUFFIX)

lattlib.o: lattlib.F
$(CPP)
$(FC2) $(FFLAGS) $(INCS) -O3 -c $*$(SUFFIX)

optreal.o: optreal.F
$(CPP)
$(FC2) $(FFLAGS) $(INCS) -O3 -c $*$(SUFFIX)

dos.o: dos.F
$(CPP)
$(FC2) $(FFLAGS) $(INCS) -O3 -c $*$(SUFFIX)

us.o: us.F
$(CPP)
$(FC2) $(FFLAGS) $(INCS) -O3 -c $*$(SUFFIX)


The following is the error I get:

1501-510 Compilation successful for file poscar.f.
** ini === End of Compilation 1 ===
** splcof === End of Compilation 2 ===
** splcof_n0 === End of Compilation 3 ===
** splcof_nder === End of Compilation 4 ===
** splcpy === End of Compilation 5 ===
** splval === End of Compilation 6 ===
** my_date_and_time === End of Compilation 7 ===
** memory_check === End of Compilation 8 ===
"ini.f", 1500-036 (I) The NOSTRICT option (default at OPT(3)) has the potential to alter the semantics of a program. Please refer to documentation on the STRICT/NOSTRICT option for more information.
"ini.f", 1500-036 (I) The NOSTRICT option (default at OPT(3)) has the potential to alter the semantics of a program. Please refer to documentation on the STRICT/NOSTRICT option for more information.
"ini.f", 1500-036 (I) The NOSTRICT option (default at OPT(3)) has the potential to alter the semantics of a program. Please refer to documentation on the STRICT/NOSTRICT option for more information.
1501-510 Compilation successful for file ini.f.
1517-020: (I) Source file is empty.
** setex.f === End of Compilation 1 ===
"setex.f", 1500-030 (I) INFORMATION: (block data)__1: Additional optimization may be attained by recompiling and specifying MAXMEM option with a value greater than 0.
1501-510 Compilation successful for file setex.f.
"radial.f", line 909.11: 1514-219 (S) Unable to access module symbol file for module setexm. Check path and file permissions of file. Use association not done for this module.
1501-511 Compilation failed for file radial.f.
make: *** [radial.o] Error 1
Last edited by nkwem on Tue Feb 23, 2010 8:35 am, edited 1 time in total.

Danny
Full Member
Full Member
Posts: 201
Joined: Thu Nov 02, 2006 4:35 pm
License Nr.: 5-532
Location: Ghent, Belgium
Contact:

compiling vasp.5.2 on BlueGene/P

#2 Post by Danny » Tue Mar 02, 2010 8:47 am

check setex.f file, probably your precompiler does something strange resulting in an empty setex.f file
Last edited by Danny on Tue Mar 02, 2010 8:47 am, edited 1 time in total.

akuritu

compiling vasp.5.2 on BlueGene/P

#3 Post by akuritu » Thu Jun 07, 2012 3:19 pm

I am also having this kind of problem with radial.f file.
My system is also SMP System from IBM P595/690.

My error is following-

mpxlf90 -qmaxmem=-1 -qarch=auto -qtune=auto -qcache=auto -qinitauto -O2 -c radial.f
** radial === End of Compilation 1 ===
1585-100 Internal compiler error -- please contact your service representative.
1501-511 Compilation failed for file radial.f.
make: 1254-004 The error code from the last command is 255.

can you help me in this regard ?
Last edited by akuritu on Thu Jun 07, 2012 3:19 pm, edited 1 time in total.

Post Reply