Commit 005b7687 authored by Andreas Marek's avatar Andreas Marek

Merge branch 'ELPA_GPU' into ELPA_KNL

parents 0da14d93 75ca6504
This source diff could not be displayed because it is too large. You can view the blob instead.
How to contribute to the ELPA library:
### How to contribute to the *ELPA* library: ###
We are very happy and gratefull if you are willing to help us improve ELPA. Thus, we would like to make this process as simple as possible for you,
We are very happy and gratefull if you are willing to help us improve *ELPA*.
Thus, we would like to make this process as simple as possible for you,
but at the same time still keep it manageable for us
For recommendations and suggestions, a simple email to us is sufficient!
For recommendations and suggestions, a simple email to us (*elpa-libray at mpcdf.mpg.de*) is sufficient!
If you would like to share with us your improvements, we suggest the following ways:
1. If you use a public accessible git repository, please send us a merge request. This is the preferred way
2. An email with a patch, will also be ok. Please use elpa-library@mpcdf.mpg.de
2. An email with a patch, will also be ok. Please use *elpa-library at mpcdf.mpg.de*
Thank you for supporting ELPA!
Thank you for supporting *ELPA*!
The ELPA development team
Changelog for pre-release ELPA 2016.11.001.pre
This pre-release contains an experimental API which will most likely
change in the next stable release
- also suport of single-precision (real and complex case) eigenvalule problems
- GPU support in ELPA 1stage and 2stage (real and complex case)
- change of API (w.r.t. ELPA 2016.05.004) to support runtime-choice of GPU usage
Changelog for release ELPA 2016.05.004
- fix a problem with the private state of module precision
- distribute test_project with dist tarball
- generic driver routine for ELPA 1stage and 2stage
- test case for elpa_mult_at_b_real
- test case for elpa_mult_ah_b_complex
- test case for elpa_cholesky_real
- test case for elpa_cholesky_complex
- test case for elpa_invert_trm_real
- test case for elpa_invert_trm_complex
- fix building of static library
- better choice of AVX, AVX2, AVX512 kernels
- make assumed size Fortran arrays default
Changelog for release ELPA 2016.05.003
- fix a problem with the build of SSE kernels
......
## DEPRECATED FEATURES OF *ELPA* ##
This file contains a list of features, which have been replaced by other options.
Thus these features are considered as deprecated, and will be removed at some point
in the (near) future from the *ELPA* library.
### A) Deprecated interfaces:###
In order to unfiy the namespace of the *ELPA* public interfaces, several interfaces
have been replaced by new names. The old interfaces will be removed
Deprecated interface Replacement
===================================================
get_elpa_row_col_coms elpa_get_communicators
get_elpa_communicators elpa_get_communicators
solve_evp_real elpa_solve_evp_real_1stage_double
solve_evp_complex elpa_solve_evp_complex_1stage_double
solve_evp_real_1stage elpa_solve_evp_real_1stage_double
solve_evp_complex_1stage elpa_solve_evp_complex_1stage_double
solve_evp_real_2stage elpa_solve_evp_real_2stage_double
solve_evp_complex_2stage elpa_solve_evp_complex_2stage_double
mult_at_b_real elpa_mult_at_b_real_double
mult_ah_b_complex elpa_mult_ah_b_complex_double
invert_trm_real elpa_invert_trm_real_double
invert_trm_complex elpa_invert_trm_complex_double
cholesky_real elpa_cholesky_real_double
cholesky_complex elpa_cholesky_complex_double
For all symbols also the corresponding "_single" routines are available
### B) Runtime options ###
At the moment no runtime options are deprecated
# Doxyfile 1.8.10
# Doxyfile 1.8.12
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project.
......@@ -32,7 +32,7 @@ DOXYFILE_ENCODING = UTF-8
# title of most generated pages and in a few other places.
# The default value is: My Project.
PROJECT_NAME = Eigenvalue SoLvers for Petaflop-Applications (ELPA)
PROJECT_NAME = "Eigenvalue SoLvers for Petaflop-Applications (ELPA)"
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
# could be handy for archiving the generated documentation or if some version
......@@ -44,7 +44,7 @@ PROJECT_NUMBER = @PACKAGE_VERSION@
# for a project that appears at the top of each page and should give viewer a
# quick idea about the purpose of the project. Keep the description short.
0PROJECT_BRIEF = "Eigenvalue SoLvers for Petaflop-Applications (ELPA)"
#PROJECT_BRIEF = "Eigenvalue SoLvers for Petaflop-Applications (ELPA)"
# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
# in the documentation. The maximum height of the logo should not exceed 55
......@@ -118,7 +118,17 @@ REPEAT_BRIEF = YES
# the entity):The $name class, The $name widget, The $name file, is, provides,
# specifies, contains, represents, a, an and the.
ABBREVIATE_BRIEF =
ABBREVIATE_BRIEF = "The $name class" \
"The $name widget" \
"The $name file" \
is \
provides \
specifies \
contains \
represents \
a \
an \
the
# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
# doxygen will generate a detailed section even if there is only a brief
......@@ -256,7 +266,7 @@ OPTIMIZE_OUTPUT_JAVA = NO
# sources. Doxygen will then generate output that is tailored for Fortran.
# The default value is: NO.
OPTIMIZE_FOR_FORTRAN = Yes
OPTIMIZE_FOR_FORTRAN = YES
# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
# sources. Doxygen will then generate output that is tailored for VHDL.
......@@ -293,6 +303,15 @@ EXTENSION_MAPPING = f=FortranFixed f90=FortranFree F=FortranFixed F90=Fortr
MARKDOWN_SUPPORT = YES
# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up
# to that level are automatically included in the table of contents, even if
# they do not have an id attribute.
# Note: This feature currently applies only to Markdown headings.
# Minimum value: 0, maximum value: 99, default value: 0.
# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
TOC_INCLUDE_HEADINGS = 0
# When enabled doxygen tries to link words that correspond to documented
# classes, or namespaces to their corresponding documentation. Such a link can
# be prevented in individual cases by putting a % sign in front of the word or
......@@ -739,6 +758,12 @@ WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = NO
# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when
# a warning is encountered.
# The default value is: NO.
WARN_AS_ERROR = NO
# The WARN_FORMAT tag determines the format of the warning messages that doxygen
# can produce. The string should contain the $file, $line, and $text tags, which
# will be replaced by the file and line number from which the warning originated
......@@ -790,7 +815,52 @@ INPUT_ENCODING = UTF-8
# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd,
# *.vhdl, *.ucf, *.qsf, *.as and *.js.
FILE_PATTERNS =
FILE_PATTERNS =*.c \
*.cc \
*.cxx \
*.cpp \
*.c++ \
*.java \
*.ii \
*.ixx \
*.ipp \
*.i++ \
*.inl \
*.idl \
*.ddl \
*.odl \
*.h \
*.hh \
*.hxx \
*.hpp \
*.h++ \
*.cs \
*.d \
*.php \
*.php4 \
*.php5 \
*.phtml \
*.inc \
*.m \
*.markdown \
*.md \
*.mm \
*.dox \
*.py \
*.pyw \
*.F90
*.f90 \
*.f95 \
*.f03 \
*.f08 \
*.f \
*.F \
*.for \
*.tcl \
*.vhd \
*.vhdl \
*.ucf \
*.qsf
# The RECURSIVE tag can be used to specify whether or not subdirectories should
# be searched for input files as well.
......@@ -823,6 +893,9 @@ EXCLUDE = @top_srcdir@/src/elpa1_compute.F90 \
@top_srcdir@/src/elpa_utilities.F90 \
@top_srcdir@/src/timer.F90 \
@top_srcdir@/src/redist_band.X90 \
@top_srcdir@/src/timer_dummy.F90 \
@top_srcdir@/src/precision_macros.h \
@top_srcdir@/src/precision_macros_complex.h \
@top_srcdir@/src/elpa2_kernels/elpa2_kernels_asm_x86_64.s \
@top_srcdir@/src/elpa2_kernels/mod_single_hh_trafo_real.F90 \
@top_srcdir@/src/elpa2_kernels/mod_fortran_interfaces.F90 \
......@@ -920,7 +993,7 @@ EXAMPLE_PATH =
# *.h) to filter out the source-files in the directories. If left blank all
# files are included.
EXAMPLE_PATTERNS =
EXAMPLE_PATTERNS = *
# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
# searched for input files to be used with the \include or \dontinclude commands
......@@ -949,6 +1022,10 @@ IMAGE_PATH =
# Note that the filter must not add or remove lines; it is applied before the
# code is scanned, but not when the output code is generated. If lines are added
# or removed, the anchors will not be placed correctly.
#
# Note that for custom extensions or not directly supported extensions you also
# need to set EXTENSION_MAPPING for the extension otherwise the files are not
# properly processed by doxygen.
INPUT_FILTER =
......@@ -958,6 +1035,10 @@ INPUT_FILTER =
# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
# patterns match the file name, INPUT_FILTER is applied.
#
# Note that for custom extensions or not directly supported extensions you also
# need to set EXTENSION_MAPPING for the extension otherwise the files are not
# properly processed by doxygen.
FILTER_PATTERNS =
......@@ -1800,6 +1881,14 @@ LATEX_SOURCE_CODE = NO
LATEX_BIB_STYLE = plain
# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated
# page will contain the date and time when the page was generated. Setting this
# to NO can help when comparing the output of multiple runs.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_TIMESTAMP = NO
#---------------------------------------------------------------------------
# Configuration options related to the RTF output
#---------------------------------------------------------------------------
......
# Installation guide #
# Installation guide for the *ELPA* library#
## Preamle ##
This file provides documentation on how to build the *ELPA* library in **version ELPA-2016.05.003**.
This file provides documentation on how to build the *ELPA* library in **version ELPA-2016.05.004**.
Although most of the documentation is generic to any *ELPA* release, some configure options
described in this document might be specific to the above mentioned version of *ELPA*.
## How to install ELPA ##
## How to install *ELPA *##
First of all, if you do not want to build *ELPA* yourself, and you run Linux,
it is worth having a look at the [*ELPA* webpage*] (http://elpa.mpcdf.mpg.de)
......@@ -23,7 +23,7 @@ the needed configure script! Please look at the "**INSTALL_FROM_GIT_VERSION**" f
for the documentation how to proceed.
## (A): Installing ELPA as library with configure ##
## (A): Installing *ELPA* as library with configure ##
*ELPA* can be installed with the build steps
- configure
......@@ -73,10 +73,10 @@ automatically. No setting of any library paths should be necessary.
If standard libraries are on the build system either installed in non standard paths, or
special non standard libraries (e.g. *Intel's MKL*) should be used, it might be necessary
to specify the appropriate link-line with the **SCALAPACK_LDFLAGS** and **SCALAPACK_FCFLAGS**
to specify the appropriate link-line with the **SCALAPACK_LDFLAGS** and **SCALAPACK_FCFLAGS**
variables.
For example, due to performance reasons it might be benefical to use the *BLAS*, *BLACS*, *LAPACK*,
For example, due to performance reasons it might be benefical to use the *BLAS*, *BLACS*, *LAPACK*,
and *SCALAPACK* implementation from *Intel's MKL* library.
Togehter with the Intel Fortran Compiler the call to configure might then look like:
......@@ -108,16 +108,23 @@ It this is not desired, it is possible to build *ELPA* with only one (not necess
real and complex valued case, respectively. This can be done with the "--with-real-..-kernel-only" and
"--with-complex-..-kernel-only" configure options. For details please do a "configure --help"
### No MPI, one node shared-memory version of ELPA ###
### No MPI, one node shared-memory version of *ELPA* ###
Since release 2016.05.001 it is possible to build *ELPA* without any MPI support. This version can be used
by applications, which do not have any MPI parallelisation. To set this version, use the
"--with-mpi=0" configure flag. It is strongly recommmended to also set the "--enable-openmp"
option, otherwise no parallelisation whatsoever will be present.
It is possible to install the different flavours of ELPA (with/without MPI, with/without OpenMP) in the same
It is possible to install the different flavours of *ELPA* (with/without MPI, with/without OpenMP) in the same
directory, since the library is named differently for each build.
### GPU support as runtime option ###
If the target systems has NVIDIA GPUs as accelerator cards *ELPA* can be build with GPU support.
The configure option "--enable-GPU-support" will trigger a build of the GPU version of ELPA. It might be necessary
that also the option "--with-cuda-path=[your path to the local cuda installation]" has to be set.
For GPU support, only models of NIVIDA GPUs with "compute capabillity" > 3.5 are supported.
### Doxygen documentation ###
A doxygen documentation can be created with the "--enable-doxygen-doc" configure option
......
## A list of known (and hopefully soon solved) issues of ELPA ##
## A list of known (and hopefully soon solved) issues of *ELPA* ##
For more details and recent updates please visit the online [issue system] (https://gitlab.mpcdf.mpg.de/elpa/elpa/issues)
Issues which are not mentioned in a newer release are (considered as) solved
### ELPA 2016.11.001 release ###
- at the moment no issues are known
### ELPA 2016.05.003 release ###
- the Fortran module file "precision" was installed as private. Lead to linking problems
### ELPA 2016.05.002 release ###
......@@ -9,6 +17,6 @@ For more details and recent updates please visit the online [issue system] (http
### ELPA 2016.05.001 release ###
- QR decomposition fails for certain combinations of matrix sizes, number of eigenvalues to compute and block size
- The generated check-scripts (in the step "make check") do not call the binary with "mpiexec" when ELPA is build with
- The generated check-scripts (in the step "make check") do not call the binary with "mpiexec" when *ELPA* is build with
MPI
......@@ -44,3 +44,17 @@ https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
The state of release 2016.05.003 defines this interface
- 7
Compatible API change w.r.t. previous version: Interfaces for generic driver
routines have been added. The old interfaces are still available
The state of release 2016.05.004 defines this interface
- 8
INCOMPATIBLE API change w.r.t. previous version: Interfaces for single precision
routines have been added. Additional parameters allow run-time choice of GPU
version.
This is an experimental API, which will most likely change in the future
The state of release 2016.11.001.pre defines this interface
......@@ -11,9 +11,11 @@ AM_LDFLAGS = $(SCALAPACK_LDFLAGS)
noinst_LTLIBRARIES = libelpa@SUFFIX@_public.la
libelpa@SUFFIX@_public_la_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@modules @FC_MODINC@private_modules
libelpa@SUFFIX@_public_la_SOURCES = \
src/elpa.F90 \
src/elpa1.F90 \
src/elpa2.F90 \
src/elpa1_auxiliary.F90 \
src/elpa1_utilities.F90 \
src/elpa2_utilities.F90 \
src/elpa_utilities.F90
......@@ -53,7 +55,9 @@ EXTRA_libelpa@SUFFIX@_private_la_DEPENDENCIES = \
src/elpa2_kernels/elpa2_kernels_real_template.X90 \
src/elpa2_kernels/elpa2_kernels_complex_template.X90 \
src/elpa2_kernels/elpa2_kernels_simple_template.X90 \
src/redist_band.X90
src/redist_band.X90 \
src/precision_macros.h \
src/precision_macros_complex.h
lib_LTLIBRARIES = libelpa@SUFFIX@.la
libelpa@SUFFIX@_la_LINK = $(FCLINK) $(AM_LDFLAGS) -version-info $(ELPA_SO_VERSION)
......@@ -72,6 +76,9 @@ if HAVE_DETAILED_TIMINGS
src/ftimings/time.c \
src/ftimings/virtual_memory.c \
src/ftimings/papi.c
else
libelpa@SUFFIX@_private_la_SOURCES += \
src/timer_dummy.F90
endif
if WITH_GPU_VERSION
......@@ -288,20 +295,41 @@ dist_man_MANS = \
man/solve_evp_complex_1stage_double.3 \
man/solve_evp_real_2stage_double.3 \
man/solve_evp_complex_2stage_double.3 \
man/elpa_solve_evp_real_1stage_double.3 \
man/elpa_solve_evp_complex_1stage_double.3 \
man/elpa_solve_evp_real_2stage_double.3 \
man/elpa_solve_evp_complex_2stage_double.3 \
man/get_elpa_row_col_comms.3 \
man/get_elpa_communicators.3 \
man/elpa_mult_at_b_real_double.3 \
man/elpa_mult_at_b_real_single.3 \
man/elpa_mult_ah_b_complex_double.3 \
man/elpa_mult_ah_b_complex_single.3 \
man/elpa_invert_trm_real_double.3 \
man/elpa_invert_trm_real_single.3 \
man/elpa_invert_trm_complex_double.3 \
man/elpa_invert_trm_complex_single.3 \
man/elpa_solve_evp_real_double.3 \
man/elpa_solve_evp_real_single.3 \
man/elpa_solve_evp_complex_double.3 \
man/elpa_solve_evp_complex_single.3 \
man/elpa2_print_kernels.1
if WANT_SINGLE_PRECISION_REAL
dist_man_MANS += man/solve_evp_real_1stage_single.3 \
man/solve_evp_real_2stage_single.3
man/elpa_solve_evp_real_1stage_single.3 \
man/elpa_solve_evp_real_2stage_single.3 \
man/solve_evp_real_2stage_single.3
endif
if WANT_SINGLE_PRECISION_COMPLEX
dist_man_MANS += man/solve_evp_complex_1stage_single.3 \
man/solve_evp_complex_2stage_single.3
man/elpa_solve_evp_complex_1stage_single.3 \
man/elpa_solve_evp_complex_2stage_single.3 \
man/solve_evp_complex_2stage_single.3
endif
#needed?
......@@ -351,6 +379,9 @@ noinst_PROGRAMS = \
elpa2_test_complex@SUFFIX@ \
elpa2_test_complex_default@SUFFIX@ \
elpa2_test_complex_api@SUFFIX@ \
elpa2_test_complex_api@SUFFIX@ \
elpa_driver_real@SUFFIX@ \
elpa_driver_complex@SUFFIX@ \
elpa1_real_toeplitz@SUFFIX@ \
elpa1_real_transpose_multiply@SUFFIX@ \
elpa1_complex_transpose_multiply@SUFFIX@ \
......@@ -362,7 +393,9 @@ noinst_PROGRAMS = \
elpa1_test_real_c_version@SUFFIX@ \
elpa1_test_complex_c_version@SUFFIX@ \
elpa2_test_real_c_version@SUFFIX@ \
elpa2_test_complex_c_version@SUFFIX@
elpa2_test_complex_c_version@SUFFIX@ \
elpa_driver_real_c_version@SUFFIX@ \
elpa_driver_complex_c_version@SUFFIX@
if WANT_SINGLE_PRECISION_COMPLEX
noinst_PROGRAMS += \
......@@ -370,9 +403,11 @@ noinst_PROGRAMS += \
elpa2_test_complex_single_precision@SUFFIX@ \
elpa2_test_complex_default_single_precision@SUFFIX@ \
elpa1_complex_transpose_multiply_single_precision@SUFFIX@ \
elpa_driver_complex_single_precision@SUFFIX@ \
elpa1_complex_cholesky_single_precision@SUFFIX@ \
elpa1_complex_invert_trm_single_precision@SUFFIX@ \
elpa2_test_complex_api_single_precision@SUFFIX@
elpa2_test_complex_api_single_precision@SUFFIX@ \
elpa_driver_complex_c_version_single_precision@SUFFIX@
endif
if WANT_SINGLE_PRECISION_REAL
......@@ -382,24 +417,30 @@ noinst_PROGRAMS += \
elpa2_test_real_default_single_precision@SUFFIX@ \
elpa2_test_real_qr_single_precision@SUFFIX@ \
elpa2_test_real_api_single_precision@SUFFIX@ \
elpa_driver_real_single_precision@SUFFIX@ \
elpa1_real_transpose_multiply_single_precision@SUFFIX@ \
elpa1_real_cholesky_single_precision@SUFFIX@ \
elpa1_real_invert_trm_single_precision@SUFFIX@ \
elpa_driver_real_c_version_single_precision@SUFFIX@ \
elpa1_real_toeplitz_single_precision@SUFFIX@
endif
if WITH_GPU_VERSION
noinst_PROGRAMS += \
elpa1_test_complex_gpu@SUFFIX@ \
elpa1_test_real_gpu@SUFFIX@ \
elpa2_test_complex_gpu@SUFFIX@ \
elpa2_test_real_gpu@SUFFIX@
if WANT_SINGLE_PRECISION_REAL
noinst_PROGRAMS += \
elpa1_test_real_gpu_single_precision@SUFFIX@ \
elpa2_test_real_gpu_single_precision@SUFFIX@
endif
if WANT_SINGLE_PRECISION_COMPLEX
noinst_PROGRAMS += \
elpa1_test_complex_gpu_single_precision@SUFFIX@ \
elpa2_test_complex_gpu_single_precision@SUFFIX@
endif
......@@ -437,11 +478,21 @@ elpa1_test_real_with_c@SUFFIX@_LDADD = $(build_lib)
elpa1_test_real_with_c@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
EXTRA_elpa1_test_real_with_c@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
elpa_driver_real_c_version@SUFFIX@_SOURCES = test/C/elpa_driver_real_c_version.c
elpa_driver_real_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
elpa_driver_real_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
EXTRA_elpa_driver_real_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
elpa1_test_complex_c_version@SUFFIX@_SOURCES = test/C/elpa1_test_complex_c_version.c
elpa1_test_complex_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
elpa1_test_complex_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
EXTRA_elpa1_test_complex_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
elpa_driver_complex_c_version@SUFFIX@_SOURCES = test/C/elpa_driver_complex_c_version.c
elpa_driver_complex_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
elpa_driver_complex_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
EXTRA_elpa_driver_complex_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
elpa2_test_real_c_version@SUFFIX@_SOURCES = test/C/elpa2_test_real_c_version.c
elpa2_test_real_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
elpa2_test_real_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
......@@ -532,6 +583,16 @@ elpa2_test_complex_api@SUFFIX@_LDADD = $(build_lib)
elpa2_test_complex_api@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
EXTRA_elpa2_test_complex_api@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
elpa_driver_real@SUFFIX@_SOURCES = test/Fortran/test_driver_real.F90
elpa_driver_real@SUFFIX@_LDADD = $(build_lib)
elpa_driver_real@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
EXTRA_elpa_driver_real@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
elpa_driver_complex@SUFFIX@_SOURCES = test/Fortran/test_driver_complex.F90
elpa_driver_complex@SUFFIX@_LDADD = $(build_lib)
elpa_driver_complex@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
EXTRA_elpa_driver_complex@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
elpa2_print_kernels@SUFFIX@_SOURCES = src/elpa2_print_kernels.F90
elpa2_print_kernels@SUFFIX@_LDADD = $(build_lib)
elpa2_print_kernels@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
......@@ -548,6 +609,11 @@ elpa2_test_real_single_precision@SUFFIX@_LDADD = $(build_lib)
elpa2_test_real_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
EXTRA_elpa2_test_real_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
elpa_driver_real_single_precision@SUFFIX@_SOURCES = test/Fortran/test_driver_real_single.F90
elpa_driver_real_single_precision@SUFFIX@_LDADD = $(build_lib)
elpa_driver_real_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
EXTRA_elpa_driver_real_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
elpa1_real_toeplitz_single_precision@SUFFIX@_SOURCES = test/Fortran/test_toeplitz_single.F90
elpa1_real_toeplitz_single_precision@SUFFIX@_LDADD = $(build_lib)
elpa1_real_toeplitz_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
......@@ -558,6 +624,11 @@ elpa1_real_transpose_multiply_single_precision@SUFFIX@_LDADD = $(build_lib)
elpa1_real_transpose_multiply_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
EXTRA_elpa1_real_transpose_multiply_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
elpa_driver_real_c_version_single_precision@SUFFIX@_SOURCES = test/C/elpa_driver_real_c_version_single.c
elpa_driver_real_c_version_single_precision@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
elpa_driver_real_c_version_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
EXTRA_elpa_driver_real_c_version_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
elpa1_real_cholesky_single_precision@SUFFIX@_SOURCES = test/Fortran/test_cholesky_real_single.F90
elpa1_real_cholesky_single_precision@SUFFIX@_LDADD = $(build_lib)
elpa1_real_cholesky_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
......@@ -592,6 +663,16 @@ elpa1_test_complex_single_precision@SUFFIX@_LDADD = $(build_lib)
elpa1_test_complex_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
EXTRA_elpa1_test_complex_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
elpa_driver_complex_single_precision@SUFFIX@_SOURCES = test/Fortran/test_driver_complex_single.F90
elpa_driver_complex_single_precision@SUFFIX@_LDADD = $(build_lib)
elpa_driver_complex_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
EXTRA_elpa_driver_complex_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
elpa_driver_complex_c_version_single_precision@SUFFIX@_SOURCES = test/C/elpa_driver_complex_c_version_single.c
elpa_driver_complex_c_version_single_precision@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
elpa_driver_complex_c_version_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
EXTRA_elpa_driver_complex_c_version_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
elpa2_test_complex_single_precision@SUFFIX@_SOURCES = test/Fortran/test_complex2_single.F90
elpa2_test_complex_single_precision@SUFFIX@_LDADD = $(build_lib)
elpa2_test_complex_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
......@@ -625,6 +706,16 @@ EXTRA_elpa2_test_complex_api_single_precision@SUFFIX@_DEPENDENCIES = test/Fortra
endif
if WITH_GPU_VERSION
elpa1_test_real_gpu@SUFFIX@_SOURCES = test/Fortran/test_real_gpu.F90
elpa1_test_real_gpu@SUFFIX@_LDADD = $(build_lib)
elpa1_test_real_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
EXTRA_elpa1_test_real_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
elpa1_test_complex_gpu@SUFFIX@_SOURCES = test/Fortran/test_complex_gpu.F90
elpa1_test_complex_gpu@SUFFIX@_LDADD = $(build_lib)
elpa1_test_complex_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
EXTRA_elpa1_test_complex_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
elpa2_test_real_gpu@SUFFIX@_SOURCES = test/Fortran/test_real2_gpu.F90
elpa2_test_real_gpu@SUFFIX@_LDADD = $(build_lib)
elpa2_test_real_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
......@@ -636,6 +727,11 @@ elpa2_test_complex_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_module
EXTRA_elpa2_test_complex_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
if WANT_SINGLE_PRECISION_REAL
elpa1_test_real_gpu_single_precision@SUFFIX@_SOURCES = test/Fortran/test_real_gpu_single.F90
elpa1_test_real_gpu_single_precision@SUFFIX@_LDADD = $(build_lib)
elpa1_test_real_gpu_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
EXTRA_elpa1_test_real_gpu_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
elpa2_test_real_gpu_single_precision@SUFFIX@_SOURCES = test/Fortran/test_real2_gpu_single.F90
elpa2_test_real_gpu_single_precision@SUFFIX@_LDADD = $(build_lib)
elpa2_test_real_gpu_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
......@@ -643,6 +739,11 @@ EXTRA_elpa2_test_real_gpu_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/e
endif
if WANT_SINGLE_PRECISION_COMPLEX
elpa1_test_complex_gpu_single_precision@SUFFIX@_SOURCES = test/Fortran/test_complex_gpu_single.F90
elpa1_test_complex_gpu_single_precision@SUFFIX@_LDADD = $(build_lib)
elpa1_test_complex_gpu_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
EXTRA_elpa1_test_complex_gpu_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
elpa2_test_complex_gpu_single_precision@SUFFIX@_SOURCES = test/Fortran/test_complex2_gpu_single.F90
elpa2_test_complex_gpu_single_precision@SUFFIX@_LDADD = $(build_lib)
elpa2_test_complex_gpu_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_modules @FC_MODINC@private_modules
......@@ -662,6 +763,8 @@ check_SCRIPTS = \