Commit b3d47d1e authored by Andreas Marek's avatar Andreas Marek

Cleanup of configure.ac ELPA_2013.11; Create ELPA_2014.06

The configure.ac of ELPA_2013.11 is cleaned up a bit
Also, ELPA_2013.11 is copied to ELPA_2014.06 in order to have
the base for the next ELPA release
parent cbe8088f
......@@ -6311,10 +6311,6 @@ else
can_link_with_blas=no
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can link a program with a blas lib" >&5
$as_echo_n "checking whether we can link a program with a blas lib... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${can_link_with_blas}" >&5
$as_echo "${can_link_with_blas}" >&6; }
if test "x${can_link_with_blas}" = "xno" ; then
as_fn_error $? "could not link with blas: specify path" "$LINENO" 5
......@@ -6364,24 +6360,63 @@ else
can_link_with_lapack=no
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can link a program with a lapack lib" >&5
$as_echo_n "checking whether we can link a program with a lapack lib... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${can_link_with_lapack}" >&5
$as_echo "${can_link_with_lapack}" >&6; }
if test "x${can_link_with_lapack}" = "xno" ; then
as_fn_error $? "could not link with lapack: specify path" "$LINENO" 5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing blacs_gridinit" >&5
$as_echo_n "checking for library containing blacs_gridinit... " >&6; }
if ${ac_cv_search_blacs_gridinit+:} false; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing bi_f77_init" >&5
$as_echo_n "checking for library containing bi_f77_init... " >&6; }
if ${ac_cv_search_bi_f77_init+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_func_search_save_LIBS=$LIBS
cat > conftest.$ac_ext <<_ACEOF
program main
call blacs_gridinit
call bi_f77_init
end
_ACEOF
for ac_lib in '' mpiblacsF77init; do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib -lmpiblacs $ac_func_search_save_LIBS"
fi
if ac_fn_fc_try_link "$LINENO"; then :
ac_cv_search_bi_f77_init=$ac_res
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext
if ${ac_cv_search_bi_f77_init+:} false; then :
break
fi
done
if ${ac_cv_search_bi_f77_init+:} false; then :
else
ac_cv_search_bi_f77_init=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_bi_f77_init" >&5
$as_echo "$ac_cv_search_bi_f77_init" >&6; }
ac_res=$ac_cv_search_bi_f77_init
if test "$ac_res" != no; then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing blacs_pinfo" >&5
$as_echo_n "checking for library containing blacs_pinfo... " >&6; }
if ${ac_cv_search_blacs_pinfo+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_func_search_save_LIBS=$LIBS
cat > conftest.$ac_ext <<_ACEOF
program main
call blacs_pinfo
end
_ACEOF
for ac_lib in '' mpiblacs; do
......@@ -6392,25 +6427,25 @@ for ac_lib in '' mpiblacs; do
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
if ac_fn_fc_try_link "$LINENO"; then :
ac_cv_search_blacs_gridinit=$ac_res
ac_cv_search_blacs_pinfo=$ac_res
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext
if ${ac_cv_search_blacs_gridinit+:} false; then :
if ${ac_cv_search_blacs_pinfo+:} false; then :
break
fi
done
if ${ac_cv_search_blacs_gridinit+:} false; then :
if ${ac_cv_search_blacs_pinfo+:} false; then :
else
ac_cv_search_blacs_gridinit=no
ac_cv_search_blacs_pinfo=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_blacs_gridinit" >&5
$as_echo "$ac_cv_search_blacs_gridinit" >&6; }
ac_res=$ac_cv_search_blacs_gridinit
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_blacs_pinfo" >&5
$as_echo "$ac_cv_search_blacs_pinfo" >&6; }
ac_res=$ac_cv_search_blacs_pinfo
if test "$ac_res" != no; then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
can_link_with_blacs=yes
......@@ -6418,11 +6453,6 @@ else
can_link_with_blacs=no
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can link a program with a blacs lib" >&5
$as_echo_n "checking whether we can link a program with a blacs lib... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${can_link_with_blacs}" >&5
$as_echo "${can_link_with_blacs}" >&6; }
if test "x${can_link_with_blacs}" = "xno" ; then
as_fn_error $? "could not link with blacs: specify path" "$LINENO" 5
fi
......@@ -6438,7 +6468,7 @@ cat > conftest.$ac_ext <<_ACEOF
call pdtran
end
_ACEOF
for ac_lib in '' mpiscalapack; do
for ac_lib in '' mpiscalapack scalapack; do
if test -z "$ac_lib"; then
ac_res="none required"
else
......@@ -6472,11 +6502,6 @@ else
can_link_with_scalapack=no
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can link a program with a scalapack lib" >&5
$as_echo_n "checking whether we can link a program with a scalapack lib... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${can_link_with_scalapack}" >&5
$as_echo "${can_link_with_scalapack}" >&6; }
if test "x${can_link_with_scalapack}" = "xno" ; then
as_fn_error $? "could not link with scalapack: specify path" "$LINENO" 5
fi
......@@ -20174,6 +20199,7 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu
#AC_SUBST(OPT_FCFLAGS)
rm -rf modules/
mkdir modules
#gl_VISIBILITY
......
......@@ -136,8 +136,8 @@ if test "x${check_avx_compilation}" = xyes; then
AC_MSG_CHECKING([whether we can compile a gcc intrinsic AVX program])
dnl first pass: try with specified CFLAGS and CXXFLAGS
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
#include <x86intrin.h>
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
#include <x86intrin.h>
void main(){
double* q;
__m256d a1_1 = _mm256_load_pd(q);
......@@ -150,8 +150,8 @@ if test "x${check_avx_compilation}" = xyes; then
if test "x${can_compile_avx_prog}" = xno; then
CFLAGS="$CFLAGS -mavx"
CXXFLAGS="$CXXFLAGS -mavx"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
#include <x86intrin.h>
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
#include <x86intrin.h>
void main(){
double* q;
__m256d a1_1 = _mm256_load_pd(q);
......@@ -186,7 +186,7 @@ AC_ARG_WITH([avx-optimization],
AC_LANG(Fortran)
AC_LANG([Fortran])
m4_include([m4/ax_prog_fc_mpi.m4])
dnl check whether an mpi compiler is available;
dnl if not abort since it is mandatory
......@@ -239,9 +239,9 @@ dnl check whether one can link with specified MKL (desired method)
AC_MSG_CHECKING([whether we can compile a Fortran program using MKL])
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
program test_mkl
use mkl_service
use mkl_service
character*198 :: string
call mkl_get_version_string(string)
write(*,'(a)') string
......@@ -254,9 +254,9 @@ AC_MSG_RESULT([${can_compile_with_mkl}])
if test x"$can_compile_with_mkl" = x"yes" ; then
AC_MSG_CHECKING([whether we can link a Fortran program with MKL])
AC_LINK_IFELSE([AC_LANG_SOURCE([
AC_LINK_IFELSE([AC_LANG_SOURCE([
program test_mkl
use mkl_service
use mkl_service
character*198 :: string
call mkl_get_version_string(string)
write(*,'(a)') string
......@@ -275,43 +275,34 @@ else
dnl first check blas
AC_SEARCH_LIBS([dgemm],[blas],[can_link_with_blas=yes],[can_link_with_blas=no])
AC_MSG_CHECKING([whether we can link a program with a blas lib])
AC_MSG_RESULT([${can_link_with_blas}])
if test "x${can_link_with_blas}" = "xno" ; then
AC_MSG_ERROR([could not link with blas: specify path])
fi
AC_MSG_ERROR([could not link with blas: specify path])
fi
dnl now lapack
AC_SEARCH_LIBS([dlarrv],[lapack],[can_link_with_lapack=yes],[can_link_with_lapack=no])
AC_MSG_CHECKING([whether we can link a program with a lapack lib])
AC_MSG_RESULT([${can_link_with_lapack}])
if test "x${can_link_with_lapack}" = "xno" ; then
AC_MSG_ERROR([could not link with lapack: specify path])
AC_MSG_ERROR([could not link with lapack: specify path])
fi
dnl now blacs
AC_SEARCH_LIBS([blacs_gridinit],[mpiblacs],[can_link_with_blacs=yes],[can_link_with_blacs=no])
AC_MSG_CHECKING([whether we can link a program with a blacs lib])
AC_MSG_RESULT([${can_link_with_blacs}])
dnl now blacs
AC_SEARCH_LIBS([bi_f77_init],[mpiblacsF77init],[],[],[-lmpiblacs])
AC_SEARCH_LIBS([blacs_pinfo],[mpiblacs],[can_link_with_blacs=yes],[can_link_with_blacs=no])
if test "x${can_link_with_blacs}" = "xno" ; then
AC_MSG_ERROR([could not link with blacs: specify path])
AC_MSG_ERROR([could not link with blacs: specify path])
fi
dnl now scalapack
AC_SEARCH_LIBS([pdtran],[mpiscalapack],[can_link_with_scalapack=yes],[can_link_with_scalapack=no])
AC_MSG_CHECKING([whether we can link a program with a scalapack lib])
AC_MSG_RESULT([${can_link_with_scalapack}])
dnl now scalapack
AC_SEARCH_LIBS([pdtran],[mpiscalapack scalapack],[can_link_with_scalapack=yes],[can_link_with_scalapack=no])
if test "x${can_link_with_scalapack}" = "xno" ; then
AC_MSG_ERROR([could not link with scalapack: specify path])
AC_MSG_ERROR([could not link with scalapack: specify path])
fi
dnl check whether we can link alltogehter
AC_MSG_CHECKING([whether we can link a Fortran program with all blacs/scalapack])
AC_LINK_IFELSE([AC_LANG_SOURCE([
AC_LINK_IFELSE([AC_LANG_SOURCE([
program dgemm_test
integer , parameter:: n_cols=3,l_cols=3
......@@ -360,6 +351,7 @@ AC_SUBST(BLACS_FCFLAGS)
#AC_SUBST(OPT_FCFLAGS)
rm -rf modules/
mkdir modules
#gl_VISIBILITY
......
../fdep
\ No newline at end of file
../fdep/
\ No newline at end of file
Licensing and copyright terms for the ELPA library:
ELPA Consortium (2011)
****
Copyright of the original code rests with the authors inside the ELPA
consortium. The copyright of any additional modifications shall rest
with their original authors, but shall adhere to the licensing terms
set forth below.
****
The code is distributed under the terms of the GNU Lesser General Public
License version 3 (LGPL). The full text can be found in the file "lgpl.txt"
in this repository. "lgpl.txt" makes reference to the GPL v3, which can also
be found in this repository ("gpl.txt").
****
ELPA reflects a substantial effort on the part of the original
ELPA consortium, and we ask you to respect the spirit of the
license that we chose: i.e., please contribute any changes you
may have back to the original ELPA library distribution, and keep
any derivatives of ELPA under the same license that we chose for
the original distribution, the GNU Lesser General Public License.
When in doubt, talk to us. What we would like to ensure is that the ELPA
code can be used as needed, while providing a strong incentive for
others to contribute their modifications back to the original development.
****
This diff is collapsed.
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.
How to install ELPA:
----------------------
ELPA is shipped with a typical "configure" and "make" procedure. It is
recommended to use this way to install ELPA, see (A). If you do not want to
install ELPA as library, but to include it in your source code, please refer
to point (B). An example makefile "Makefile.example" can be found in ./test,
to give some hints how this is done. Please distibute then all files of ELPA
with your code. Please note, that usage of ELPA as described in Section (B)
requires advanced knowledge about compilers, preprocessor flags, and optimizations.
(A): Installing ELPA as library with configure
===================================================
The configure installation is best done in four steps
1) run configure:
Check the available options with "configure --help".
ELPA is shipped with several different versions of the
elpa2-kernel, each optimized and tuned for a different
architecture. Since, at the moment we do not want to
define a default, which works but maybe with less then
the optimal performance, it is MANDATORY that you choose
(real and complex kernels) for your system, via the
"--with-..." option. For hints which kernels might be best
for you, please refer to the file
"./src/elpa2_kernels/README_elpa2_kernels.txt".
If no kernel is specified at the configure step an exception
prompting this error is thrown.
Please point to your blacs/scalapack installation and the
linkline with the variables "BLACS_LDFLAGS" and "BLACS_FCFLAGS".
"BLACS_LDFLAGS" should then contain the correct linkline for your
blacs/scalapack installation and "BLACS_FCFLAGS" the include path
and any other flags you need at compile time.
It is recommended that you use the "rpath functionality" in the linkline,
otherwise it will be necessary to update the LD_LIBRARY_PATH environment
variable.
You can either specify your own builds of lapack/blacs/scalapack
or use specialized Vendor packages, e.g. if available you can use
Intel's MKL. If you do not set the variables "BLACS_LDFLAGS" and
"BLACS_FCFLAGS" ELPA will not be build!
Please set the optimisation that you would like with the
variable "FCFLAGS", "CFLAGS", and "CXXFLAGS", e.g. FCFLAGS="-O3 -xAVX",
please see "./src/elpa2_kernels/README_elpa2_kernels.txt".
Set the "prefix" - flag, if you wish another installation location than
the default "/usr/local/".
If you want to use the hybrid MPI/OpenMP version of ELPA please specify
"--enable-openmp" or "--with-openmp". Note that the Bluegene P/Q kernels
are not yet tested in the combination with OpenMP and thus at the moment
this combination is switched of. Please see ./src/elpa2_kernels/README_elpa2_kernels.txt for more details and a hint how to use it anyway.
Note, that at the moment we do not officially support "cross compilation"
allthough it should work.
2) run "make"
3) run "make check"
a simple test of ELPA is done. At the moment the usage of "mpiexec"
is required. If this is not possible at your system, you can run the
binaries "test_real", "test_real2", "test_complex", and "test_complex2"
yourself. At the moment the tests check whether the residual and the
orthogonality of the found eigenvectors are lower than a threshold of
5e-12. If this test fails, or if you believe the threshold should be
even lower, please talk to us.
4) run "make install"
Note that a pckconfig file for ELPA is produced. You should then be
able to link the ELPA library to your own applications.
B) Installing ELPA without the autotools procedure
===================================================
You can find an example makefile "Makefile.example" in "./test",
to see how you can use ELPA directly in your code, and not as library.
If you do so, please distibute then all files of ELPA with your code.
However, this is not the recommended way for several reasons:
- from the last release, ELPA has grown substantially in performance
optimizations but also complexity. The simple "just use elpa source
files in your code" approach is becoming more and more difficult.
- you still have to choose an elpa2-kernel (see at (A)). Getting them
build from hand might be tedious.
- the file elpa2.F90 uses preprocessor defines for the different kernels.
you will have to do this by hand, if you do not use the autotools
infrastructure.
- also the test programs now use preprocessor defines, discriminating
between version with and without OpenMP
- it is entirely possible that due to ever growing complexity of ELPA
in future releases the build procedure without autotools will not be
supported anymore
Thus, if you really want to use ELPA this way and not with the autotools
please ensure the following
- make yourself familiar with the preprocessor flags you will need
for your configuration of ELPA and define them in a file "config-f90.h"
- adapte the Makefile.example accordingly to your needs
Again, it is strongly encouraged to use the autotools build procedure!
How to use ELPA:
-----------------
Using ELPA should be quite simple. It is similiar to ScalaPack but the API
is different. See the examples in the directory "./test". There is shown how
to evoke ELPA from a Fortran code.
If you installed ELPA with the build procedure a pk-config file is produced,
which will tell you how to link against ELPA.
ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS} -I m4
AM_FCFLAGS = @AM_FCFLAGS@ @FC_MODINC@modules @FC_MODOUT@modules
AM_LDFLAGS = @AM_LDFLAGS@ @BLACS_LDFLAGS@
BLACS_LDFLAGS = @BLACS_LDFLAGS@
# libelpa
if WITH_OPENMP
lib_LTLIBRARIES = libelpa_mt.la
else
lib_LTLIBRARIES = libelpa.la
endif
##rule to produce fortran config file:
#config_f90.h: ./config.h
# grep "^#define" ./config.h > $@
if WITH_OPENMP
libelpa_mt_la_SOURCES = src/elpa1.F90 src/elpa2.F90
else
libelpa_la_SOURCES = src/elpa1.F90 src/elpa2.F90
endif
if WITH_GENERIC_SIMPLE
if WITH_OPENMP
libelpa_mt_la_SOURCES += src/elpa2_kernels/elpa2_kernels_complex_simple.f90 \
src/elpa2_kernels/elpa2_kernels_real_simple.f90
else
libelpa_la_SOURCES += src/elpa2_kernels/elpa2_kernels_complex_simple.f90 \
src/elpa2_kernels/elpa2_kernels_real_simple.f90
endif
endif
if WITH_GENERIC
if WITH_OPENMP
libelpa_mt_la_SOURCES += src/elpa2_kernels/elpa2_kernels_complex.f90 \
src/elpa2_kernels/elpa2_kernels_real.f90
else
libelpa_la_SOURCES += src/elpa2_kernels/elpa2_kernels_complex.f90 \
src/elpa2_kernels/elpa2_kernels_real.f90
endif
endif
if WITH_BGP
if WITH_OPENMP
libelpa_mt_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_bgp.f90 \
src/elpa2_kernels/elpa2_kernels_complex.f90
else
libelpa_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_bgp.f90 \
src/elpa2_kernels/elpa2_kernels_complex.f90
endif
endif
if WITH_BGQ
if WITH_OPENMP
libelpa_mt_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_bgq.f90 \
src/elpa2_kernels/elpa2_kernels_complex.f90
else
libelpa_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_bgq.f90 \
src/elpa2_kernels/elpa2_kernels_complex.f90
endif
endif
if WITH_SSE_AS
if WITH_OPENMP
libelpa_mt_la_SOURCES += src/elpa2_kernels/elpa2_kernels_asm_x86_64.s
else
libelpa_la_SOURCES += src/elpa2_kernels/elpa2_kernels_asm_x86_64.s
endif
endif
if WITH_AVX_SANDYBRIDGE
if WITH_OPENMP
libelpa_mt_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_sse-avx_2hv.c \
src/elpa2_kernels/elpa2_kernels_complex_sse-avx_1hv.cpp
else
libelpa_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_sse-avx_2hv.c \
src/elpa2_kernels/elpa2_kernels_complex_sse-avx_1hv.cpp
endif
endif
if WITH_AMD_BULLDOZER
if WITH_OPENMP
libelpa_mt_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_sse-avx_4hv.c \
src/elpa2_kernels/elpa2_kernels_real_sse-avx_2hv.c \
src/elpa2_kernels/elpa2_kernels_complex_sse-avx_1hv.cpp
else
libelpa_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_sse-avx_4hv.c \
src/elpa2_kernels/elpa2_kernels_real_sse-avx_2hv.c \
src/elpa2_kernels/elpa2_kernels_complex_sse-avx_1hv.cpp
endif
endif
if WITH_AVX_COMPLEX_BLOCK1
if WITH_OPENMP
libelpa_mt_la_SOURCES += src/elpa2_kernels/elpa2_kernels_complex_sse-avx_1hv.cpp
else
libelpa_la_SOURCES += src/elpa2_kernels/elpa2_kernels_complex_sse-avx_1hv.cpp
endif
endif
if WITH_AVX_COMPLEX_BLOCK2
if WITH_OPENMP
libelpa_mt_la_SOURCES += src/elpa2_kernels/elpa2_kernels_complex_sse-avx_2hv.cpp \
src/elpa2_kernels/elpa2_kernels_complex_sse-avx_1hv.cpp
else
libelpa_la_SOURCES += src/elpa2_kernels/elpa2_kernels_complex_sse-avx_2hv.cpp \
src/elpa2_kernels/elpa2_kernels_complex_sse-avx_1hv.cpp
endif
endif
if WITH_AVX_REAL_BLOCK2
if WITH_OPENMP
libelpa_mt_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_sse-avx_2hv.c
else
libelpa_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_sse-avx_2hv.c
endif
endif
if WITH_AVX_REAL_BLOCK4
if WITH_OPENMP
libelpa_mt_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_sse-avx_4hv.c \
src/elpa2_kernels/elpa2_kernels_real_sse-avx_2hv.c
else
libelpa_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_sse-avx_4hv.c \
src/elpa2_kernels/elpa2_kernels_real_sse-avx_2hv.c
endif
endif
if WITH_AVX_REAL_BLOCK6
if WITH_OPENMP
libelpa_mt_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_sse-avx_6hv.c \
src/elpa2_kernels/elpa2_kernels_real_sse-avx_4hv.c \
src/elpa2_kernels/elpa2_kernels_real_sse-avx_2hv.c
else
libelpa_la_SOURCES += src/elpa2_kernels/elpa2_kernels_real_sse-avx_6hv.c \
src/elpa2_kernels/elpa2_kernels_real_sse-avx_4hv.c \
src/elpa2_kernels/elpa2_kernels_real_sse-avx_2hv.c
endif
endif
if WITH_OPENMP
libelpa_mt_la_LDFLAGS = -version-info $(ELPA_SO_VERSION)
else
libelpa_la_LDFLAGS = -version-info $(ELPA_SO_VERSION)
endif
# install any .mod files in the include/ dir
elpa_includedir = $(includedir)/elpa