Commit 124fb0d9 authored by Andreas Marek's avatar Andreas Marek

Max stored rows tunable

parent ad0947e2
...@@ -99,17 +99,17 @@ ...@@ -99,17 +99,17 @@
use elpa_abstract_impl use elpa_abstract_impl
implicit none implicit none
#include "../general/precision_kinds.F90" #include "../general/precision_kinds.F90"
class(elpa_abstract_impl_t), intent(inout) :: 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 integer(kind=ik), intent(in) :: na, nqc, lda, ldq, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols
MATH_DATATYPE(kind=rck), intent(in) :: tau(na) MATH_DATATYPE(kind=rck), intent(in) :: tau(na)
#ifdef USE_ASSUMED_SIZE #ifdef USE_ASSUMED_SIZE
MATH_DATATYPE(kind=rck), intent(inout) :: a_mat(lda,*), q_mat(ldq,*) MATH_DATATYPE(kind=rck), intent(inout) :: a_mat(lda,*), q_mat(ldq,*)
#else #else
MATH_DATATYPE(kind=rck), intent(inout) :: a_mat(lda,matrixCols), q_mat(ldq,matrixCols) MATH_DATATYPE(kind=rck), intent(inout) :: a_mat(lda,matrixCols), q_mat(ldq,matrixCols)
#endif #endif
logical, intent(in) :: useGPU logical, intent(in) :: useGPU
integer(kind=ik) :: max_stored_rows integer(kind=ik) :: max_stored_rows, max_stored_rows_fac
integer(kind=ik) :: my_prow, my_pcol, np_rows, np_cols, mpierr integer(kind=ik) :: my_prow, my_pcol, np_rows, np_cols, mpierr
integer(kind=ik) :: totalblocks, max_blocks_row, max_blocks_col, max_local_rows, max_local_cols integer(kind=ik) :: totalblocks, max_blocks_row, max_blocks_col, max_local_rows, max_local_cols
...@@ -117,8 +117,8 @@ ...@@ -117,8 +117,8 @@
integer(kind=ik) :: istep, n, nc, ic, ics, ice, nb, cur_pcol integer(kind=ik) :: istep, n, nc, ic, ics, ice, nb, cur_pcol
integer(kind=ik) :: hvn_ubnd, hvm_ubnd integer(kind=ik) :: hvn_ubnd, hvm_ubnd
MATH_DATATYPE(kind=rck), allocatable :: tmp1(:), tmp2(:), hvb(:), hvm(:,:) MATH_DATATYPE(kind=rck), allocatable :: tmp1(:), tmp2(:), hvb(:), hvm(:,:)
MATH_DATATYPE(kind=rck), allocatable :: tmat(:,:), h1(:), h2(:), hvm1(:) MATH_DATATYPE(kind=rck), allocatable :: tmat(:,:), h1(:), h2(:), hvm1(:)
integer(kind=ik) :: istat integer(kind=ik) :: istat
character(200) :: errorMessage character(200) :: errorMessage
...@@ -126,10 +126,11 @@ ...@@ -126,10 +126,11 @@
integer(kind=C_intptr_T) :: q_dev, tmp_dev, hvm_dev, tmat_dev integer(kind=C_intptr_T) :: q_dev, tmp_dev, hvm_dev, tmat_dev
logical :: successCUDA logical :: successCUDA
integer(kind=c_intptr_t), parameter :: size_of_datatype = size_of_& integer(kind=c_intptr_t), parameter :: size_of_datatype = size_of_&
&PRECISION& &PRECISION&
&_& &_&
&MATH_DATATYPE &MATH_DATATYPE
integer(kind=ik) :: error
if(useGPU) then if(useGPU) then
gpuString = "_gpu" gpuString = "_gpu"
else else
...@@ -149,6 +150,8 @@ ...@@ -149,6 +150,8 @@
call mpi_comm_size(mpi_comm_cols,np_cols,mpierr) call mpi_comm_size(mpi_comm_cols,np_cols,mpierr)
call obj%timer%stop("mpi_communication") call obj%timer%stop("mpi_communication")
call obj%get("max_stored_rows",max_stored_rows_fac, error)
totalblocks = (na-1)/nblk + 1 totalblocks = (na-1)/nblk + 1
max_blocks_row = (totalblocks-1)/np_rows + 1 max_blocks_row = (totalblocks-1)/np_rows + 1
max_blocks_col = ((nqc-1)/nblk)/np_cols + 1 ! Columns of q_mat! max_blocks_col = ((nqc-1)/nblk)/np_cols + 1 ! Columns of q_mat!
...@@ -156,7 +159,7 @@ ...@@ -156,7 +159,7 @@
max_local_rows = max_blocks_row*nblk max_local_rows = max_blocks_row*nblk
max_local_cols = max_blocks_col*nblk max_local_cols = max_blocks_col*nblk
max_stored_rows = (63/nblk+1)*nblk max_stored_rows = (max_stored_rows_fac/nblk+1)*nblk
allocate(tmat(max_stored_rows,max_stored_rows), stat=istat, errmsg=errorMessage) allocate(tmat(max_stored_rows,max_stored_rows), stat=istat, errmsg=errorMessage)
call check_alloc("trans_ev_& call check_alloc("trans_ev_&
......
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