14 Kasım 2012 Çarşamba

Compiling Dalton 2.0 QM on Debian -- in progress

To contact us Click HERE
UPDATE: I've since successfully compiled Dalton 2011 and lsdalton on both debian and CentOS/ROCKS:
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 computerDo 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.aDirectory 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] nFound /opt/gaussian/g03/ATLAS/build/lib/libatlas.a, use it ? [y/n] nFound /opt/ATLAS/lib/libatlas.a, use it ? [y/n] y-->The following mathematical library(ies) will be used:   -L/opt/ATLAS/lib -llapack -lf77blas -latlasDoes your file system allow files bigger than 2 Gb? [y/n] yDALTON uses almost 7 million *8 words (56 Megabytes) of staticallocations, in addition to the dynamic allocation.DALTON has the possibility to reserve an amount of static memoryfor storing two-electron integrals in direct and parallel calculationsStoring some or all of the 2-el. integrals in memory will speed updirect and parallel calculations (and in particular the latter).NOTE: This will increase the static memory allocation used by DALTONWould you like to activate the possibility of storing 2-el.int. in memory? [y/n] yHow 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.integralsMaximum amount of work memory for dynamic allocations can bechanged at run time with the environment variable WRKMEMor 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 maximumefficiency 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-camUse ./bin as installation directory for binaries and scripts? [y/n] nPlease 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] nPlease 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 DALTONUse SCRATCH=/work as default root scratch space in "dalton" run script? [y/n] nPlease enter default root scratch directory: /scratch-->Creating Makefile.config ...Backup: renaming Makefile.config to Makefile.config.0Is backend compiler gfortran ? [y/n] ygfortran version 471 prc=x86_64Proper 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           = mpif90CC            = mpiccLOADER        = mpif90RM            = rm -fFFLAGS        = -march=native -O1 -ffast-math -funroll-loops -ftree-vectorize -fno-range-check -fno-whole-fileSAFEFFLAGS    = -march=native -O1 -ffast-math -funroll-loops -ftree-vectorize -fno-range-check -fno-whole-fileCFLAGS        = -march=native -O1 -ffast-math -funroll-loops -ftree-vectorize -std=c99 -DRESTRICT=restrict -DFUNDERSCORE=1INCLUDES      = -I../include LIBS          = -L/opt/ATLAS/lib -llapack -llapack -lf77blas -latlas
INSTALLDIR    = /opt/dalton/binPDPACK_EXTRAS = linpack.o eispack.o gp_zlapack.oGP_EXTRAS     = AR            = arARFLAGS       = rvs# flags for ftnchek on Dalton /hjaajCHEKFLAGS  = -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.xSAFE2_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 -lacml
also works, while I couldn't get openblas or the debian lapack/blas libs to work.

If all goes well:
...
a - amfi.oa - symtra.omake[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/bin
in your ~/.bashrc and source it (source ~/.bashrc)

You're now ready to see how well it went.

cd test/./dft_b3lyp_cartmv dft_b3lyp_cart.dal DALTON.INP && mv dft_b3lyp_cart.mol MOLECULE.INPmpirun -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.so2abe8f87c000-2abe8f87d000 rw-p 00004000 08:01 1839615                    /usr/lib/openmpi/lib/openmpi/mca_dpm_orte.so2abe8f87d000-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
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
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:???

Hiç yorum yok:

Yorum Gönder