Skip to content

Commit 9834955

Browse files
committed
add support for __ELPA3 (elpa-2015.11.001) (Hans, Vedran).
svn-origin-rev: 16351
1 parent e42561d commit 9834955

4 files changed

Lines changed: 27 additions & 17 deletions

File tree

src/cp2k_info.F

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,10 @@ FUNCTION cp2k_flags() RESULT(flags)
113113
#endif
114114
#if defined(__ELPA)
115115
flags=TRIM(flags)//" elpa"
116-
#endif
117-
#if defined(__ELPA2)
116+
#elif defined(__ELPA2)
118117
flags=TRIM(flags)//" elpa2"
118+
#elif defined(__ELPA3)
119+
flags=TRIM(flags)//" elpa3"
119120
#endif
120121
#if defined(__parallel)
121122
flags=TRIM(flags)//" parallel"

src/fm/cp_fm_diag.F

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ MODULE cp_fm_diag
2828
cp_fm_upper_to_full
2929
USE cp_fm_struct, ONLY: cp_fm_struct_create,&
3030
cp_fm_struct_release,&
31-
cp_fm_struct_type
31+
cp_fm_struct_type,&
32+
cp_fm_struct_get
3233
USE cp_fm_types, ONLY: cp_fm_create,&
3334
cp_fm_release,&
3435
cp_fm_get_info,&
@@ -52,7 +53,7 @@ MODULE cp_fm_diag
5253
ieee_all
5354
#endif
5455

55-
#if defined (__ELPA) || defined(__ELPA2)
56+
#if defined (__ELPA) || defined(__ELPA2) || defined(__ELPA3)
5657
USE ELPA2, ONLY: solve_evp_real_2stage
5758
#endif
5859

@@ -111,7 +112,7 @@ SUBROUTINE diag_init(diag_lib,switched,k_elpa)
111112
IF(try_library) THEN
112113
IF(diag_lib.EQ."ELPA") THEN
113114

114-
#if defined (__ELPA) || defined (__ELPA2)
115+
#if defined (__ELPA) || defined (__ELPA2) || defined (__ELPA3)
115116
diag_type = 3
116117
#else
117118
! ELPA library not linked, switch to SL
@@ -919,18 +920,19 @@ SUBROUTINE cp_fm_elpa(matrix,eigenvectors,eigenvalues)
919920
routineP = moduleN//':'//routineN
920921

921922
INTEGER :: handle
922-
#if defined(__SCALAPACK) && (defined(__ELPA) || defined (__ELPA2))
923+
#if defined(__SCALAPACK) && (defined(__ELPA) || defined (__ELPA2) || defined(__ELPA3))
923924
INTEGER :: comm_col, comm_row, group, &
924-
mypcol, &
925-
myprow, n, n_rows, nblk, neig
925+
mypcol, myprow, n, &
926+
n_rows, n_cols, &
927+
nblk, neig
926928
LOGICAL :: success
927929
REAL(KIND=dp), DIMENSION(:), POINTER :: eval
928930
REAL(KIND=dp), DIMENSION(:, :), POINTER :: m, v
929931
TYPE(cp_blacs_env_type), POINTER :: context
930932
#endif
931933

932934
CALL timeset(routineN,handle)
933-
#if defined(__SCALAPACK) && (defined(__ELPA) || defined (__ELPA2))
935+
#if defined(__SCALAPACK) && (defined(__ELPA) || defined (__ELPA2) || defined (__ELPA3))
934936

935937
success = .TRUE.
936938

@@ -953,23 +955,29 @@ SUBROUTINE cp_fm_elpa(matrix,eigenvectors,eigenvalues)
953955
! elpa needs the full matrix
954956
CALL cp_fm_upper_to_full(matrix,eigenvectors)
955957

956-
n_rows = matrix%matrix_struct%local_leading_dimension
957-
nblk = matrix%matrix_struct%nrow_block
958+
CALL cp_fm_struct_get(matrix%matrix_struct,&
959+
local_leading_dimension=n_rows,&
960+
ncol_local=n_cols,&
961+
nrow_block=nblk)
962+
958963
neig = SIZE(eigenvalues,1)
959964
! the full eigenvalues vector is needed
960965
ALLOCATE(eval(n))
961966

962967
! Calculate eigenvalues/eigenvectors
963968
#if defined (__ELPA)
964969
CALL solve_evp_real_2stage(n,neig,m,n_rows,eval,v,n_rows,nblk,comm_row,comm_col,group)
965-
966-
#else
970+
#elif defined (__ELPA2)
967971
success = solve_evp_real_2stage(n,neig,m,n_rows,eval,v,n_rows,nblk,comm_row,comm_col,group,&
968972
THIS_REAL_ELPA_KERNEL_API=kernel_type,useQR=.FALSE.)
969-
IF(.NOT.success)&
970-
CPABORT("ELPA failed to diagonalize a matrix")
973+
#else
974+
success = solve_evp_real_2stage(n,neig,m,n_rows,eval,v,n_rows,nblk,n_cols,comm_row,comm_col,group,&
975+
THIS_REAL_ELPA_KERNEL_API=kernel_type,useQR=.FALSE.)
971976
#endif
972977

978+
IF(.NOT.success)&
979+
CPABORT("ELPA failed to diagonalize a matrix")
980+
973981
eigenvalues(1:neig) = eval(1:neig)
974982

975983
DEALLOCATE(eval)

tools/toolchain/checksums.sha256

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
b58694e545d51cde5756a894f53107e3d9e469360e1d92e7f6892b55ebc0bebf *cmake-3.1.1.tar.gz
44
d4a028fddb64a7c1454f08b930525cce0207893c6c770cb7bf92ab6f5d44bd78 *elpa-2013.11.008.tar.gz
55
f45f8aa78c8fbe6612dc0509a6c8b9ecfc09d1e558680eecec83ada24a931db3 *elpa-2015.05.001.tar.gz
6+
81c08a7f5e6dfbd63251e610b64d455bafa5a80062ad75f150421a2933ba3814 *elpa-2015.11.001.tar.gz
67
8f0cde90929bc05587c3368d2f15cd0530a60b8a9912a8e2979a72dbe5af0982 *fftw-3.3.4.tar.gz
78
c6e6b2b5958a3670acf727b2aed43f16a68ece6cf87eb6de489e90e12a3da4a6 *hwloc-1.11.0.tar.gz
89
9ad8f0d3f3fb5521db49f2dd716463b8fb2b6bc9dc386a9956b8c6144f726352 *lapack-3.5.0.tgz

tools/toolchain/install_cp2k_toolchain.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ lapack_ver=3.5.0
2525
libxc_ver=2.2.2
2626
libint_ver=1.1.4
2727
fftw_ver=3.3.4
28-
elpa_ver=2015.05.001
28+
elpa_ver=2015.11.001
2929
cmake_ver=3.1.1
3030
parmetis_ver=4.0.2
3131
scotch_ver=6.0.0
@@ -563,7 +563,7 @@ fi
563563
# Unfortunately, we need two separate include dirs for ELPA w/wo threading.
564564
P1="-I\$(CP2KINSTALLDIR)/include/elpa_openmp-${elpa_ver}/modules"
565565
P2="-I\$(CP2KINSTALLDIR)/include/elpa-${elpa_ver}/modules"
566-
DFLAGS="${DFLAGS} IF_MPI(-D__ELPA2 IF_OMP(${P1},${P2}),)"
566+
DFLAGS="${DFLAGS} IF_MPI(-D__ELPA3 IF_OMP(${P1},${P2}),)"
567567
LIBS="IF_MPI(IF_OMP(-lelpa_openmp,-lelpa),) ${LIBS}"
568568

569569

0 commit comments

Comments
 (0)