Hallo,
da ich noch ein wenig Zeit in den Semesterferien habe, wollte ich mir mal das Programm cp2k bauen, um damit ein wenig 'spielen' zu können.
Das Programm ist unter http://www.cp2k.org/index.php/obtaining/ zu erhalten. Ich benutze Version 2.2.
Da anfängliche Versuche, cp2k samt benötigter Libs nach der mitgelieferten INSTALL-Anleitung gescheitert sind, probiere ich seit gestern mit Hilfe des Intel-Compilers zum Erfolg zu kommen.
Dazu habe ich mir zunächst http://software.intel.com/en-us/articles/build-cp2k-using-intel-fortran-compiler-professional-edition/ durchgelesen, habe dann aber folgendes Tutorial gefunden und probiert es durchzuarbeiten: http://hpc.xrqtc.com/index.php/articles-tutorials/192-how-to-build-cp2k-with-intel-compiler-121-openmpi-143-and-infiniband-support. Leider hat es nicht geklappt. Ich werde mal meine Vorgehensweise beschreiben und hoffen, dass mich jemand auf den richtigen Pfad bringt ☺
Zuerst habe ich anders als im Tutorial beschrieben OpenMPI 1.4.5 ohne OFED und ohne Torque/PBS kompiliert.
./configure --prefix=/usr/local CC=icc CXX=icpc F77=ifort FC=ifort
Bin mir aber nicht sicher, ob hier noch alles richtig gelaufen ist.
Hier das Ende der Ausgabe nachedem ich make all install ausgeführt habe. Ich habe mir schon über sudo nautilus vorübergehend komplette Lese- und Schreibrechte für das /usr Verzeichnis geholt, allerdings hat das nichts an der Fehlermeldung geändert...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Making install in contrib make[1]: Entering directory `/home/tobias/Downloads/openmpi-1.4.5/contrib' make[2]: Entering directory `/home/tobias/Downloads/openmpi-1.4.5/contrib' make[2]: Nothing to be done for `install-exec-am'. test -z "/usr/local/share/openmpi/amca-param-sets" || /bin/mkdir -p "/usr/local/share/openmpi/amca-param-sets" /usr/bin/install -c -m 644 'amca-param-sets/example.conf' '/usr/local/share/openmpi/amca-param-sets/example.conf' test -z "/usr/local/share/openmpi" || /bin/mkdir -p "/usr/local/share/openmpi" /usr/bin/install -c -m 644 'openmpi-valgrind.supp' '/usr/local/share/openmpi/openmpi-valgrind.supp' /usr/bin/install: cannot remove `/usr/local/share/openmpi/openmpi-valgrind.supp': Permission denied make[2]: *** [install-dist_pkgdataDATA] Error 1 make[2]: Leaving directory `/home/tobias/Downloads/openmpi-1.4.5/contrib' make[1]: *** [install-am] Error 2 make[1]: Leaving directory `/home/tobias/Downloads/openmpi-1.4.5/contrib' make: *** [install-recursive] Error 1 |
Unter dem Punkt Environment Set Up. Habe ich zunächst wie beschrieben
1 | screen -S cp2k-intel-ompi |
ausgeführt. Das anschließende
1 | tar -xvf cp2k.tar.gz |
habe ich nicht ausgeführt, da ich das Programm nicht als Tar-Ball erhalten habe.
Jetzt soll man die benötigten Module laden:
1 2 3 | #. /opt/modules/init/bash #module load intel/composer_xe_2011_sp1.6.233 #module load openmpi/1.4.3_intel2011 |
Aber schon die erste Zeile mag schon nicht so richtig klappen:
1 2 | tobias@brutus:~$ . /opt/modules/init/bash/ bash: /opt/modules/init/bash/: No such file or directory |
Nachdem ich das Verzeichnis mit mkdir erstellt hatte, bekam ich folgende Meldung:
1 2 | tobias@brutus:~$ . /opt/modules/init/bash/ bash: .: /opt/modules/init/bash/: is a directory |
Das eigentliche Laden der benötigten Module ist dann auch schief gelaufen:
1 2 3 | tobias@brutus:~$ module load /opt/intel/composer_xe_2011_sp1.9.293/ module: command not found |
Das bauen des FFTW- Wrappers hat mit Hilfe aus dem Forum fehlerlos geklappt. Allerdings konnte ich mit dem Satz
You can link this wrapper to /opt/compilers/intel/composer_xe_2011_sp1.6.233/mkl/lib/intel64
nichts anfangen und bin ihn einfach mal übergangen.
Anschließend habe ich das makefile entsprechend der Vorlage modifiziert und die Versionsnummer des Intel-Composers angepasst. Es hat jetzt die folgende Form:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | # by default some intel compilers put temporaries on the stack # this might lead to segmentation faults is the stack limit is set to low # stack limits can be increased by sysadmins or e.g with ulimit -s 256000 # furthermore new ifort (10.0?) compilers support the option # -heap-arrays 64 # add this to the compilation flags is the other options do not work # The following settings worked for: # - AMD64 Opteron # - SUSE Linux Enterprise Server 10.0 (x86_64) # - Intel(R) Fortran Compiler for Intel(R) EM64T-based applications, Version 10.0.025 # - AMD acml library version 3.6.0 # - MPICH2-1.0.5p4 # - SCALAPACK library 1.8.0 # # CC = cc CPP = FC = mpif90 LD = mpif90 AR = ar -r INTEL_MKL=/opt/compilers/intel/composer_xe_2011_sp1.6.293/mkl INTEL_INC = $(INTEL_MKL)/include/fftw INTEL_LIB = $(INTEL_MKL)/lib/intel64 DFLAGS = -D__INTEL -D__FFTSG -D__parallel -D__BLACS -D__SCALAPACK -D__FFTW3 CPPFLAGS = FCFLAGS = $(DFLAGS) -I$(INTEL_INC) -O3 -msse2 -heap-arrays 64 -funroll-loops -fpp -free FCFLAGS2 = $(DFLAGS) -I$(INTEL_INC) -O1 -msse2 -heap-arrays 64 -fpp -free LDFLAGS = $(FCFLAGS) -I$(INTEL_INC) LIBS = -L$(INTEL_LIB) -lfftw3xf_intel \ -L${INTEL_LIB} -I${INTEL_INC} -I${INTEL_INC}/intel64/lp64 -lmkl_blas95_lp64 \ -L${INTEL_LIB} -I${INTEL_INC} -I${INTEL_INC}/intel64/lp64 -lmkl_lapack95_lp64 \ ${INTEL_LIB}/libmkl_scalapack_lp64.a ${INTEL_LIB}/libmkl_solver_lp64_sequential.a -Wl,--start-group ${INTEL_LIB}/libmkl_intel_lp64.a ${INTEL_LIB}/libmkl_sequential.a ${INTEL_LIB}/libmkl_core.a ${INTEL_LIB}/libmkl_blacs_openmpi_lp64.a -Wl,--end-group -lpthread OBJECTS_ARCHITECTURE = machine_intel.o graphcon.o: graphcon.F $(FC) -c $(FCFLAGS2) $< #qs_vxc_atom.o: qs_vxc_atom.F #$(FC) -c $(FCFLAGS2) $< |
Die letzten beiden Zeilen habe ich wegen der Fehlermeldung:
1 2 | tobias@brutus:~/cp2k-2_2-branch/cp2k/makefiles$ make -j 2 ARCH=Linux-x86-64-intel VERSION=popt /home/tobias/cp2k-2_2-branch/cp2k/makefiles/../arch/Linux-x86-64-intel.popt:43: *** missing separator. Stop. |
auskommentiert.
Im Vergleich dazu das Original:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | # by default some intel compilers put temporaries on the stack # this might lead to segmentation faults is the stack limit is set to low # stack limits can be increased by sysadmins or e.g with ulimit -s 256000 # furthermore new ifort (10.0?) compilers support the option # -heap-arrays 64 # add this to the compilation flags is the other options do not work # The following settings worked for: # - AMD64 Opteron # - SUSE Linux Enterprise Server 10.0 (x86_64) # - Intel(R) Fortran Compiler for Intel(R) EM64T-based applications, Version 10.0.025 # - AMD acml library version 3.6.0 # - MPICH2-1.0.5p4 # - SCALAPACK library 1.8.0 # # CC = cc CPP = FC = mpif90 LD = mpif90 AR = ar -r DFLAGS = -D__INTEL -D__FFTSG -D__parallel -D__BLACS -D__SCALAPACK -D__FFTW3 CPPFLAGS = FCFLAGS = $(DFLAGS) -I$(INTEL_INC) -O3 -xW -heap-arrays 64 -funroll-loops -fpp -free FCFLAGS2 = $(DFLAGS) -I$(INTEL_INC) -O1 -xW -heap-arrays 64 -fpp -free LDFLAGS = $(FCFLAGS) -I$(INTEL_INC) LIBS = $(INTEL_LIB)/libscalapack.a \ $(INTEL_LIB)/libblacs_init.a \ $(INTEL_LIB)/libblacs.a \ $(INTEL_LIB)/libacml.a\ $(INTEL_LIB)/libacml_mv.a \ $(INTEL_LIB)/libfftw3.a OBJECTS_ARCHITECTURE = machine_intel.o graphcon.o: graphcon.F $(FC) -c $(FCFLAGS2) $< |
Beim Ausführen von make bekomme ich dann folgende Meldung:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | tobias@brutus:~/cp2k-2_2-branch/cp2k/makefiles$ make -j 2 ARCH=Linux-x86-64-intel VERSION=popt tail: cannot open `/home/tobias/cp2k-2_2-branch/cp2k/makefiles/../src/CVS/Entries' for reading: No such file or directory make LDFLAGS= -C /home/tobias/cp2k-2_2-branch/cp2k/makefiles/../obj/Linux-x86-64-intel/tools -f /home/tobias/cp2k-2_2-branch/cp2k/makefiles/../makefiles/Makefile makedepf90 tail: cannot open `/home/tobias/cp2k-2_2-branch/cp2k/makefiles/../src/CVS/Entries' for reading: No such file or directory make[1]: Entering directory `/home/tobias/cp2k-2_2-branch/cp2k/obj/Linux-x86-64-intel/tools' make[1]: `makedepf90' is up to date. make[1]: Leaving directory `/home/tobias/cp2k-2_2-branch/cp2k/obj/Linux-x86-64-intel/tools' make -C /home/tobias/cp2k-2_2-branch/cp2k/makefiles/../src -f /home/tobias/cp2k-2_2-branch/cp2k/makefiles/../makefiles/Makefile all.dep tail: cannot open `/home/tobias/cp2k-2_2-branch/cp2k/makefiles/../src/CVS/Entries' for reading: No such file or directory make[1]: Entering directory `/home/tobias/cp2k-2_2-branch/cp2k/src' make[1]: `/home/tobias/cp2k-2_2-branch/cp2k/makefiles/../obj/Linux-x86-64-intel/popt/all.dep' is up to date. make[1]: Leaving directory `/home/tobias/cp2k-2_2-branch/cp2k/src' make -C /home/tobias/cp2k-2_2-branch/cp2k/makefiles/../src/lib -f /home/tobias/cp2k-2_2-branch/cp2k/makefiles/../makefiles/Makefile lib.dep tail: cannot open `/home/tobias/cp2k-2_2-branch/cp2k/makefiles/../src/CVS/Entries' for reading: No such file or directory make[1]: Entering directory `/home/tobias/cp2k-2_2-branch/cp2k/src/lib' make[1]: `/home/tobias/cp2k-2_2-branch/cp2k/makefiles/../obj/Linux-x86-64-intel/popt/lib.dep' is up to date. make[1]: Leaving directory `/home/tobias/cp2k-2_2-branch/cp2k/src/lib' make -C /home/tobias/cp2k-2_2-branch/cp2k/makefiles/../src/dbcsr_lib -f /home/tobias/cp2k-2_2-branch/cp2k/makefiles/../makefiles/Makefile dbcsr.dep tail: cannot open `/home/tobias/cp2k-2_2-branch/cp2k/makefiles/../src/CVS/Entries' for reading: No such file or directory make[1]: Entering directory `/home/tobias/cp2k-2_2-branch/cp2k/src/dbcsr_lib' make[1]: `/home/tobias/cp2k-2_2-branch/cp2k/makefiles/../obj/Linux-x86-64-intel/popt/dbcsr.dep' is up to date. make[1]: Leaving directory `/home/tobias/cp2k-2_2-branch/cp2k/src/dbcsr_lib' make -C /home/tobias/cp2k-2_2-branch/cp2k/makefiles/../src/fft_lib -f /home/tobias/cp2k-2_2-branch/cp2k/makefiles/../makefiles/Makefile fft.dep tail: cannot open `/home/tobias/cp2k-2_2-branch/cp2k/makefiles/../src/CVS/Entries' for reading: No such file or directory make[1]: Entering directory `/home/tobias/cp2k-2_2-branch/cp2k/src/fft_lib' make[1]: `/home/tobias/cp2k-2_2-branch/cp2k/makefiles/../obj/Linux-x86-64-intel/popt/fft.dep' is up to date. make[1]: Leaving directory `/home/tobias/cp2k-2_2-branch/cp2k/src/fft_lib' make -C /home/tobias/cp2k-2_2-branch/cp2k/makefiles/../src/arch_lib -f /home/tobias/cp2k-2_2-branch/cp2k/makefiles/../makefiles/Makefile ma.dep tail: cannot open `/home/tobias/cp2k-2_2-branch/cp2k/makefiles/../src/CVS/Entries' for reading: No such file or directory make[1]: Entering directory `/home/tobias/cp2k-2_2-branch/cp2k/src/arch_lib' make[1]: `/home/tobias/cp2k-2_2-branch/cp2k/makefiles/../obj/Linux-x86-64-intel/popt/ma.dep' is up to date. make[1]: Leaving directory `/home/tobias/cp2k-2_2-branch/cp2k/src/arch_lib' make -C /home/tobias/cp2k-2_2-branch/cp2k/makefiles/../obj/Linux-x86-64-intel/popt -f /home/tobias/cp2k-2_2-branch/cp2k/makefiles/../makefiles/Makefile _progr tail: cannot open `/home/tobias/cp2k-2_2-branch/cp2k/makefiles/../src/CVS/Entries' for reading: No such file or directory make[1]: Entering directory `/home/tobias/cp2k-2_2-branch/cp2k/obj/Linux-x86-64-intel/popt' mpif90 -c -D__INTEL -D__FFTSG -D__parallel -D__BLACS -D__SCALAPACK -D__FFTW3 -I/opt/compilers/intel/composer_xe_2011_sp1.6.293/mkl/include/fftw -O3 -msse2 -heap-arrays 64 -funroll-loops -fpp -free -D__COMPILE_ARCH="\"Linux-x86-64-intel\"" -D__COMPILE_DATE="\"Fri Mar 16 11:04:12 CET 2012\"" -D__COMPILE_HOST="\"brutus\"" -D__COMPILE_LASTCVS="\"\"" /home/tobias/cp2k-2_2-branch/cp2k/makefiles/../src/f77_blas_poison.F /bin/sh: mpif90: not found make[1]: *** [f77_blas_poison.o] Error 127 make[1]: Leaving directory `/home/tobias/cp2k-2_2-branch/cp2k/obj/Linux-x86-64-intel/popt' make: *** [build] Error 2 tobias@brutus:~/cp2k-2_2-branch/cp2k/makefiles$ |
Ich sehe. dass mehrfach auf ein fehlendes Verzeichnis hingewiesen wird. Auch scheint wohl mpif90 nicht gefunden zu werden.
Vllt hat jemand spontan eine Idee, wie ich das ganze doch noch hinkriegen könnte.
Wäre cool ☺