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
ec73b20b
Commit
ec73b20b
authored
Aug 26, 2021
by
Andreas Marek
Browse files
Add routines with explicit name to API
parent
dc1824de
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
generate_automake_test_programs.py
View file @
ec73b20b
...
...
@@ -63,7 +63,12 @@ split_comm_flag = {
"by_elpa"
:
""
}
for
lang
,
m
,
g
,
gid
,
q
,
t
,
p
,
d
,
s
,
lay
,
spl
in
product
(
sorted
(
language_flag
.
keys
()),
explicit_name_flag
=
{
"explicit"
:
"-DTEST_EXPLICIT_NAME"
,
"implicit"
:
""
}
for
lang
,
m
,
g
,
gid
,
q
,
t
,
p
,
d
,
s
,
lay
,
spl
,
api_name
in
product
(
sorted
(
language_flag
.
keys
()),
sorted
(
matrix_flag
.
keys
()),
sorted
(
gpu_flag
.
keys
()),
sorted
(
gpu_id_flag
.
keys
()),
...
...
@@ -73,7 +78,8 @@ for lang, m, g, gid, q, t, p, d, s, lay, spl in product(sorted(language_flag.key
sorted
(
domain_flag
.
keys
()),
sorted
(
solver_flag
.
keys
()),
sorted
(
layout_flag
.
keys
()),
sorted
(
split_comm_flag
.
keys
())):
sorted
(
split_comm_flag
.
keys
()),
sorted
(
explicit_name_flag
.
keys
())):
if
gid
==
1
and
(
g
==
"GPU_OFF"
):
...
...
@@ -197,7 +203,7 @@ for lang, m, g, gid, q, t, p, d, s, lay, spl in product(sorted(language_flag.key
raise
Exception
(
"Oh no!"
)
endifs
+=
1
name
=
"validate{langsuffix}_{d}_{p}_{t}_{s}{kernelsuffix}_{gpusuffix}{gpuidsuffix}{qrsuffix}{m}{layoutsuffix}{spl}"
.
format
(
name
=
"validate{langsuffix}_{d}_{p}_{t}_{s}{kernelsuffix}_{gpusuffix}{gpuidsuffix}{qrsuffix}{m}{layoutsuffix}{spl}
{api_name}
"
.
format
(
langsuffix
=
language_flag
[
lang
],
d
=
d
,
p
=
p
,
t
=
t
,
s
=
s
,
kernelsuffix
=
""
if
kernel
==
"nokernel"
else
"_"
+
kernel
,
...
...
@@ -206,7 +212,8 @@ for lang, m, g, gid, q, t, p, d, s, lay, spl in product(sorted(language_flag.key
qrsuffix
=
"qr_"
if
q
else
""
,
m
=
m
,
layoutsuffix
=
"_all_layouts"
if
lay
==
"all_layouts"
else
""
,
spl
=
"_split_comm_myself"
if
spl
==
"myself"
else
""
)
spl
=
"_split_comm_myself"
if
spl
==
"myself"
else
""
,
api_name
=
"_explicit"
if
api_name
==
"explicit"
else
""
)
if
(
m
==
"analytic"
):
print
(
"if BUILD_FUGAKU"
)
...
...
src/elpa_api.F90
View file @
ec73b20b
...
...
@@ -119,20 +119,58 @@ module elpa_api
elpa_eigenvectors_all_host_arrays_dc
,
&
elpa_eigenvectors_all_host_arrays_fc
generic
,
public
::
eigenvectors_double
=>
&
!< method eigenvectors for solving the full eigenvalue problem
elpa_eigenvectors_all_host_arrays_d
!< the eigenvalues and (parts of) the eigenvectors are computed
generic
,
public
::
eigenvectors_float
=>
&
!< method eigenvectors for solving the full eigenvalue problem
elpa_eigenvectors_all_host_arrays_f
!< the eigenvalues and (parts of) the eigenvectors are computed
generic
,
public
::
eigenvectors_double_complex
=>
&
!< method eigenvectors for solving the full eigenvalue problem
elpa_eigenvectors_all_host_arrays_dc
!< the eigenvalues and (parts of) the eigenvectors are computed
generic
,
public
::
eigenvectors_float_complex
=>
&
!< method eigenvectors for solving the full eigenvalue problem
elpa_eigenvectors_all_host_arrays_fc
!< the eigenvalues and (parts of) the eigenvectors are computed
generic
,
public
::
eigenvalues
=>
&
!< method eigenvalues for solving the eigenvalue problem
elpa_eigenvalues_all_host_arrays_d
,
&
!< only the eigenvalues are computed
elpa_eigenvalues_all_host_arrays_f
,
&
!< for symmetric real valued / hermitian complex valued matrices
elpa_eigenvalues_all_host_arrays_dc
,
&
elpa_eigenvalues_all_host_arrays_fc
generic
,
public
::
eigenvalues_double
=>
&
!< method eigenvalues for solving the eigenvalue problem
elpa_eigenvalues_all_host_arrays_d
!< only the eigenvalues are computed
generic
,
public
::
eigenvalues_float
=>
&
!< method eigenvalues for solving the eigenvalue problem
elpa_eigenvalues_all_host_arrays_f
!< only the eigenvalues are computed
generic
,
public
::
eigenvalues_double_complex
=>
&
!< method eigenvalues for solving the eigenvalue problem
elpa_eigenvalues_all_host_arrays_dc
!< only the eigenvalues are computed
generic
,
public
::
eigenvalues_float_complex
=>
&
!< method eigenvalues for solving the eigenvalue problem
elpa_eigenvalues_all_host_arrays_fc
!< only the eigenvalues are computed
#ifdef HAVE_SKEWSYMMETRIC
generic
,
public
::
skew_eigenvectors
=>
&
!< method skew_eigenvectors for solving the full skew-symmetric eigenvalue problem
elpa_skew_eigenvectors_all_host_arrays_d
,
&
!< the eigenvalues and (parts of) the eigenvectors are computed
elpa_skew_eigenvectors_all_host_arrays_f
!< for symmetric real valued skew-symmetric matrices
generic
,
public
::
skew_eigenvectors_double
=>
&
!< method skew_eigenvectors for solving the full skew-symmetric eigenvalue problem
elpa_skew_eigenvectors_all_host_arrays_d
!< the eigenvalues and (parts of) the eigenvectors are computed
generic
,
public
::
skew_eigenvectors_float
=>
&
!< method skew_eigenvectors for solving the full skew-symmetric eigenvalue problem
elpa_skew_eigenvectors_all_host_arrays_f
!< the eigenvalues and (parts of) the eigenvectors are computed
generic
,
public
::
skew_eigenvalues
=>
&
!< method skew_eigenvalues for solving the skew-symmetric eigenvalue problem
elpa_skew_eigenvalues_all_host_arrays_d
,
&
!< only the eigenvalues are computed
elpa_skew_eigenvalues_all_host_arrays_f
!< for symmetric real valued skew-symmetric matrices
generic
,
public
::
skew_eigenvalues_double
=>
&
!< method skew_eigenvalues for solving the skew-symmetric eigenvalue problem
elpa_skew_eigenvalues_all_host_arrays_d
!< only the eigenvalues are computed
generic
,
public
::
skew_eigenvalues_float
=>
&
!< method skew_eigenvalues for solving the skew-symmetric eigenvalue problem
elpa_skew_eigenvalues_all_host_arrays_f
!< only the eigenvalues are computed
#endif
generic
,
public
::
generalized_eigenvectors
=>
&
!< method eigenvectors for solving the full generalized eigenvalue problem
...
...
@@ -141,9 +179,9 @@ module elpa_api
elpa_generalized_eigenvectors_dc
,
&
elpa_generalized_eigenvectors_fc
generic
,
public
::
generalized_eigenvalues
=>
&
!< method eigenvectors for solving the full generalized eigenvalue problem
elpa_generalized_eigenvalues_d
,
&
!< only the eigenvalues
elpa_generalized_eigenvalues_f
,
&
!< for symmetric real valued / hermitian complex valued matrices
generic
,
public
::
generalized_eigenvalues
=>
&
!< method eigenvectors for solving the full generalized eigenvalue problem
elpa_generalized_eigenvalues_d
,
&
!< only the eigenvalues
elpa_generalized_eigenvalues_f
,
&
!< for symmetric real valued / hermitian complex valued matrices
elpa_generalized_eigenvalues_dc
,
&
elpa_generalized_eigenvalues_fc
...
...
test/Fortran/test.F90
View file @
ec73b20b
...
...
@@ -795,9 +795,29 @@ program test
#elif TEST_SCALAPACK_PART
call
solve_scalapack_part
(
na
,
a
,
sc_desc
,
nev
,
ev
,
z
)
check_all_evals
=
.false.
! scalapack does not compute all eigenvectors
#else
call
e
%
eigenvectors
(
a
,
ev
,
z
,
error_elpa
)
#else /* TEST_SCALAPACK_PART */
#ifdef TEST_EXPLICIT_NAME
#if defined(TEST_REAL)
#if defined(TEST_DOUBLE)
call
e
%
eigenvectors_double
(
a
,
ev
,
z
,
error_elpa
)
#endif
#if defined(TEST_SINGLE)
call
e
%
eigenvectors_float
(
a
,
ev
,
z
,
error_elpa
)
#endif
#endif /* TEST_REAL */
#if definded(TEST_COMPLEX)
#if defined(TEST_DOUBLE)
call
e
%
eigenvectors_double_complex
(
a
,
ev
,
z
,
error_elpa
)
#endif
#if defined(TEST_SINGLE)
call
e
%
eigenvectors_float_complex
(
a
,
ev
,
z
,
error_elpa
)
#endif
#endif
#else /* TEST_EXPLICIT_NAME */
call
e
%
eigenvectors
(
a
,
ev
,
z
,
error_elpa
)
#endif /* TEST_EXPLICIT_NAME */
#endif /* TEST_SCALAPACK_PART */
#if TEST_QR_DECOMPOSITION == 1
call
e
%
timer_stop
(
"e%eigenvectors_qr()"
)
#else
...
...
@@ -807,7 +827,26 @@ program test
#ifdef TEST_EIGENVALUES
call
e
%
timer_start
(
"e%eigenvalues()"
)
#ifdef TEST_EXPLICIT_NAME
#if defined(TEST_REAL)
#if defined(TEST_DOUBLE)
call
e
%
eigenvalues_double
(
a
,
ev
,
error_elpa
)
#endif
#if defined(TEST_SINGLE)
call
e
%
eigenvalues_float
(
a
,
ev
,
error_elpa
)
#endif
#endif /* TEST_REAL */
#if definded(TEST_COMPLEX)
#if defined(TEST_DOUBLE)
call
e
%
eigenvalues_double_complex
(
a
,
ev
,
error_elpa
)
#endif
#if defined(TEST_SINGLE)
call
e
%
eigenvalues_float_complex
(
a
,
ev
,
error_elpa
)
#endif
#endif
#else /* TEST_EXPLICIT_NAME */
call
e
%
eigenvalues
(
a
,
ev
,
error_elpa
)
#endif /* TEST_EXPLICIT_NAME */
call
e
%
timer_stop
(
"e%eigenvalues()"
)
#endif
...
...
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