http://verahill.blogspot.com.au/2012/11/compiling-lsdalton-on-debian.html
http://verahill.blogspot.com.au/2012/11/compiling-dalton-2011-on-debian.html
http://verahill.blogspot.com.au/2012/11/compiling-dalton-2011-on-rocks-543centos.html
I will revisit this post at a later date.
NOTE: This is an update of an old post in which the compilation of Dalton was described, but I couldn't get the finished binary to run. Seems the main problem was that I don't know how to use dalton properly. I've got enough data now to show that dalton is working in serial mode though.
1. Sign up for a license.
2. Once you get approved you'll get an email with a link, a username and a password.
Download the cam-enabled package.
3.
cd ~/tmp
mv ~/Download/dalton-2.0-ca.tar.gz .
tar xvf dalton-2.0-cam.tar.gz
cd dalton-2.0-cam/
sudo mkdir /opt/dalton
sudo chown $USER:$USER /opt/dalton
mkdir /opt/dalton/basis
mkdir /opt/dalton/bin
Also, you may want to compile the netlib blas and lapack, and set them up. See here: http://verahill.blogspot.com.au/2012/09/compiling-netlibs-lapack-and-blas-on.html
Once you're done with that, start running configure:
./configure
------------------------------------------------------------------ Configuring the DALTON Makefile.config and "dalton" run script ------------------------------------------------------------------ No architecture specified, attempting auto-configuration: This appears to be a -linux architecture. Is this correct? [y/n] y -->Installing DALTON on a -linux computer Do you want to install the program in a parallel MPI version? [y/n] y -->WARNING: Makefiles for MPI architecture are difficult to guess Please compare the generated Makefile.config with local documentation. Checking for Fortran compiler ... from this list: mpif90 mpif77 ifort ifc efc pgf77 gfortran g77 Compiler mpif90 found, use this compiler? [y/n] y -->Compiler mpif90 found and accepted. Checking for C compiler ... from this list: mpicc icc ecc pgcc gcc Compiler mpicc found, use this compiler? [y/n] y -->Compiler mpicc found and accepted. Testing existence of libraries in this order: libacml.a libmkl.so libmkl_p3.a libatlas.a libblas.a Directory search list for libraries: /opt/gaussian/g03/ATLAS/compiled/lib /opt/gaussian/g03/ATLAS/build/lib /opt/ATLAS/lib /home/me/tmp/ATLAS/build/lib /lib /usr/local/lib /usr/lib /usr/local/lib/ATLAS /lib64 /usr/lib64 /usr/local/lib64 Found /opt/gaussian/g03/ATLAS/compiled/lib/libatlas.a, use it ? [y/n] n Found /opt/gaussian/g03/ATLAS/build/lib/libatlas.a, use it ? [y/n] n Found /opt/ATLAS/lib/libatlas.a, use it ? [y/n] y -->The following mathematical library(ies) will be used: -L/opt/ATLAS/lib -llapack -lf77blas -latlas Does your file system allow files bigger than 2 Gb? [y/n] y DALTON uses almost 7 million *8 words (56 Megabytes) of static allocations, in addition to the dynamic allocation. DALTON has the possibility to reserve an amount of static memory for storing two-electron integrals in direct and parallel calculations Storing some or all of the 2-el. integrals in memory will speed up direct and parallel calculations (and in particular the latter). NOTE: This will increase the static memory allocation used by DALTON Would you like to activate the possibility of storing 2-el.int. in memory? [y/n] y How many millions of *8 words to use for storing 2-el.integrals? 1000 -->Program will be installed with 1000000000 words used for storing 2-el.integrals Maximum amount of work memory for dynamic allocations can be changed at run time with the environment variable WRKMEM or by using the -M option to the run script: "dalton -M mb ...". We recommend at least 20 million *8 words work memory, larger for correlated calculations, but it should for maximum efficiency NOT exceed available physical memory. How many millions of *8 words to use as default for work memory? 1000 -->Program will be installed with a default work memory of 1000000000 words -->Current directory is /home/me/tmp/dalton-2.0-cam Use ./bin as installation directory for binaries and scripts? [y/n] n Please enter another installation directory: /opt/dalton/bin -->DALTON executable and script will be placed in /opt/dalton/bin directory -->Default basis set directory will be /home/me/tmp/dalton-2.0-cam/basis/ Use this directory as default basis set directory? [y/n] n Please choose another default basis set directory (must end with /) /opt/dalton/basis/ -->Default basis set directory will be /opt/dalton/basis/ -->Job specific directories under $SCRATCH/$USER -->will be used for temporary files when running DALTON Use SCRATCH=/work as default root scratch space in "dalton" run script? [y/n] n Please enter default root scratch directory: /scratch -->Creating Makefile.config ... Backup: renaming Makefile.config to Makefile.config.0 Is backend compiler gfortran ? [y/n] y gfortran version 471 prc=x86_64 Proper 64-bit file access detected. -->Creating the DALTON run-script in /opt/dalton/bin The configuration of DALTON has finished succesfully. Check compiler flags etc. in Makefile.config and run "make" to get executable.
So far so good. Ignore the math libs above.
The Makefile.config looks like this now:
ARCH = linux # # CPPFLAGS = -DVAR_GFORTRAN -DSYS_LINUX -DVAR_MFDS -D'INSTALL_WRKMEM=1000000000' -D'INSTALL_MMWORK=1000000000' -D_FILE_OFFSET_BITS=64 -DVAR_MPI -DGFORTRAN=471 -DIMPLICIT_NONE -DINSTALL_BASDIR='"/opt/dalton/basis/"' F77 = mpif90 CC = mpicc LOADER = mpif90 RM = rm -f FFLAGS = -march=native -O1 -ffast-math -funroll-loops -ftree-vectorize -fno-range-check -fno-whole-file SAFEFFLAGS = -march=native -O1 -ffast-math -funroll-loops -ftree-vectorize -fno-range-check -fno-whole-file CFLAGS = -march=native -O1 -ffast-math -funroll-loops -ftree-vectorize -std=c99 -DRESTRICT=restrict -DFUNDERSCORE=1 INCLUDES = -I../include LIBS = -L/opt/ATLAS/lib -llapack -llapack -lf77blas -latlas
INSTALLDIR = /opt/dalton/bin
PDPACK_EXTRAS = linpack.o eispack.o gp_zlapack.o
GP_EXTRAS =
AR = ar
ARFLAGS = rvs
# flags for ftnchek on Dalton /hjaaj
CHEKFLAGS = -nopure -nopretty -nocommon -nousage -noarray -notruncation -quiet -noargumants -arguments=number -usage=var-unitialized
# -usage=var-unitialized:arg-const-modified:arg-alias
# -usage=var-unitialized:var-set-unused:arg-unused:arg-const-modified:arg-alias
#
default : linuxparallel.x
SAFE2_FFLAGS = $(FFLAGS)
#
# Parallel initialization
#
MPI_INCLUDE_DIR =
MPI_LIB_PATH =
MPI_LIB =
#
#
# Suffix rules
# hjaaj Oct 04: .g is a "cheat" suffix, for debugging.
# 'make x.g' will create x.o from x.F or x.c with -g debug flag set.
#
.SUFFIXES : .F .c .o .i .g .s
.F.o:
$(F77) $(INCLUDES) $(CPPFLAGS) $(FFLAGS) -c $*.F
.F.i:
$(F77) $(INCLUDES) $(CPPFLAGS) -E $*.F > $*.i
.F.g:
$(F77) $(INCLUDES) $(CPPFLAGS) $(FFLAGS) -g -c $*.F
.F.s:
$(F77) $(INCLUDES) $(CPPFLAGS) $(FFLAGS) -S -g -c $*.F
.c.o:
$(CC) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) -c $*.c
.c.i:
$(CC) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) -E $*.c > $.i
.c.g:
$(CC) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) -g -c $*.c
.c.s:
$(CC) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) -S -g -c $*.c
Start the compilation by
make -f Makefile.in
Note that
LIBS =-L/opt/acml5.1.0/gfortran64/lib -lacmlalso works, while I couldn't get openblas or the debian lapack/blas libs to work.
If all goes well:
...
a - amfi.o a - symtra.o make[1]: Leaving directory `/home/me/tmp/dalton-2.0-cam/amfi' ---------------> Linking sequential dalton.x ... mpif90 -march=x86-64 -O3 -ffast-math -funroll-loops -ftree-vectorize -fno-range-check -fno-whole-file \ -o /opt/dalton/bin/dalton.x abacus/dalton.o cc/crayio.o abacus/linux_mem_allo.o \ abacus/herpar.o eri/eri2par.o amfi/amfi.o amfi/symtra.o gp/mpi_dummy.o -Labacus -labacus -Lrsp -lrsp -Lsirius -lsirius -labacus -Leri -leri -Ldensfit -ldensfit -Lcc -lcc -Ldft -ldft -Lgp -lgp -Lpdpack -lpdpack -L/opt/ATLAS/lib -llapack -lf77blas -latlas ---------------> Linking parallel dalpar.x ... mpif90 -march=x86-64 -O3 -ffast-math -funroll-loops -ftree-vectorize -fno-range-check -fno-whole-file \ -o /opt/dalton/bin/dalpar.x abacus/dalton.o cc/crayio.o abacus/linux_mem_allo.o \ abacus/herpar.o eri/eri2par.o amfi/amfi.o amfi/symtra.o -Labacus -labacus -Lrsp -lrsp -Lsirius -lsirius -labacus -Leri -leri -Ldensfit -ldensfit -Lcc -lcc -Ldft -ldft -Lgp -lgp -Lpdpack -lpdpack -L/opt/ATLAS/lib -llapack -lf77blas -latlas \ -L/usr/lin/openmpi/lib -lmpi
Copy the basis sets:
cp basis/* /opt/dalton/basis/
Throw
export PATH=$PATH:/opt/dalton/binin your ~/.bashrc and source it (source ~/.bashrc)
You're now ready to see how well it went.
cd test/ ./dft_b3lyp_cart mv dft_b3lyp_cart.dal DALTON.INP && mv dft_b3lyp_cart.mol MOLECULE.INP mpirun -n 1 dalpar.x DALTON.INP MOLECULE.INP > DALTON.OUT
Looking at the output in DALTON.OUT:
*************************************************************************** ************************ FINAL RESULTS FROM ABACUS ************************ *************************************************************************** Date and time (Linux) : Fri Oct 19 09:55:42 2012 Host name : beryllium Molecular geometry (au) ----------------------- O 0.0000000000 0.0000000000 -0.1231063545 H1 1 0.0000000000 1.4300000000 0.9768936455 H1 2 0.0000000000 -1.4300000000 0.9768936455 Molecular wave function and energy ---------------------------------- Spin multiplicity 1 State number 1 Total charge 0 Total energy -73.9502446565 au (Hartrees) -2012.28846267 eV -194156.3395 kJ/mol Relativistic corrections ------------------------ Darwin correction: 0.1095380827 au Mass-velocity correction: -0.1391457352 au Total relativistic correction: -0.0296076525 au (0.0400%) Non-relativistic + relativistic energy: -73.9798523089 au Dipole moment ------------- 0.783423 au 1.991263 Debye Dipole moment components ------------------------ au Debye z 0.78342341 1.99126348 1 a.u. = 2.54175 Debye Interatomic separations (in Angstroms): --------------------------------------- O H1 1 H1 2 ------ ------ ------ O : 0.000000 H1 1: 0.954707 0.000000 H1 2: 0.954707 1.513447 0.000000 Max interatomic separation is 1.5134 Angstroms between atoms "H1 2" and "H1 1". Bond distances (angstroms): --------------------------- atom 1 atom 2 distance ------ ------ -------- bond distance: H1 1 O 0.954707 bond distance: H1 2 O 0.954707 Bond angles (degrees): ---------------------- atom 1 atom 2 atom 3 angle ------ ------ ------ ----- bond angle: H1 1 O H1 2 104.863 CPU time statistics for ABACUS ------------------------------ >>>> Total CPU time used in ABACUS: 0.01 seconds >>>> Total wall time used in ABACUS: 0.00 seconds - End of Static Property Section >>>> Total CPU time used in DALTON: 1.56 seconds >>>> Total wall time used in DALTON: 0.00 seconds Date and time (Linux) : Fri Oct 19 09:55:42 2012 Host name : beryllium
So it's clearly working. However, -n 2 leads to a string of errors:
2abe8f67d000-2abe8f87c000 ---p 00005000 08:01 1839615 /usr/lib/openmpi/lib/openmpi/mca_dpm_orte.so 2abe8f87c000-2abe8f87d000 rw-p 00004000 08:01 1839615 /usr/lib/openmpi/lib/openmpi/mca_dpm_orte.so 2abe8f87d000-2ac06c5e3000 rw-p 00000000 00:00 0 2ac070000000-2ac070021000 rw-p 00000000 00:00 0 2ac070021000-2ac074000000 ---p 00000000 00:00 0 7fffc3ce9000-7fffc3d0c000 rw-p 00000000 00:00 0 [stack] 7fffc3dff000-7fffc3e00000 r-xp 00000000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] Program received signal SIGABRT: Process abort signal. Backtrace for this error: ^Cmpirun: killing job... -------------------------------------------------------------------------- mpirun noticed that process rank 0 with PID 2846 on node beryllium exited on signal 0 (Unknown signal 0). -------------------------------------------------------------------------- mpirun: clean termination accomplished
Errors:
Error:
Warning: Type mismatch in argument 'indsq' at (1); passed REAL(8) to INTEGER(4)
cc3_omeg3.F:3322.33:
CALL CC3_RACC3(DUMMY,OMEGA2M,WORK(KRMAT4),ISYMB,B,
1
Warning: Rank mismatch in argument 'omega2p' at (1) (rank-1 and scalar)
cc3_omeg3.F:3352.27:
CALL CC3_RACC3(DUMMY,OMEGA2M,WORK(KRMAT3),ISYMD,D,ISYRES,
1
Warning: Rank mismatch in argument 'omega2p' at (1) (rank-1 and scalar)
cc3_omeg3.F: In function ‘cc3_racc3_.constprop.0’:cc3_omeg3.F:1319:0: internal compiler error: in expand_assignment, at expr.c:4731Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.7/README.Bugs> for instructions.
make[1]: *** [cc3_omeg3.o] Error 1
make[1]: Leaving directory `/home/me/tmp/dalton-2.0-cam/cc'
make: *** [CC_OBJ] Error 2
Solution:
add -fno-whole-file to FFLAGS in Makefile.config
add -fno-whole-file to FFLAGS in Makefile.config
Error:
make[1]: Leaving directory `/home/me/tmp/dalton-2.0-cam/cc'
cd dft && make all
make[1]: Entering directory `/home/me/tmp/dalton-2.0-cam/dft'
gfortran -I../include -DVAR_GFORTRAN -DSYS_LINUX -DVAR_MFDS -D'INSTALL_WRKMEM=1000000000' -D'INSTALL_MMWORK=1000000000' -D_FILE_OFFSET_BITS=64 -DVAR_MPI -DGFORTRAN=471 -DIMPLICIT_NONE -DINSTALL_BASDIR='"/opt/dalton/basis/"' -march=x86-64 -O3 -ffast-math -funroll-loops -ftree-vectorize -fno-range-check -fno-whole-file -c dft_den.F
gfortran -I../include -DVAR_GFORTRAN -DSYS_LINUX -DVAR_MFDS -D'INSTALL_WRKMEM=1000000000' -D'INSTALL_MMWORK=1000000000' -D_FILE_OFFSET_BITS=64 -DVAR_MPI -DGFORTRAN=471 -DIMPLICIT_NONE -DINSTALL_BASDIR='"/opt/dalton/basis/"' -march=x86-64 -O3 -ffast-math -funroll-loops -ftree-vectorize -fno-range-check -fno-whole-file -c dft_grid.F
gfortran -I../include -DVAR_GFORTRAN -DSYS_LINUX -DVAR_MFDS -D'INSTALL_WRKMEM=1000000000' -D'INSTALL_MMWORK=1000000000' -D_FILE_OFFSET_BITS=64 -DVAR_MPI -DGFORTRAN=471 -DIMPLICIT_NONE -DINSTALL_BASDIR='"/opt/dalton/basis/"' -march=x86-64 -O3 -ffast-math -funroll-loops -ftree-vectorize -fno-range-check -fno-whole-file -c dft_ksm.F
dft_ksm.F:239:0: fatal error: mpif.h: No such file or directorycompilation terminated.
make[1]: *** [dft_ksm.o] Error 1
make[1]: Leaving directory `/home/me/tmp/dalton-2.0-cam/dft'
make: *** [DFT_OBJ] Error 2
Solution:
Make sure you set
It may not be necessary for the mpiXXX compilers, but e.g. gfortran would not know where to look for the mpi headers.
On ROCKS/CentOS:
Error:
Make sure you set
MPI_INCLUDE_DIR = -I/usr/lib/openmpi/include
It may not be necessary for the mpiXXX compilers, but e.g. gfortran would not know where to look for the mpi headers.
On ROCKS/CentOS:
Error:
mpif90 -I../include -DVAR_GFORTRAN -DSYS_LINUX -DVAR_MFDS -D'INSTALL_WRKMEM=100000000' -D'INSTALL_MMWORK=100000000' -D_FILE_OFFSET_BITS=64 -DVAR_MPI -DGFORTRAN=412 -DIMPLICIT_NONE -DINSTALL_BASDIR='"/home/me/.dalton/basis"' -march=x86-64 -O3 -ffast-math -funroll-loops -ftree-vectorize -fno-range-check -c gphjj.F
In file gphjj.F:416
WRITE (LUPRIN,'(T6,2A)') 'Date and time (Linux) : ',FDATE()
1
In file gphjj.F:89
2
Error: Global name 'fdate' at (1) is already being used as a SUBROUTINE at (2)
In file gphjj.F:934
IF(IR-IB) 340,310,320
1
Warning: Obsolete: arithmetic IF statement at (1)
In file gphjj.F:1390
DATA C/8H********/
1
Warning: Extension: Hollerith constant at (1)
In file gphjj.F:1390
DATA C/8H********/
1
Warning: Extension: Conversion from HOLLERITH to REAL(8) at (1)
make[1]: *** [gphjj.o] Error 1
make[1]: Leaving directory `/home/me/tmp/dalton-2.0-cam/gp'
make: *** [GP_OBJ] Error 2
Solution:
???
No comments:
Post a Comment