Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
elpa
elpa
Commits
f7f182b9
Commit
f7f182b9
authored
Dec 06, 2017
by
Andreas Marek
Browse files
Merge branch 'master_pre_stage' into loh/autotuning
parents
a8c5c927
a94fb86d
Changes
24
Expand all
Hide whitespace changes
Inline
Side-by-side
.gitlab-ci.yml
View file @
f7f182b9
This diff is collapsed.
Click to expand it.
Changelog
View file @
f7f182b9
Changelog for ELPA 2017.11.001.rc1
- added new compute kernels for IBM Power8 and Fujistu Sparc64
processors
- a first implementation of autotuning capability
Changelog for ELPA 2017.05.003
- remove bug in invert_triangular, which had been introduced
...
...
DEPRECATED_FEATURES.md
View file @
f7f182b9
...
...
@@ -18,11 +18,11 @@ In order to unfiy the namespace of the *ELPA* public interfaces, several interfa
have been replaced by new names. The old interfaces will be removed
Deprecated interface Replacement Comment
================================================================================
get_elpa_row_col_coms elpa_get_communicators (removed)
get_elpa_communicators elpa_get_communicators (removed)
solve_evp_real elpa_solve_evp_real_1stage_double (removed)
solve_evp_complex elpa_solve_evp_complex_1stage_double (removed)
================================================================================
==================
get_elpa_row_col_coms elpa_get_communicators (removed
since 2017.11.001
)
get_elpa_communicators elpa_get_communicators (removed
since 2017.11.001
)
solve_evp_real elpa_solve_evp_real_1stage_double (removed
since 2017.11.001
)
solve_evp_complex elpa_solve_evp_complex_1stage_double (removed
since 2017.11.001
)
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
...
...
INSTALL.md
View file @
f7f182b9
# Installation guide for the *ELPA* library#
## Preamle ##
## Pream
b
le ##
This file provides documentation on how to build the
*ELPA*
library in
**version ELPA-2017.
05
.00
3
**
.
This file provides documentation on how to build the
*ELPA*
library in
**version ELPA-2017.
11
.00
1.rc1
**
.
With release of
**version ELPA-2017.05.001**
the build process has been significantly simplified,
which makes it easier to install the
*ELPA*
library
...
...
ISSUES.md
View file @
f7f182b9
...
...
@@ -3,6 +3,12 @@
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 2017.11.001.rc1 release ###
-
the elpa autotune print functions cannot print at the moment
### ELPA 2017.05.003 release ###
-
at the moment no issues are known
### ELPA 2017.05.002 release ###
-
at the moment no issues are known
...
...
LIBRARY_INTERFACE
View file @
f7f182b9
...
...
@@ -73,3 +73,9 @@ https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
NO incompatible API changes w.r.t. to the previous version. Only some functions have
been added. The state of release 2017.05.001 defines this interface
- 11
Incompatible API changes w.r.t. to the previous version (only in the so called
"legacy interface", since as anounced some deprecated function aliases have been
removed). For the current interface all changes since 2017.05.001 are
compatible, since only some functions have been added.
The state of release 2017.11.001.rc1 defines this interface
README.md
View file @
f7f182b9
...
...
@@ -2,10 +2,19 @@
## Current Release ##
The current release is ELPA 2017.
05
.00
3
. The current supported API version
is 2017
0403
. This release supports the earliest API version 20170403.
The current release is ELPA 2017.
11
.00
1.rc1
. The current supported API version
is 2017
1201
. This release supports the earliest API version 20170403.
## About *ELPA*
[

](https://gitlab.mpcdf.mpg.de/elpa/elpa/commits/master)
[

](http://elpa.pages.mpcdf.de/elpa/coverage_summary
[
![License: LGPL v3
][
license-badge
]
](LICENSE)
[
license-badge
]:
https://img.shields.io/badge/License-LGPL%20v3-blue.svg
## About *ELPA* ##
The computation of selected or all eigenvalues and eigenvectors of a symmetric
(Hermitian) matrix has high relevance for various scientific disciplines.
...
...
RELEASE_NOTES
View file @
f7f182b9
This file contains the release notes for the ELPA 2017.
05
.00
3
version
This file contains the release notes for the ELPA 2017.
11
.00
1.rc1
version
What is new?
-------------
For detailed information about changes since release ELPA 2017.05.0
02
please have a look at the Changelog file
For detailed information about changes since release ELPA 2017.05.0
3
please have a look at the Changelog file
- This release contains a fix for a bug introduced in ELPA 2017.05.002
- This release contains new compute kernels for IBM Power 8 and Fujistu Sparc64 processors
- A first version of autotuning has been implemented
ABI change
---------------------
Since release 2017.05.00
1
the ABI has
not
changed.
Since release 2017.05.00
3
the ABI has changed.
Any incompatibilities to previous version?
---------------------------------------
As mentioned before, the ABI of ELPA was not changed; There is no
incompatibility with the previous version ELPA 2017.05.002.
As mentioned before, the ABI of ELPA was changed;
This change only affectes the old "lecgacy interface", since as
anounced some deprecated function aliases have been removed.
For the current interface there is no incompatibility with the
previous version ELPA 2017.05.003.
SWITCHING_TO_NEW_INTERFACE.md
View file @
f7f182b9
...
...
@@ -149,7 +149,7 @@ Local documentation (via man pages) should be available (if *ELPA* has been inst
For example "man elpa2_print_kernels" should provide the documentation for the
*ELPA*
program which prints all
the available kernels.
Also a [online doxygen documentation] (http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2017.
05
.00
3
/html/index.html)
Also a [online doxygen documentation] (http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2017.
11
.00
1.rc1
/html/index.html)
for each
*ELPA*
release is available.
USERS_GUIDE.md
View file @
f7f182b9
...
...
@@ -9,7 +9,7 @@ Local documentation (via man pages) should be available (if *ELPA* has been inst
For example "man elpa2_print_kernels" should provide the documentation for the
*ELPA*
program which prints all
the available kernels.
Also a [online doxygen documentation] (http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2017.
05
.00
3
/html/index.html)
Also a [online doxygen documentation] (http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2017.
11
.00
1.rc1
/html/index.html)
for each
*ELPA*
release is available.
...
...
configure.ac
View file @
f7f182b9
...
...
@@ -27,12 +27,13 @@ AM_SILENT_RULES([yes])
# by the current interface, as they are ABI compatible (e.g. only new symbols
# were added by the new interface)
#
AC_SUBST([ELPA_SO_VERSION], [1
0:1:2
])
AC_SUBST([ELPA_SO_VERSION], [1
1:0:0
])
# API Version
AC_DEFINE([EARLIEST_API_VERSION], [20170403], [Earliest supported ELPA API version])
AC_DEFINE([CURRENT_API_VERSION], [20170403], [Current ELPA API version])
AC_DEFINE([CURRENT_API_VERSION], [20171201], [Current ELPA API version])
# Autotune Version
AC_DEFINE([EARLIEST_AUTOTUNE_VERSION], [20171201], [Earliest ELPA API version, which supports autotuning])
AX_CHECK_GNU_MAKE()
if test x$_cv_gnu_make_command = x ; then
...
...
@@ -1138,12 +1139,13 @@ m4_foreach_w([elpa_m4_kind],[real complex],[
])
])
#echo " "
#echo "***********************************************************************"
#echo "* This is a the release of ELPA 2017.05.003 *"
#echo "* It mainly contains bugfixes to ELPA 2017.05.001 *"
#echo "***********************************************************************"
#echo " "
echo " "
echo "***********************************************************************"
echo "* This is a the first release candidate of ELPA 2017.11.001 *"
echo "* There might be still some changes until the final release of *"
echo "* ELPA 2017.11.001 *"
echo "***********************************************************************"
echo " "
if test x"$enable_kcomputer" = x"yes" ; then
echo " "
...
...
elpa.spec
View file @
f7f182b9
...
...
@@ -32,7 +32,7 @@
%endif
Name: elpa
Version: 2017.
05
.00
3
Version: 2017.
11
.00
1.rc1
Release: 1
Summary: A massively parallel eigenvector solver
License: LGPL-3.0
...
...
generate_gitlab_ci_tests.py
View file @
f7f182b9
This diff is collapsed.
Click to expand it.
man/elpa_init.3
View file @
f7f182b9
...
...
@@ -20,7 +20,7 @@ class(elpa_t), pointer :: elpa
.RI "With the definitions of the input and output variables:"
.br
.RI "integer, intent(in) :: \fBapi_version\fP ! the api version that you want to initialize, currently the version is 2017
0403
"
.RI "integer, intent(in) :: \fBapi_version\fP ! the api version that you want to initialize, currently the version is 2017
1201
"
.br
.RI "integer :: \fBerror\fP ! the return code. If the function returns without an error, the error code will be ELPA_OK."
.br
...
...
@@ -40,7 +40,7 @@ elpa_t handle;
.br
.br
.RI "int \fBapi_version\fP; // the api version that you want to initialize currently the version is 2017
0403
"
.RI "int \fBapi_version\fP; // the api version that you want to initialize currently the version is 2017
1201
"
.br
.RI "int \fBerror\fP; // the return code. If the function returns without an error, the error code will be ELPA_OK."
...
...
src/elpa.F90
View file @
f7f182b9
...
...
@@ -109,7 +109,7 @@
!> class(elpa_t), pointer :: elpa
!> integer :: success
!>
!> if (elpa_init(2017
0403
) /= ELPA_OK) then
!> if (elpa_init(2017
1201
) /= ELPA_OK) then
!> print *, "ELPA API version not supported"
!> stop
!> endif
...
...
@@ -153,7 +153,7 @@
!> elpa_t handle;
!> int error;
!>
!> if (elpa_init(2017
0403
) != ELPA_OK) {
!> if (elpa_init(2017
1201
) != ELPA_OK) {
!> fprintf(stderr, "Error: ELPA API version not supported");
!> exit(1);
!> }
...
...
src/elpa_api.F90
View file @
f7f182b9
...
...
@@ -60,7 +60,10 @@ module elpa_api
!< with the current release
integer
,
private
,
parameter
::
current_api_version
=
CURRENT_API_VERSION
!< Definition of the current API version
logical
,
private
::
initDone
=
.false.
integer
,
private
,
parameter
::
earliest_autotune_version
=
EARLIEST_AUTOTUNE_VERSION
!< Definition of the earliest API version
!< which supports autotuning
integer
,
private
::
api_version_set
logical
,
private
::
initDone
=
.false.
public
::
elpa_t
,
&
c_int
,
&
...
...
@@ -71,6 +74,7 @@ module elpa_api
type
,
abstract
::
elpa_t
private
!< these have to be public for proper bounds checking, sadly
integer
(
kind
=
c_int
),
public
,
pointer
::
na
=>
NULL
()
integer
(
kind
=
c_int
),
public
,
pointer
::
nev
=>
NULL
()
...
...
@@ -226,12 +230,17 @@ module elpa_api
!> \param domain integer: domain (real/complex) which should be tuned
!> \result tune_state class(elpa_autotune_t): the autotuning object
abstract
interface
function
elpa_autotune_setup_i
(
self
,
level
,
domain
)
result
(
tune_state
)
function
elpa_autotune_setup_i
(
self
,
level
,
domain
,
error
)
result
(
tune_state
)
import
elpa_t
,
elpa_autotune_t
implicit
none
class
(
elpa_t
),
intent
(
inout
),
target
::
self
integer
,
intent
(
in
)
::
level
,
domain
class
(
elpa_autotune_t
),
pointer
::
tune_state
integer
,
intent
(
in
)
::
level
,
domain
class
(
elpa_autotune_t
),
pointer
::
tune_state
#ifdef USE_FORTRAN2008
integer
,
optional
::
error
#else
integer
::
error
#endif
end
function
end
interface
...
...
@@ -1374,6 +1383,7 @@ module elpa_api
if
(
earliest_api_version
<=
api_version
.and.
api_version
<=
current_api_version
)
then
initDone
=
.true.
api_version_set
=
api_version
error
=
ELPA_OK
else
write
(
error_unit
,
"(a,i0,a)"
)
"ELPA: Error API version "
,
api_version
,
" is not supported by this library"
...
...
@@ -1394,6 +1404,12 @@ module elpa_api
endif
end
function
function
elpa_get_api_version
()
result
(
api_version
)
integer
::
api_version
api_version
=
api_version_set
end
function
!> \brief subroutine to uninit the ELPA library. Does nothing at the moment. Might do sth. later
!
...
...
src/elpa_impl.F90
View file @
f7f182b9
...
...
@@ -2609,11 +2609,35 @@ module elpa_impl
!> \param level integer: the "thoroughness" of the planed autotuning
!> \param domain integer: the domain (real/complex) which should be tuned
!> \result tune_state class(elpa_autotune_t): the created autotuning object
function
elpa_autotune_setup
(
self
,
level
,
domain
)
result
(
tune_state
)
function
elpa_autotune_setup
(
self
,
level
,
domain
,
error
)
result
(
tune_state
)
class
(
elpa_impl_t
),
intent
(
inout
),
target
::
self
integer
,
intent
(
in
)
::
level
,
domain
type
(
elpa_autotune_impl_t
),
pointer
::
ts_impl
class
(
elpa_autotune_t
),
pointer
::
tune_state
#ifdef USE_FORTRAN2008
integer
(
kind
=
c_int
),
optional
::
error
#else
integer
(
kind
=
c_int
)
::
error
#endif
#ifdef USE_FORTRAN2008
if
(
present
(
error
))
then
error
=
ELPA_OK
endif
#else
error
=
ELPA_OK
#endif
if
(
elpa_get_api_version
()
<
EARLIEST_AUTOTUNE_VERSION
)
then
write
(
error_unit
,
"(a,i0,a)"
)
"ELPA: Error API version: Autotuning does not support "
,
elpa_get_api_version
()
#ifdef USE_FORTRAN2008
if
(
present
(
error
))
then
error
=
ELPA_ERROR
endif
#else
error
=
ELPA_ERROR
#endif
return
endif
allocate
(
ts_impl
)
ts_impl
%
parent
=>
self
...
...
@@ -2638,8 +2662,8 @@ module elpa_impl
!c> * \param int domain: real/complex autotuning
!c> * \result elpa_autotune_t handle: on the autotune object
!c> */
!c> elpa_autotune_t elpa_autotune_setup(elpa_t handle, int level, int domain);
function
elpa_autotune_setup_c
(
handle
,
level
,
domain
)
result
(
ptr
)
bind
(
C
,
name
=
"elpa_autotune_setup"
)
!c> elpa_autotune_t elpa_autotune_setup(elpa_t handle, int level, int domain
, int *error
);
function
elpa_autotune_setup_c
(
handle
,
level
,
domain
,
error
)
result
(
ptr
)
bind
(
C
,
name
=
"elpa_autotune_setup"
)
type
(
c_ptr
),
intent
(
in
),
value
::
handle
type
(
elpa_impl_t
),
pointer
::
self
class
(
elpa_autotune_t
),
pointer
::
tune_state
...
...
@@ -2647,14 +2671,18 @@ module elpa_impl
integer
(
kind
=
c_int
),
intent
(
in
),
value
::
level
integer
(
kind
=
c_int
),
intent
(
in
),
value
::
domain
type
(
c_ptr
)
::
ptr
#ifdef USE_FORTRAN2008
integer
(
kind
=
c_int
)
,
intent
(
in
),
optional
::
error
#else
integer
(
kind
=
c_int
)
,
intent
(
in
)
::
error
#endif
print
*
,
"Calling c_f_pointer handle"
call
c_f_pointer
(
handle
,
self
)
print
*
,
"Calling setup"
print
*
,
level
,
domain
tune_state
=>
self
%
autotune_setup
(
level
,
domain
)
tune_state
=>
self
%
autotune_setup
(
level
,
domain
,
error
)
print
*
,
"After setup"
select
type
(
tune_state
)
class
is
(
elpa_autotune_impl_t
)
...
...
test/Fortran/test_autotune.F90
View file @
f7f182b9
...
...
@@ -197,13 +197,14 @@ program test
assert_elpa_ok
(
error
)
#endif
call
e
%
set
(
"timings"
,
1
)
call
e
%
set
(
"debug"
,
1
)
!
call e%set("debug",1)
assert_elpa_ok
(
e
%
setup
())
if
(
myid
==
0
)
print
*
,
""
tune_state
=>
e
%
autotune_setup
(
ELPA_AUTOTUNE_FAST
,
AUTOTUNE_DOMAIN
)
tune_state
=>
e
%
autotune_setup
(
ELPA_AUTOTUNE_FAST
,
AUTOTUNE_DOMAIN
,
error
)
assert_elpa_ok
(
error
)
do
while
(
e
%
autotune_step
(
tune_state
))
call
e
%
eigenvectors
(
a
,
ev
,
z
,
error
)
...
...
test_project_1stage/configure.ac
View file @
f7f182b9
AC_PREREQ([2.69])
AC_INIT([elpa_test_project],[2017.
05
.00
3
], elpa-library@rzg.mpg.de)
elpaversion="2017.
05
.00
3
"
AC_INIT([elpa_test_project],[2017.
11
.00
1.rc1
], elpa-library@rzg.mpg.de)
elpaversion="2017.
11
.00
1.rc1
"
AC_CONFIG_SRCDIR([src/test_real.F90])
AM_INIT_AUTOMAKE([foreign -Wall subdir-objects])
...
...
test_project_1stage/src/test_real.F90
View file @
f7f182b9
...
...
@@ -191,7 +191,7 @@ program test_real_example
!-------------------------------------------------------------------------------
if
(
elpa_init
(
2017
0403
)
/
=
elpa_ok
)
then
if
(
elpa_init
(
2017
1201
)
/
=
elpa_ok
)
then
print
*
,
"ELPA API version not supported"
stop
endif
...
...
Prev
1
2
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment