Performance issues - How to optimize ABINIT 6.0.2

option, parallelism,...

Moderators: fgoudreault, mcote

Forum rules
Please have a look at ~abinit/doc/config/build-config.ac in the source package for detailed and up-to-date information about the configuration of Abinit 8 builds.
For a video explanation on how to build Abinit 7.x for Linux, please go to: http://www.youtube.com/watch?v=DppLQ-KQA68.
IMPORTANT: when an answer solves your problem, please check the little green V-like button on its upper-right corner to accept it.
Locked
Martin
Posts: 16
Joined: Tue Jan 19, 2010 2:31 pm
Location: Zurich, Switzerland
Contact:

Performance issues - How to optimize ABINIT 6.0.2

Post by Martin » Mon Apr 05, 2010 8:00 pm

Dear ABINIT users and developers,

I would like to optimize the parallel built of ABINIT on the following platforms:
Linux/ia64: SGI Altix - Intel Intanium
Linux/x86_64: AMD Opteron

I attached the current built information (ia64 case). Which compiler would you recommend to use? What about LAPACK libraries? Any additional optimization tips?

Thanks!

Best regards,

Martin Haeufel
TU Munich, WSI (T33)
http://www.wsi.tum.de

=== Build Information ===
Version : 6.0.2
Build target : ia64_linux_intel10.1

=== Compiler Suite ===
C compiler : gnu
CFLAGS : -m64 -g -O3 -fforce-addr
C++ compiler : gnu10.1
CXXFLAGS : -O3
Fortran compiler : intel10.1
FCFLAGS : -O3
FC_LDFLAGS : -static-libgcc -static-intel

=== Optimizations ===
Debug level : yes
Optimization level : standard
Architecture : intel_itanium1

=== MPI ===
Parallel build : yes
Parallel I/O : no

=== Linear algebra ===
Library type : abinit
Use ScaLAPACK : no

=== Plug-ins ===
BigDFT : no
ETSF I/O : no
LibXC : yes
FoX : no
NetCDF : no
Wannier90 : no

=== Experimental features ===
Bindings : no
Error handlers : no
Exports : no
GW double-precision : no
Macroave build : yes

User avatar
pouillon
Posts: 651
Joined: Wed Aug 19, 2009 10:08 am
Location: Spain
Contact:

Re: Performance issues - How to optimize ABINIT 6.0.2

Post by pouillon » Wed Apr 07, 2010 4:40 pm

On Linux/IA64, you should use the Intel Fortran compiler for best performance. If you're fearless, you may even use the --enable-optim=aggressive option of configure.

On Linux/x86_64, gfortran and ifort give similar performance, gfortran being only a few percents below ifort.

In any case, running the test suite before going to production calculations is highly recommended if you use aggressive optimizations.
Yann Pouillon
Simune Atomistics
Donostia-San Sebastián, Spain

Martin
Posts: 16
Joined: Tue Jan 19, 2010 2:31 pm
Location: Zurich, Switzerland
Contact:

Re: Performance issues - How to optimize ABINIT 6.0.2

Post by Martin » Fri Apr 16, 2010 2:08 pm

Dear ABINIT users and developers,

I am wondering wether it is possible to improve performance using external math libraries. A first trial lead to a 3 percent slower version. Which math libraries are "recommended"? What about FFTW?

I attached the current configuration (platform Linux/SGI Altix - Intel Itanium).

Thanks,

Best regards,

Martin Haeufel,
TU Munich, WSI (T33)
http://www.wsi.tum.de

Altix (-O3):
../configure --prefix=/lrz/sys/applications/abinit/6.0.3/altix
--bindir=/lrz/sys/applications/abinit/6.0.3/altix/bin
--enable-64bit-flags --disable-bigdft --disable-etsf-io --disable-netcdf
--disable-wannier90 --with-cc-optflags --with-fc-ld-optflags
--enable-scalapack --with-scalapack-libs="-L/lrz/sys/scalapack-1.7
-lscalapack -L/lrz/sys/blacs/lib -lblacsF77init_altix_intel81
-lblacs_altix_intel81 -lblacsF77init_altix_intel81"
--enable-optim=aggressive --disable-debug CC=mpicc FC=mpif90 CXX=mpiCC

=== Build Information ===
Version : 6.0.3
Build target : ia64_linux_intel10.1

=== Compiler Suite ===
C compiler : gnu
CFLAGS : -m64 -O3 -fforce-addr
C++ compiler : gnu10.1
CXXFLAGS : -O3
Fortran compiler : intel10.1
FCFLAGS : -O3
FC_LDFLAGS : -static-libgcc -static-intel

=== Optimizations ===
Debug level : no
Optimization level : aggressive
Architecture : intel_itanium1

=== MPI ===
Parallel build : yes
Parallel I/O : no

=== Linear algebra ===
Library type : abinit
Use ScaLAPACK : yes

=== Plug-ins ===
BigDFT : no
ETSF I/O : no
LibXC : yes
FoX : no
NetCDF : no
Wannier90 : no

=== Experimental features ===
Bindings : no
Error handlers : no
Exports : no
GW double-precision : no
Macroave build : yes

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CPP options activated during the build:

CC_GNU CXX_GNU FC_INTEL

HAVE_FC_EXIT HAVE_FC_FLUSH HAVE_FC_GET_ENVIRONMEN...

HAVE_FC_LONG_LINES HAVE_FC_NULL HAVE_LIBXC

HAVE_MPI HAVE_MPI2 HAVE_SCALAPACK

HAVE_STDIO_H USE_MACROAVE
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

User avatar
pouillon
Posts: 651
Joined: Wed Aug 19, 2009 10:08 am
Location: Spain
Contact:

Re: Performance issues - How to optimize ABINIT 6.0.2

Post by pouillon » Mon Apr 19, 2010 6:35 pm

Martin wrote:I am wondering wether it is possible to improve performance using external math libraries. A first trial lead to a 3 percent slower version. Which math libraries are "recommended"? What about FFTW?


If you are using ifort, the best is probably to use MKL. You may have to put some extra Fortran flags using the FCFLAGS_EXTRA environment variable to further optimize the code. The procedure is in any case highly architecture-dependent and the final result cannot be predicted in advance. If you find interesting parameters, please let us know in this thread.

FFTW support is incomplete and very experimental in Abinit 6.0. I suggest you to wait for abinit 6.2 if you want to use it.
Yann Pouillon
Simune Atomistics
Donostia-San Sebastián, Spain

mpan
Posts: 1
Joined: Fri Apr 23, 2010 10:27 am

Re: Performance issues - How to optimize ABINIT 6.0.2

Post by mpan » Fri Apr 23, 2010 10:56 am

Hi Martin,

I'm Miguel Pan an application technician in a supercomputing center in Spain [http://www.cesga.es]. I'm trying to install ABINIT 6.0.3 in a itanium machine [http://www.cesga.es/content/view/917/115/lang,en/]. I use this script to configure the application:

#!/bin/bash

module load icc/11.1.056 ifort/11.1.056 mkl/10.2.2 impi/3.2.1.009
module list

export CC=mpiicc
export CFLAGS="-O3"
export CXX=mpiicpc
export CXXFLAGS="-O3"
export FC=mpiifort
export FCFLAGS="-O3"

./configure -enable-64bit-flags --disable-bigdft --disable-etsf-io --disable-netcdf --disable-wannier90 --with-linalg-libs="-L$MKLPATH -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lguide -lpthread -lm" --enable-mpi=yes --enable-scalapack --with-scalapack-libs="-L$MKLPATH -lmkl_scalapack_lp64 -lmkl_solver_lp64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lmkl_blacs_intelmpi_lp64 -lpthread" --disable-debug --prefix=/sfs/home/cesga/mpan/abinit-6.0.3

The compilation process works properly, the problem are the tests. I run the simplest sequential tests of the suite (make tests_min inside tests folder) and a lot of segmentation faults (core dumped) raise. I'm trying to recompile with a less aggressive flag.

I hope this information will be useful for you. I will post any kind of progress with the tests.

--
Atentamente,

Miguel Pan Fidalgo (Applications Technician)
mail: mpan at cesga.es
web: http://www.cesga.es
Avda. de Vigo s/n 15705, Santiago de Compostela
Telf.: +34 981 569810 - Fax: 981 594616
-------------------------------------------------------------------------

Locked