Commit ec73b20b authored by Andreas Marek's avatar Andreas Marek
Browse files

Add routines with explicit name to API

parent dc1824de
......@@ -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")
......
......@@ -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
......
......@@ -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
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment