From 83ac986fc21de444c4fe53a85c620fe547f2726c Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Wed, 18 May 2016 12:29:16 +0200 Subject: [PATCH] Implement Debian patch for QR decomposition and modify it The QR decomposition test program can now called with parameters for matrix size, nev, and block size. This closses issue #20 --- Makefile.am | 6 ++--- src/elpa2.F90 | 2 +- src/elpa_qr/elpa_pdlarfb.F90 | 1 + ..._real2_default_kernel_qr_decomposition.F90 | 23 ++++++++++++------- 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/Makefile.am b/Makefile.am index cc10d182..f4d6be98 100644 --- a/Makefile.am +++ b/Makefile.am @@ -317,9 +317,9 @@ TESTS = $(check_SCRIPTS) chmod +x $@ ## this one does not want any arguments -elpa2_test_real_default_kernel_qr_decomposition@SUFFIX@.sh: - echo '$(wrapper)./elpa2_test_real_default_kernel_qr_decomposition@SUFFIX@' > $@ - chmod +x $@ +#elpa2_test_real_default_kernel_qr_decomposition@SUFFIX@.sh: +# echo '$(wrapper)./elpa2_test_real_default_kernel_qr_decomposition@SUFFIX@' > $@ +# chmod +x $@ #elpa2_test_real_default_kernel_qr_decomposition_single_precision@SUFFIX@.sh: # echo '$(wrapper)./elpa2_test_real_default_kernel_qr_decomposition_single_precision@SUFFIX@' > $@ diff --git a/src/elpa2.F90 b/src/elpa2.F90 index 6a9f598e..1f28fa3e 100644 --- a/src/elpa2.F90 +++ b/src/elpa2.F90 @@ -193,7 +193,7 @@ function solve_evp_real_2stage(na, nev, a, lda, ev, q, ldq, nblk, & endif if (useQRActual) then - if (mod(na,nblk) .ne. 0) then + if (mod(na,2) .ne. 0) then if (wantDebug) then write(error_unit,*) "solve_evp_real_2stage: QR-decomposition: blocksize does not fit with matrixsize" endif diff --git a/src/elpa_qr/elpa_pdlarfb.F90 b/src/elpa_qr/elpa_pdlarfb.F90 index b1637ee0..1012d5f2 100644 --- a/src/elpa_qr/elpa_pdlarfb.F90 +++ b/src/elpa_qr/elpa_pdlarfb.F90 @@ -581,6 +581,7 @@ subroutine qr_tmerge_pdlarfb_1dcomm(m,mb,n,oldk,k,v,ldv,t,ldt,a,lda,baseidx,rev, else ! do not calculate parts for T merge as there is nothing to merge + mergeoffset = 0 updateoffset = 0 tgenoffset = updateoffset + updatesize diff --git a/test/fortran_test_programs/test_real2_default_kernel_qr_decomposition.F90 b/test/fortran_test_programs/test_real2_default_kernel_qr_decomposition.F90 index c5c665a0..3c1c30c1 100644 --- a/test/fortran_test_programs/test_real2_default_kernel_qr_decomposition.F90 +++ b/test/fortran_test_programs/test_real2_default_kernel_qr_decomposition.F90 @@ -136,19 +136,26 @@ program test_real2 success = .true. !write_to_file = .false. + call read_input_parameters(na, nev, nblk, write_to_file) - if (COMMAND_ARGUMENT_COUNT() /= 0) then - write(error_unit,*) "This program does not support any command-line arguments" - stop 1 - endif + !if (COMMAND_ARGUMENT_COUNT() /= 0) then + ! write(error_unit,*) "This program does not support any command-line arguments" + ! stop 1 + !endif ! override nblk - nblk = 2 - na = 4000 - nev = 1500 + ! nblk = 2 + ! na = 4000 + ! nev = 1500 + + ! make sure na, nbl is even + if (mod(nblk,2 ) .ne. 0) then + nblk = nblk - 1 + endif + ! make sure na is even - if (mod(na,nblk) .ne. 0) then + if (mod(na,2) .ne. 0) then na = na - 1 endif ! make sure na is at least 34 -- GitLab