Commit 2d2f192b authored by Lorenz Huedepohl's avatar Lorenz Huedepohl

Hide member 'timer' from public API

This is a bit cumbersome, as it involves yet another abstract
intermediate type, but necessary due to language limitations.
parent 28854290
......@@ -37,6 +37,7 @@ noinst_LTLIBRARIES += libelpa@SUFFIX@_private.la
libelpa@SUFFIX@_private_la_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
libelpa@SUFFIX@_private_la_SOURCES = \
src/elpa_impl.F90 \
src/elpa_abstract_impl.F90 \
src/helpers/mod_precision.F90 \
src/helpers/mod_mpi.F90 \
src/helpers/mod_mpi_stubs.F90 \
......@@ -45,7 +46,6 @@ libelpa@SUFFIX@_private_la_SOURCES = \
src/elpa2/mod_pack_unpack_cpu.F90 \
src/elpa2/mod_compute_hh_trafo.F90 \
src/helpers/aligned_mem.F90 \
src/elpa1/elpa1_utilities.F90 \
src/elpa1/elpa1_compute_private.F90 \
src/elpa2/elpa2_determine_workload.F90 \
src/elpa2/elpa2_compute.F90 \
......@@ -121,7 +121,6 @@ endif
if HAVE_DETAILED_TIMINGS
libelpa@SUFFIX@_private_la_SOURCES += \
src/helpers/timer.F90 \
src/ftimings/ftimings.F90 \
src/ftimings/ftimings_type.F90 \
src/ftimings/ftimings_value.F90 \
......@@ -130,6 +129,12 @@ libelpa@SUFFIX@_private_la_SOURCES += \
src/ftimings/time.c \
src/ftimings/virtual_memory.c \
src/ftimings/papi.c
if ENABLE_LEGACY
libelpa@SUFFIX@_private_la_SOURCES += \
src/helpers/timer.F90
endif
else
libelpa@SUFFIX@_private_la_SOURCES += \
src/helpers/timer_dummy.F90
......@@ -551,7 +556,7 @@ noinst_LTLIBRARIES += libelpatest@SUFFIX@.la
libelpatest@SUFFIX@_la_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
libelpatest@SUFFIX@_la_SOURCES = \
test/shared/util.F90 \
test/shared/read_input_parameters.F90 \
test/shared/read_input_parameters.F90 \
test/shared/check_correctness.F90 \
test/shared/check_correctness_template.X90 \
test/shared/setup_mpi.F90 \
......
......@@ -49,8 +49,9 @@
! The ELPA public API
module elpa
use elpa_api
use elpa_constants
use elpa_api
use elpa_mpi
implicit none
public
......
......@@ -85,7 +85,6 @@ module elpa1_impl
use, intrinsic :: iso_c_binding
use elpa_utilities
use elpa1_auxiliary_impl
use elpa1_utilities
implicit none
......
......@@ -60,9 +60,9 @@
l_col, p_col, l_col_out, p_col_out, npc_0, npc_n, wantDebug, success)
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik), intent(in) :: na, nm, ldq, nqoff, nblk, matrixCols, mpi_comm_rows, &
mpi_comm_cols, npc_0, npc_n
integer(kind=ik), intent(in) :: l_col(na), p_col(na), l_col_out(na), p_col_out(na)
......@@ -796,9 +796,9 @@
&PRECISION&
&(obj, d1, dbase, ddiff, z, ev_scale_value, na1,i)
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik), intent(in) :: na1, i
real(kind=REAL_DATATYPE), intent(in) :: d1(:), dbase(:), ddiff(:), z(:)
......@@ -825,9 +825,9 @@
&PRECISION&
&(obj, idx_ev, nLength)
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik), intent(in) :: nLength
integer(kind=ik) :: idx_ev(nLength)
integer(kind=ik) :: i, nc, pc1, pc2, lc1, lc2, l_cols_out
......@@ -908,9 +908,9 @@
&PRECISION&
&(obj, col1, col2)
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik) :: col1, col2
integer(kind=ik) :: pc1, pc2, lc1, lc2
......@@ -964,9 +964,9 @@
! i.e. z(i) should be nonzero on exactly 1 processor column,
! otherways the results may be numerically different on different columns
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik) :: n
real(kind=REAL_DATATYPE) :: z(n)
real(kind=REAL_DATATYPE) :: tmp(n)
......@@ -1019,9 +1019,9 @@
&(obj, z, n)
! This routine calculates the global product of z.
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik) :: n
......@@ -1099,10 +1099,10 @@
! This is a test routine for checking if the eigenvalues are monotonically increasing.
! It is for debug purposes only, an error should never be triggered!
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik) :: n
real(kind=REAL_DATATYPE) :: d(n)
character*(*) :: text
......
......@@ -60,9 +60,9 @@ subroutine solve_tridi_&
mpi_comm_cols, wantDebug, success )
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik), intent(in) :: na, nev, ldq, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols
real(kind=REAL_DATATYPE), intent(inout) :: d(na), e(na)
#ifdef USE_ASSUMED_SIZE
......@@ -239,13 +239,13 @@ subroutine solve_tridi_&
&PRECISION &
(obj, np_off, nprocs, wantDebug, success)
use precision
use elpa_api
use elpa_abstract_impl
implicit none
! noff is always a multiple of nblk_ev
! nlen-noff is always > nblk_ev
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik) :: np_off, nprocs
integer(kind=ik) :: np1, np2, noff, nlen, nmid, n
#ifdef WITH_MPI
......@@ -352,9 +352,9 @@ subroutine solve_tridi_&
! with the divide and conquer method.
! Works best if the number of processor rows is a power of 2!
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik) :: na, nev, nqoff, ldq, nblk, matrixCols, mpi_comm_rows
real(kind=REAL_DATATYPE) :: d(na), e(na)
......@@ -576,9 +576,9 @@ subroutine solve_tridi_&
! Solves the symmetric, tridiagonal eigenvalue problem on a single processor.
! Takes precautions if DSTEDC fails or if the eigenvalues are not ordered correctly.
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik) :: nlen, ldq
real(kind=REAL_DATATYPE) :: d(nlen), e(nlen), q(ldq,nlen)
......
......@@ -63,13 +63,12 @@ function elpa_solve_evp_&
use cuda_functions
use mod_check_for_gpu
use iso_c_binding
use elpa_api
use elpa_abstract_impl
use elpa_mpi
use elpa1_compute
use elpa1_utilities, only : gpu_usage_via_environment_variable
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
real(kind=REAL_DATATYPE), intent(out) :: ev(obj%na)
#if REALCASE == 1
#ifdef USE_ASSUMED_SIZE
......@@ -132,11 +131,6 @@ function elpa_solve_evp_&
else
useGPU = .false.
endif
! if (obj%get("summary_timings") .eq. 1) then
! summary_timings = .true.
! else
! summary_timings = .false.
! endif
call obj%timer%start("mpi_communication")
......@@ -175,7 +169,7 @@ function elpa_solve_evp_&
endif
else
! check whether set by environment variable
do_useGPU = gpu_usage_via_environment_variable()
do_useGPU = obj%get("gpu") == 1
if (do_useGPU) then
if (check_for_gpu(my_pe,numberOfGPUDevices, wantDebug=wantDebug)) then
......
......@@ -60,9 +60,9 @@
&PRECISION&
&(obj, v,n,s)
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik) :: n
real(kind=REAL_DATATYPE) :: v(n),s
......@@ -74,10 +74,10 @@
&PRECISION&
&(obj, g_col, l_col, noff, nlen, my_prow, np_rows, nblk)
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
real(kind=REAL_DATATYPE) :: g_col(nlen), l_col(*) ! chnage this to proper 2d 1d matching ! remove assumed size
integer(kind=ik) :: noff, nlen, my_prow, np_rows, nblk
......@@ -155,10 +155,10 @@
!-------------------------------------------------------------------------------
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik) :: n, i
real(kind=REAL_DATATYPE) :: d(n), z(n), delta(n), rho, dlam
......@@ -259,9 +259,9 @@
! It also hasn't the special handling for numbers < 1.d-300 or > 1.d150
! since this would be expensive for the parallel implementation.
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
#if REALCASE == 1
real(kind=REAL_DATATYPE), intent(inout) :: alpha
#endif
......
......@@ -96,9 +96,9 @@
use cuda_functions
use iso_c_binding
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik), intent(in) :: na, nqc, lda, ldq, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols
#if REALCASE == 1
real(kind=REAL_DATATYPE), intent(in) :: tau(na)
......
......@@ -91,9 +91,9 @@
use cuda_functions
use iso_c_binding
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik), intent(in) :: na, lda, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols
logical, intent(in) :: useGPU
......
......@@ -47,10 +47,10 @@
use elpa_utilities
use elpa_mpi
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik) :: na, lda, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols
#if REALCASE == 1
#ifdef USE_ASSUMED_SIZE
......
......@@ -56,9 +56,9 @@
use elpa1_compute
use elpa_utilities
use elpa_mpi
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik) :: na, lda, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols
#if REALCASE == 1
......
......@@ -58,10 +58,10 @@
use elpa1_compute
use elpa_mpi
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
character*1 :: uplo_a, uplo_c
......
......@@ -78,10 +78,10 @@ subroutine elpa_reduce_add_vectors_&
use omp_lib
#endif
use elpa_mpi
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik), intent(in) :: ld_s, comm_s, ld_t, comm_t, nvr, nvc, nblk
MATH_DATATYPE(kind=C_DATATYPE_KIND), intent(in) :: vmat_s(ld_s,nvc)
MATH_DATATYPE(kind=C_DATATYPE_KIND), intent(inout) :: vmat_t(ld_t,nvc)
......
......@@ -62,10 +62,10 @@
&PRECISION&
&_impl
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t):: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik) :: na, nev, ldq, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols
real(kind=REAL_DATATYPE) :: d(obj%na), e(obj%na)
#ifdef USE_ASSUMED_SIZE
......
......@@ -77,14 +77,14 @@ subroutine elpa_transpose_vectors_&
!
!-------------------------------------------------------------------------------
use precision
use elpa_api
use elpa_abstract_impl
#ifdef WITH_OPENMP
use omp_lib
#endif
use elpa_mpi
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik), intent(in) :: ld_s, comm_s, ld_t, comm_t, nvs, nvr, nvc, nblk
MATH_DATATYPE(kind=C_DATATYPE_KIND), intent(in) :: vmat_s(ld_s,nvc)
MATH_DATATYPE(kind=C_DATATYPE_KIND), intent(inout):: vmat_t(ld_t,nvc)
......
......@@ -104,6 +104,8 @@ function elpa_solve_evp_&
integer(kind=c_int) :: successInternal
class(elpa_t), pointer :: e
print *, "timer%start"
call timer%start("elpa_solve_evp_&
&MATH_DATATYPE&
&_1stage_&
......@@ -163,9 +165,9 @@ function elpa_solve_evp_&
endif
endif
call e%set("summary_timings", 1,successInternal)
call e%set("print_flops", 1,successInternal)
if (successInternal .ne. ELPA_OK) then
print *, "Cannot set summary_timings"
print *, "Cannot set print_flops"
success = .false.
return
endif
......@@ -186,6 +188,7 @@ function elpa_solve_evp_&
call elpa_uninit()
print *, "timer%stop"
call timer%stop("elpa_solve_evp_&
&MATH_DATATYPE&
&_1stage_&
......
......@@ -68,7 +68,7 @@
kernel)
use precision
use elpa_api
use elpa_abstract_impl
use iso_c_binding
#if REALCASE == 1
......@@ -108,7 +108,7 @@
use elpa_generated_fortran_interfaces
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
real(kind=c_double), intent(inout) :: kernel_time ! MPI_WTIME always needs double
integer(kind=lik) :: kernel_flops
integer(kind=ik), intent(in) :: nbw, max_blk_size
......
......@@ -109,10 +109,10 @@
use omp_lib
#endif
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik) :: na, lda, nblk, nbw, matrixCols, numBlocks, mpi_comm_rows, mpi_comm_cols
#if REALCASE == 1
......
......@@ -99,12 +99,12 @@
! communicator
! MPI-Communicator for the total processor set
!-------------------------------------------------------------------------------
use elpa_api
use elpa_abstract_impl
use elpa2_workload
use precision
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik), intent(in) :: na, nb, nbCol, nb2, nb2Col, communicator
real(kind=REAL_DATATYPE), intent(inout) :: ab(2*nb,nbCol) ! removed assumed size
real(kind=REAL_DATATYPE), intent(inout) :: ab2(2*nb2,nb2Col) ! removed assumed size
......@@ -455,10 +455,10 @@
&PRECISION&
&(obj, n, nb, W, Y, tau, mem, lda)
use elpa_api
use elpa_abstract_impl
use precision
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik), intent(in) :: n !length of householder-vectors
integer(kind=ik), intent(in) :: nb !number of householder-vectors
integer(kind=ik), intent(in) :: lda !leading dimension of Y and W
......@@ -487,9 +487,9 @@
&(obj, n, m, nb, A, lda, W, Y, mem, lda2)
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik), intent(in) :: n !width of the matrix A
integer(kind=ik), intent(in) :: m !length of matrix W and Y
integer(kind=ik), intent(in) :: nb !width of matrix W and Y
......@@ -513,9 +513,9 @@
&(obj, n, m, nb, A, lda, W, Y, mem, lda2)
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik), intent(in) :: n !height of the matrix A
integer(kind=ik), intent(in) :: m !length of matrix W and Y
integer(kind=ik), intent(in) :: nb !width of matrix W and Y
......@@ -540,10 +540,10 @@
&PRECISION&
&(obj, n, nb, A, lda, W, Y, mem, mem2, lda2)
use elpa_api
use elpa_abstract_impl
use precision
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik), intent(in) :: n !width/heigth of the matrix A; length of matrix W and Y
integer(kind=ik), intent(in) :: nb !width of matrix W and Y
integer(kind=ik), intent(in) :: lda !leading dimension of A
......
......@@ -71,11 +71,11 @@ module elpa2_workload
contains
subroutine determine_workload(obj, na, nb, nprocs, limits)
use elpa_api
use elpa_abstract_impl
use precision
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik), intent(in) :: na, nb, nprocs
integer(kind=ik), intent(out) :: limits(0:nprocs)
......@@ -109,9 +109,9 @@ module elpa2_workload
subroutine divide_band(obj, nblocks_total, n_pes, block_limits)
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik), intent(in) :: nblocks_total ! total number of blocks in band
integer(kind=ik), intent(in) :: n_pes ! number of PEs for division
integer(kind=ik), intent(out) :: block_limits(0:n_pes)
......
......@@ -59,10 +59,10 @@
! herm_matrix_allreduce: Does an mpi_allreduce for a hermitian matrix A.
! On entry, only the upper half of A needs to be set
! On exit, the complete matrix is set
use elpa_api
use elpa_abstract_impl
use precision
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik) :: n, lda, ldb, comm
complex(kind=COMPLEX_DATATYPE) :: a(lda,ldb)
......
......@@ -136,7 +136,7 @@ program print_available_elpa2_kernels
contains
subroutine print_options(e, option_name)
class(elpa_t) :: e
class(elpa_t), intent(inout) :: e
character(len=*), intent(in) :: option_name
integer :: i, option
......
......@@ -60,10 +60,10 @@
! On entry, only the upper half of A needs to be set
! On exit, the complete matrix is set
!-------------------------------------------------------------------------------
use elpa_api
use elpa_abstract_impl
use precision
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik) :: n, lda, ldb, comm
#ifdef USE_ASSUMED_SIZE
real(kind=REAL_DATATYPE) :: a(lda,*)
......
......@@ -56,9 +56,8 @@
&PRECISION&
&_impl (obj, a, ev, q) result(success)
use elpa_api
use elpa_abstract_impl
use elpa_utilities
use elpa1_utilities, only : gpu_usage_via_environment_variable
use elpa1_compute
use elpa2_compute
use elpa_mpi
......@@ -66,7 +65,7 @@
use mod_check_for_gpu
use iso_c_binding
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
logical :: useGPU
#if REALCASE == 1
logical :: useQR
......@@ -149,11 +148,6 @@
mpi_comm_cols = obj%get("mpi_comm_cols")
mpi_comm_all = obj%get("mpi_comm_parent")
! if (obj%get("summary_timings") .eq. 1) then
! summary_timings = .true.
! else
! summary_timings = .false.
! endif
if (obj%get("gpu") .eq. 1) then
useGPU = .true.
else
......@@ -221,7 +215,7 @@
endif
else
! check whether set by environment variable
do_useGPU = gpu_usage_via_environment_variable()
do_useGPU = obj%get("gpu") == 1
if (do_useGPU) then
if (check_for_gpu(my_pe,numberOfGPUDevices, wantDebug=wantDebug)) then
......@@ -385,7 +379,7 @@
(obj, na, nev, nblk, nbw, q, &
q_dev, &
ldq, matrixCols, hh_trans, mpi_comm_rows, mpi_comm_cols, wantDebug, do_useGPU_trans_ev_tridi, &
summary_timings=.false., success=success, kernel=kernel)
success=success, kernel=kernel)
if (.not.(success)) return
......
......@@ -100,10 +100,10 @@
use precision
use cuda_functions
use iso_c_binding
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
logical, intent(in) :: useGPU
#if REALCASE == 1
logical, intent(in) :: useQR
......
......@@ -57,7 +57,7 @@
&_&
&PRECISION &
(obj, na, nev, nblk, nbw, q, q_dev, ldq, matrixCols, &
hh_trans, mpi_comm_rows, mpi_comm_cols, wantDebug, useGPU, summary_timings, success, &
hh_trans, mpi_comm_rows, mpi_comm_cols, wantDebug, useGPU, success, &
kernel)
!-------------------------------------------------------------------------------
......@@ -88,7 +88,7 @@
! MPI-Communicators for rows/columns/both
!
!-------------------------------------------------------------------------------
use elpa_api
use elpa_abstract_impl
use elpa2_workload
use pack_unpack_cpu
use pack_unpack_gpu
......@@ -97,7 +97,7 @@
use precision
use iso_c_binding
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
logical, intent(in) :: useGPU
integer(kind=ik), intent(in) :: kernel
......@@ -263,8 +263,6 @@
&_&
&MATH_DATATYPE
logical :: summary_timings
call obj%timer%start("trans_ev_tridi_to_band_&
&MATH_DATATYPE&
&" // &
......@@ -2580,7 +2578,7 @@
#else /* WITH_MPI */
if (my_prow==0 .and. my_pcol==0 .and. summary_timings) &
if (my_prow==0 .and. my_pcol==0 .and. obj%get("print_flops") == 1) &
write(error_unit,'(" Kernel time:",f10.3," MFlops: ",es12.5)') kernel_time, kernel_flops/kernel_time*1.d-6
#endif /* WITH_MPI */
......
......@@ -93,14 +93,14 @@
! communicator
! MPI-Communicator for the total processor set
!-------------------------------------------------------------------------------
use elpa_api
use elpa_abstract_impl
use elpa2_workload
use precision
use iso_c_binding
use redist
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
logical, intent(in) :: useGPU
integer(kind=ik), intent(in) :: na, nb, nblk, lda, matrixCols, mpi_comm_rows, mpi_comm_cols, communicator
#if REALCASE == 1
......
......@@ -64,10 +64,10 @@
subroutine single_hh_trafo_complex_generic_single(obj, q, hh, nb, nq, ldq)
#endif
use precision
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj
integer(kind=ik), intent(in) :: nb, nq, ldq
#ifdef USE_ASSUMED_SIZE
complex(kind=COMPLEX_DATATYPE), intent(inout) :: q(ldq,*)
......
......@@ -66,10 +66,10 @@
use precision
use iso_c_binding
use elpa_api
use elpa_abstract_impl
implicit none
class(elpa_t) :: obj
class(elpa_abstract_impl_t), intent(inout) :: obj