problems to compile and run the parallel version of cp2k with g95 compiler and mpich
hawk2... at gmail.com
Thu Jul 17 23:01:55 CEST 2008
Thank you for pointing the errors.
Yes, the linking error is due to the missing of the flag -lpthread.
With this change I got the executable cp2k.popt with libgoto.a.
However, I got the same error message as before when I tried to run
the test case with the command '/home/mpich.g95/bin/mpirun -np 2 ./
cp2k.popt ./H2O.inp > log &':
CP2K: An error occurred opening the file </home/cp2k2.0/cp2k/tests/
> > MD> with the unit number 1 (IOSTAT = 21)
Finally I figured out a way to run the test case normally. For some
reason we have to specify '-i' option to indicate the input file. The
following command allowed me to run the parallel version of cp2k
/home/mpich.g95/bin/mpirun -np 2 ./cp2k.popt -i ./H2O.inp > log &
Thanks for your help.
On Jul 17, 2:04 pm, Axel <akoh... at gmail.com> wrote:
> On Jul 16, 9:43 pm, hawk2012 <hawk2... at gmail.com> wrote:
> > Dear All:
> > I just successfully compiled and tested the serial version of cp2k
> > using the recommended compiler g95. Now, I am moving on to the next
> > step to compile the parallel version of cp2k with g95 and mpich.
> > Following the INSTALL instructutions, I dowloaded mpich-1.2.6.tar.gz
> > and compiled it by setting FC=g95 and F90=g95 to generate the g95
> > version of mpich under /home/mpich.g95. Then I downloaded
> > scalapack-1.8.0.tgz. Its README file says the BLAS, BLACS and LAPACK
> > libraries should be available before compiling scalapack. Since BLAS
> > and LAPACK have been installed during installation of serial version
> > of cp2k, only BLACS needs to be installed. So, I downloaded
> > mpiblacs.tgz and mpiblacs-patch03.tgz and successfully compiled
> > blacsCinit_MPI-LINUX-0.a, blacs_MPI-LINUX-0.a,
> > blacsF77init_MPI-LINUX-0.a by setting F77=g95 in file Bmake.inc.
> > However, I noticed that file
> > SLmake.inc.example used to compile scalapack also specified
> > libatlas.a. I guess ATLAS library should also be installed before
> > installing scalapack. Therefore, I downloaded atlas3.6.0.tgz and
> > compiled library libatlas.a. After specifying the locations of all
> > necessary libraries and mpi compilers I successfully compiled the
> > library libscalapack.a.
> > Finally I modified the Linux-x86-64-g95.popt as below:
> > CC = cc
> > CPP =
> > FC = /home/mpich.g95/bin/mpif90
> > LD = /home/mpich.g95/bin/mpif90
> > AR = ar -r
> > DFLAGS = -D__G95 -D__FFTSG -D__parallel -D__BLACS -D__SCALAPACK -
> > D__FFTW3 -D__LIBINT
> > CPPFLAGS =
> > FCFLAGS = $(DFLAGS) -ffree-form -O2 -ffast-math -march=opteron -cpp -
> > g
> > LDFLAGS = $(FCFLAGS)
> > LIBS = /home/scalapack/scalapack-1.8.0/libscalapack.a \
> > /home/BLACS/LIB/blacsF77init_MPI-LINUX-0.a \
> > /home/BLACS/LIB/blacs_MPI-LINUX-0.a \
> > /home/BLACS/LIB/blacsCinit_MPI-LINUX-0.a \
> > /home/lapack-3.1.1/lapack_LINUX.a \
> > /home/GotoBLAS/libgoto.a \
> > /home/fftw/lib/libfftw3.a \
> > /home/libint/lib/libderiv.a \
> > /home/libint/lib/libint.a \
> > /usr/lib64/libstdc++.so.6
> > OBJECTS_ARCHITECTURE = machine_g95.o
> > After entering cp2k/makefiles directory I typed 'make ARCH=Linux-
> > x86-64-g95 VERSION=popt' to compile the parallel version of cp2k. The
> > compiling process went well except a few warnings. However an error
> > was reported during the final linking stage:
> > ar: creating /home/cp2k2.0/cp2k/makefiles/../lib/Linux-x86-64-g95/popt/
> > libcp2k_lib.a
> > /home/mpich.g95/bin/mpif90 -D__G95 -D__FFTSG -D__parallel -D__BLACS -
> > D__SCALAPACK -D__FFTW3 -D__LIBINT -ffree-form -O2 -ffast-math -
> > march=opteron -cpp -g -D__COMPILE_ARCH="\"Linux-x86-64-g95\"" -
> > D__COMPILE_DATE="\"Wed Jul 16 16:48:23 CDT 2008\"" -
> > D__COMPILE_HOST="\"dmol8\"" -D__COMPILE_LASTCVS="\"/qs_scf_types.F/
> > 1.32/Mon Jul 7 22:07:02 2008//\"" -o /home/cp2k2.0/cp2k/makefiles/../
> > exe/Linux-x86-64-g95/cp2k.popt cp2k.o /home/cp2k2.0/cp2k/makefiles/../
> > lib/Linux-x86-64-g95/popt/libcp2k_lib.a /home/cp2k2.0/cp2k/
> > makefiles/../lib/Linux-x86-64-g95/popt/libcp2k_fft_lib.a /home/cp2k2.0/
> > cp2k/makefiles/../lib/Linux-x86-64-g95/popt/libcp2k_base_lib.a /home/
> > scalapack/scalapack-1.8.0/libscalapack.a /home/BLACS/LIB/
> > blacsF77init_MPI-LINUX-0.a /home/BLACS/LIB/blacs_MPI-LINUX-0.a /home/
> > lapack-3.1.1/lapack_LINUX.a /home/GotoBLAS/libgoto.a /home/fftw/lib/
> > libfftw3.a /home/libint/lib/libderiv.a /home/libint/lib/libint.a /usr/
> > lib64/libstdc++.so.6
> > /home/GotoBLAS/libgoto.a(blas_server.o)(.text+0x5b5): In function
> > `blas_thread_init':
> > : undefined reference to `pthread_create'
> > /home/GotoBLAS/libgoto.a(blas_server.o)(.text+0xa7d): In function
> > `blas_thread_shutdown_':
> > : undefined reference to `pthread_join'
> > make: *** [/home/cp2k2.0/cp2k/makefiles/../exe/Linux-x86-64-g95/
> > cp2k.popt] Error 1
> > make: Leaving directory `/home/cp2k2.0/cp2k/obj/Linux-x86-64-g95/
> > popt'
> > make: *** [build] Error 2
> > It seemed that libgoto.a has some problem this time although I used it
> > to compile cp2k.sopt successfully this morning. Then I replaced the
> no. the problem is not GOTO, but (again) PEBCAC.
> compare with your serial arch file and read the GOTO docs.
> from the missing functions it is obvious that you need to
> add -lpthread to your linker command.
> > libgoto.a library with the standard BLAS library /home/BLAS/
> > blas_LINUX.a obtained by compiling the package blas.tgz. After this
> _bad_ idea. standard blas incurs a large performance hit on most
> current machines compared to tuned versions like GOTO or ATLAS
> or vendor libs like MKL, ACML, ESSL and so on.
> > change the linking process succeeded and the executable cp2k.popt was
> > generated. However, problem appeared when I tried to test cp2k.popt
> > with the same input file H2O.inp I used to test cp2k.sopt. After
> > typing 'home/mpich.g95/bin/mpirun -np 2 ./cp2k.popt ./H2O.inp > log &'
> > I got the following error message in the log file:
> > CP2K: An error occurred opening the file </home/cp2k2.0/cp2k/tests/
> > MD> with the unit number 1 (IOSTAT = 21)
> > However, the test case can be run normally if I issued the command './
> > cp2k.popt ./H2O.inp > log &'. It seemed that cp2k.popt is still an
> > serial version of cp2k although I compiled it with parallel settings.
> i cannot comment on your mpich setup. and i wouldn't touch
> mpich with a ten foot pole unless i get forced to do so.
> those kind of errors are usually related to the specific
> installation and without access to the individual machine
> and a detailed description of what you did, there is little
> that one can do from far away besides "you must have made
> something wrong".
> > Any idea?
> many mpi libraries (e.g. OpenMPI) allow to run parallel executables
> without mpirun and that would be equivalent to 'mpirun -np 1'.
> whether you have compiled a parallel executable can be deduced from
> running the 'nm' tool on the compiled cp2k objects and look for
> undefined references to mpi library calls.
More information about the CP2K-user