Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
elpa
elpa
Commits
2e2a4e0f
Commit
2e2a4e0f
authored
Feb 09, 2017
by
Andreas Marek
Browse files
Unify solve_tridi single/double
parent
ae45bbb3
Changes
3
Pipelines
2
Hide whitespace changes
Inline
Side-by-side
Makefile.am
View file @
2e2a4e0f
...
...
@@ -68,6 +68,7 @@ EXTRA_libelpa@SUFFIX@_private_la_DEPENDENCIES = \
src/elpa_cholesky_template.X90
\
src/elpa_invert_trm.X90
\
src/elpa_multiply_a_b.X90
\
src/elpa_solve_tridi.X90
\
src/precision_macros.h
lib_LTLIBRARIES
=
libelpa@SUFFIX@.la
...
...
@@ -928,6 +929,7 @@ EXTRA_DIST = \
src/elpa_cholesky_template.X90
\
src/elpa_invert_trm.X90
\
src/elpa_multiply_a_b.X90
\
src/elpa_solve_tridi.X90
\
src/elpa_qr/elpa_qrkernels.X90
\
src/ev_tridi_band_gpu_c_v2_complex_template.Xcu
\
src/ev_tridi_band_gpu_c_v2_real_template.Xcu
\
...
...
src/elpa1_auxiliary.F90
View file @
2e2a4e0f
...
...
@@ -650,6 +650,9 @@ module ELPA1_AUXILIARY
#endif /* WANT_SINGLE_PRECISION_COMPLEX */
#define REALCASE 1
#define DOUBLE_PRECISION
#include "precision_macros.h"
!> \brief elpa_solve_tridi_double: Solve tridiagonal eigensystem for a double-precision matrix with divide and conquer method
!> \details
...
...
@@ -671,29 +674,16 @@ module ELPA1_AUXILIARY
function
elpa_solve_tridi_double
(
na
,
nev
,
d
,
e
,
q
,
ldq
,
nblk
,
matrixCols
,
mpi_comm_rows
,
mpi_comm_cols
,
wantDebug
)
&
result
(
success
)
use
elpa1_compute
,
solve_tridi_double_private
=>
solve_tridi_double
use
precision
implicit
none
integer
(
kind
=
ik
)
::
na
,
nev
,
ldq
,
nblk
,
matrixCols
,
mpi_comm_rows
,
mpi_comm_cols
real
(
kind
=
rk8
)
::
d
(
na
),
e
(
na
)
#ifdef USE_ASSUMED_SIZE
real
(
kind
=
rk8
)
::
q
(
ldq
,
*
)
#else
real
(
kind
=
rk8
)
::
q
(
ldq
,
matrixCols
)
#endif
logical
,
intent
(
in
)
::
wantDebug
logical
::
success
success
=
.false.
call
solve_tridi_double_private
(
na
,
nev
,
d
,
e
,
q
,
ldq
,
nblk
,
matrixCols
,
&
mpi_comm_rows
,
mpi_comm_cols
,
wantDebug
,
success
)
#include "elpa_solve_tridi.X90"
end
function
#ifdef WANT_SINGLE_PRECISION_REAL
#define REALCASE 1
#define SINGLE_PRECISION
#include "precision_macros.h"
!> \brief elpa_solve_tridi_single: Solve tridiagonal eigensystem for a single-precision matrix with divide and conquer method
!> \details
!>
...
...
@@ -714,24 +704,7 @@ module ELPA1_AUXILIARY
function
elpa_solve_tridi_single
(
na
,
nev
,
d
,
e
,
q
,
ldq
,
nblk
,
matrixCols
,
mpi_comm_rows
,
&
mpi_comm_cols
,
wantDebug
)
result
(
success
)
use
elpa1_compute
,
solve_tridi_single_private
=>
solve_tridi_single
use
precision
implicit
none
integer
(
kind
=
ik
)
::
na
,
nev
,
ldq
,
nblk
,
matrixCols
,
mpi_comm_rows
,
mpi_comm_cols
real
(
kind
=
rk4
)
::
d
(
na
),
e
(
na
)
#ifdef USE_ASSUMED_SIZE
real
(
kind
=
rk4
)
::
q
(
ldq
,
*
)
#else
real
(
kind
=
rk4
)
::
q
(
ldq
,
matrixCols
)
#endif
logical
,
intent
(
in
)
::
wantDebug
logical
::
success
success
=
.false.
call
solve_tridi_single_private
(
na
,
nev
,
d
,
e
,
q
,
ldq
,
nblk
,
matrixCols
,
&
mpi_comm_rows
,
mpi_comm_cols
,
wantDebug
,
success
)
#include "elpa_solve_tridi.X90"
end
function
...
...
src/elpa_solve_tridi.X90
0 → 100644
View file @
2e2a4e0f
#include "sanity.X90"
use elpa1_compute, solve_tridi_&
&PRECISION&
&_private => solve_tridi_&
&PRECISION
use precision
implicit none
integer(kind=ik) :: na, nev, ldq, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols
real(kind=REAL_DATATYPE) :: d(na), e(na)
#ifdef USE_ASSUMED_SIZE
real(kind=REAL_DATATYPE) :: q(ldq,*)
#else
real(kind=REAL_DATATYPE) :: q(ldq,matrixCols)
#endif
logical, intent(in) :: wantDebug
logical :: success
success = .false.
call solve_tridi_&
&PRECISION&
&_private(na, nev, d, e, q, ldq, nblk, matrixCols, &
mpi_comm_rows, mpi_comm_cols, wantDebug, success)
#undef REALCASE
#undef COMPLEXCASE
#undef DOUBLE_PRECISION
#undef SINGLE_PRECISION
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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