[Octopus-users] Fwd: parallel compilation
Francesco Pietra
francesco.pietra at accademialucchese.it
Mon Oct 19 15:12:37 WEST 2009
In addition to below ==== :
For serial compilation, "make check" exited OK. I wonder whether
gfortran-compiled ACML libraries were used from the statement in my
.bashrc:
# AMD ACML libraries
if [ "$LD_LIBRARY_PATH" ] ; then
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/acml4.2.0/gfortran64_mp_int64/lib"
else
export LD_LIBRARY_PATH="/opt/acml4.2.0/gfortran64_mp_int64/lib"
fi
or should I recompile OCTOPUS serial stating in configure:
--with-blas=/opt/acml4.2.0/gfortran64_mp_int64/lib
--with-lapack=/opt/acml4.2.0/gfortran64_mp_int64/lib
Incidentally, is some routine compiled only serial, that is, is serial
compilation a prerequisite to parallel compilation?
====================
I forgot that I have a Debian installation of LAM, system-wide. Are
there flags for octopus mpi? If not, I could reinstall Debian GROMACS,
changing from LAM to MPICH, which would be system-wide. Is MPICH
accepted by OCTOPUS instead of MPICH2?
thanks
francesco
---------- Forwarded message ----------
From: Francesco Pietra <francesco.pietra at accademialucchese.it>
Date: Sun, Oct 18, 2009 at 5:31 PM
Subject: Re: [Octopus-users] parallel compilation
To: Xavier Andrade <xavier at tddft.org>
Hi Xavier:
Thanks for your patience. Having no local technical support make
problems to me and, worse, to the community. I come to compile only
when I need a new program, when I had forgot the experience
accumulated during the previous installation.
Once the lacking "-" was fixed, serial "./configure" and "make"
completed without error messages. "make install" returned error:
...............
...............
Making install in liboct_parser
make[1]: Entering directory `/usr/local/octopus-3.1.0/liboct_parser'
make[2]: Entering directory `/usr/local/octopus-3.1.0/liboct_parser'
test -z "/opt/etsf/lib" || /bin/mkdir -p "/opt/etsf/lib"
/bin/mkdir: cannot create directory `/opt/etsf': Permission denied
make[2]: *** [install-libLIBRARIES] Error 1
make[2]: Leaving directory `/usr/local/octopus-3.1.0/liboct_parser'
make[1]: *** [install-am] Error 2
make[1]: Leaving directory `/usr/local/octopus-3.1.0/liboct_parser'
make: *** [install-recursive] Error 1
francesco at tya64:/usr/local/octopus-3.1.0$
I was working, as user (not as superuser, although I have root
privilege) in the directory specified in the last line above, made
chown and chgrp to me. I skipped both etsf and sparskit, following
your "The optional libraries (ETSF I/O and Sparskit) are not really
needed in most cases, so you probably can skip compiling them". Does
the above mean that etsf was comprised in the octopus metapackage and
"make install" should be issued as superuser?
When the serial installation is OK, parallel compilation should be
done above that? If so I'll first try if by chance the Intel-compiled
OpenMPI is accepted. I expect NO after your words. As I can't renounce
to the current installation of OpenMPI with Intel because it is in use
for Intel-compiled AMBER, the easiest, to avoid interferences, would
be probably to install MPICH(2). I remember vaguely to have met
failure with MPICH2 and to have had no answer from the MPICH2 web
site. Actually, I have an installation of MPICH2 with program DOT
(received as static compilation) but it is not seen system-wide.
thanks
francesco
On Sun, Oct 18, 2009 at 10:54 AM, Xavier Andrade <xavier at tddft.org> wrote:
> Hi Francesco,
>
> Octopus is reporting that it couldn't compile with gfortran, this is
> probably caused by invalid flags (you are missing a - in front of O3).
>
> You can't mix code compiled with ifort with code compiled with gfortran, so
> your mix of Intel Openmpi with gfortran will not work. It might be accepted
> at the configuration, but it will probably fail at compilation or run time.
>
> The bug in gfortran that prevents compilation in parallel was solved in
> release 4.3 (That it is the one that comes with lenny, so you shouldn't have
> problems).
>
> Do not edit the configure script for any reason, to compile with openmpi
> passing mpicc and mpif90 as compilers and passing --enable-mpi option to the
> configure should be enough.
>
> Cross compilation means to compile in one platform code for another one, you
> are certainly not doing that.
>
> Cheers,
>
> Xavier
>
> On Sun, 18 Oct 2009, Francesco Pietra wrote:
>
>> I have attempted to configure octopus on Debian Linux amd64 lenny with
>> gfortran to check if the Intel installation of OpenMPI will be
>> accepted. Just to check, I used a small machine with two dual-core
>> opterons. I took the export and flags for the compiler from the Debian
>> notice in the tarball. I met a problem with gfortran, as shown in the
>> last lines of the attached terminal output:
>>
>> francesco at tya64:/usr/local/octopus-3.1.0$ export FC=gfortran
>> francesco at tya64:/usr/local/octopus-3.1.0$ export FCFLAGS="O3
>> -funroll-loops -ffast-math -ffree-line-length-none
>> -fsecond-underscore"
>> francesco at tya64:/usr/local/octopus-3.1.0$ set | grep FC
>> FC=gfortran
>> FCFLAGS='O3 -funroll-loops -ffast-math -ffree-line-length-none
>> -fsecond-underscore'
>> _=FCFLAGS
>> francesco at tya64:/usr/local/octopus-3.1.0$ ./configure
>> checking for a BSD-compatible install... /usr/bin/install -c
>> checking whether build environment is sane... yes
>> checking for a thread-safe mkdir -p... /bin/mkdir -p
>> checking for gawk... no
>> checking for mawk... mawk
>> checking whether make sets $(MAKE)... yes
>> checking build system type... x86_64-unknown-linux-gnu
>> checking host system type... x86_64-unknown-linux-gnu
>> checking for a BSD-compatible install... /usr/bin/install -c
>> checking whether ln -s works... yes
>> checking whether make sets $(MAKE)... (cached) yes
>> checking for ranlib... ranlib
>> checking for bison... bison -y
>> checking for style of include used by make... GNU
>> checking for gcc... gcc
>> checking for C compiler default output file name... a.out
>> checking whether the C compiler works... yes
>> checking whether we are cross compiling... no
>> checking for suffix of executables...
>> checking for suffix of object files... o
>> checking whether we are using the GNU C compiler... yes
>> checking whether gcc accepts -g... yes
>> checking for gcc option to accept ISO C89... none needed
>> checking dependency style of gcc... gcc3
>> checking dependency style of gcc... gcc3
>> checking for gcc... (cached) gcc
>> checking whether we are using the GNU C compiler... (cached) yes
>> checking whether gcc accepts -g... (cached) yes
>> checking for gcc option to accept ISO C89... (cached) none needed
>> checking dependency style of gcc... (cached) gcc3
>> checking for inline... inline
>> checking for C/C++ restrict keyword... __restrict
>> checking for __builtin_prefetch... yes
>> checking for dirent.h that defines DIR... yes
>> checking for library containing opendir... none required
>> checking how to run the C preprocessor... gcc -E
>> checking for grep that handles long lines and -e... /bin/grep
>> checking for egrep... /bin/grep -E
>> checking for ANSI C header files... yes
>> checking for sys/types.h... yes
>> checking for sys/stat.h... yes
>> checking for stdlib.h... yes
>> checking for string.h... yes
>> checking for memory.h... yes
>> checking for strings.h... yes
>> checking for inttypes.h... yes
>> checking for stdint.h... yes
>> checking for unistd.h... yes
>> checking fcntl.h usability... yes
>> checking fcntl.h presence... yes
>> checking for fcntl.h... yes
>> checking float.h usability... yes
>> checking float.h presence... yes
>> checking for float.h... yes
>> checking locale.h usability... yes
>> checking locale.h presence... yes
>> checking for locale.h... yes
>> checking malloc.h usability... yes
>> checking malloc.h presence... yes
>> checking for malloc.h... yes
>> checking stddef.h usability... yes
>> checking stddef.h presence... yes
>> checking for stddef.h... yes
>> checking for stdlib.h... (cached) yes
>> checking for string.h... (cached) yes
>> checking for strings.h... (cached) yes
>> checking sys/ioctl.h usability... yes
>> checking sys/ioctl.h presence... yes
>> checking for sys/ioctl.h... yes
>> checking sys/time.h usability... yes
>> checking sys/time.h presence... yes
>> checking for sys/time.h... yes
>> checking termios.h usability... yes
>> checking termios.h presence... yes
>> checking for termios.h... yes
>> checking for unistd.h... (cached) yes
>> checking signal.h usability... yes
>> checking signal.h presence... yes
>> checking for signal.h... yes
>> checking errno.h usability... yes
>> checking errno.h presence... yes
>> checking for errno.h... yes
>> checking xmmintrin.h usability... yes
>> checking xmmintrin.h presence... yes
>> checking for xmmintrin.h... yes
>> checking emmintrin.h usability... yes
>> checking emmintrin.h presence... yes
>> checking for emmintrin.h... yes
>> checking for working alloca.h... yes
>> checking for alloca... yes
>> checking for an ANSI C-conforming const... yes
>> checking for pid_t... yes
>> checking for size_t... yes
>> checking whether time.h and sys/time.h may both be included... yes
>> checking size of void*... 8
>> checking for uint32_t... yes
>> checking for uint64_t... yes
>> checking size of unsigned int... 4
>> checking size of unsigned long... 8
>> checking size of unsigned long long... 8
>> checking whether getpgrp requires zero arguments... yes
>> checking whether gcc needs -traditional... no
>> checking whether lstat dereferences a symlink specified with a
>> trailing slash... yes
>> checking whether stat accepts an empty string... no
>> checking for vprintf... yes
>> checking for _doprnt... no
>> checking for getcwd... yes
>> checking for gettimeofday... yes
>> checking for mkdir... yes
>> checking for pow... no
>> checking for sqrt... no
>> checking for strcasecmp... yes
>> checking for strdup... yes
>> checking for strerror... yes
>> checking for strncasecmp... yes
>> checking for strndup... yes
>> checking for uname... yes
>> checking for tcgetpgrp... yes
>> checking for scandir... yes
>> checking for alphasort... yes
>> checking for sigaction... yes
>> checking for malloc... yes
>> checking for realloc... yes
>> checking for opendir... yes
>> checking for readdir... yes
>> checking for closedir... yes
>> checking for strchr... yes
>> checking for strtod... yes
>> checking for assert... no
>> checking for posix_memalign... yes
>> checking for perror... yes
>> checking for strcasestr... yes
>> checking for sbrk... yes
>> checking for numa_available in -lnuma... yes
>> checking if malloc aligns memory to 16 byte boundaries... yes
>> checking whether the compiler accepts the __m128d type... yes
>> checking whether newuoa is enabled... no
>> checking for perl... /usr/bin/perl
>> checking whether we are using the GNU Fortran compiler... no
>> checking whether gfortran accepts -g... yes
>> checking for Fortran flag to compile .f90 files... unknown
>> configure: error: Fortran could not compile .f90 files
>> francesco at tya64:/usr/local/octopus-3.1.0$
>>
>> If the configure error can be removed, two questions:
>>
>> ---I plan to add paths to mpi etc by editing the configure.
>>
>> ---I notice that the configure above mentions cross compilation. Could
>> gfortran be replaced by ifort?
>>
>> ---I did not forget that the manual says that gfortran does not work for
>> mpi.
>>
>> Thanks a lot for help
>>
>> francesco
>>
>> On Sat, Oct 17, 2009 at 11:50 PM, Xavier Andrade <xavier at tddft.org> wrote:
>>>
>>> Hi,
>>>
>>> On Sat, 17 Oct 2009, Alberto Castro wrote:
>>>
>>>> I think you are too pessimistic. Quite a few "common users" have
>>>> compiled it and used it for parallel use. Just give it a try!
>>>>
>>>
>>> I just want to add that you have a guide to compile octopus and all the
>>> required libraries in the manual [1] that might be helpful.
>>>
>>> [1]
>>>
>>> http://www.tddft.org/programs/octopus/wiki/index.php/Manual:Building_from_scratch
>>>
>>> The optional libraries (ETSF I/O and Sparskit) are not really needed in
>>> most
>>> cases, so you probably can skip compiling them.
>>>
>>> Cheers,
>>>
>>> Xavier
>>>
>>>
>>
>
>
More information about the Octopus-users
mailing list