Skip to content

Commit

Permalink
Conditionally rely on PARALLEL WORKSHARE (cp2k#857).
Browse files Browse the repository at this point in the history
  • Loading branch information
hfp committed Oct 16, 2024
1 parent b44599d commit a2e4aaf
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 27 deletions.
10 changes: 5 additions & 5 deletions src/data/dbcsr_ptr_util.F
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ MODULE dbcsr_ptr_util
mp_deallocate
#include "base/dbcsr_base_uses.f90"

!$ USE OMP_LIB, ONLY: omp_get_max_threads, omp_get_thread_num, omp_get_num_threads
!$ USE OMP_LIB, ONLY: omp_in_parallel

IMPLICIT NONE

Expand Down Expand Up @@ -297,11 +297,11 @@ SUBROUTINE mem_copy_${nametype1}$ (dst, src, n)
${type1}$, DIMENSION(1:n), INTENT(IN) :: src
!! source memory
#if !defined(__DBCSR_DISABLE_WORKSHARE)
!$OMP PARALLEL WORKSHARE DEFAULT(none) SHARED(dst,src)
!$OMP PARALLEL WORKSHARE IF(.NOT. omp_in_parallel()) DEFAULT(none) SHARED(dst,src)
#endif
dst(:) = src(:)
#if !defined(__DBCSR_DISABLE_WORKSHARE)
!$OMP END PARALLEL WORKSHARE
!$OMP END PARALLEL WORKSHARE
#endif
END SUBROUTINE mem_copy_${nametype1}$

Expand All @@ -313,11 +313,11 @@ SUBROUTINE mem_zero_${nametype1}$ (dst, n)
${type1}$, DIMENSION(1:n), INTENT(OUT) :: dst
!! destination memory
#if !defined(__DBCSR_DISABLE_WORKSHARE)
!$OMP PARALLEL WORKSHARE DEFAULT(none) SHARED(dst)
!$OMP PARALLEL IF(.NOT. omp_in_parallel()) WORKSHARE DEFAULT(none) SHARED(dst)
#endif
dst(:) = ${zero1}$
#if !defined(__DBCSR_DISABLE_WORKSHARE)
!$OMP END PARALLEL WORKSHARE
!$OMP END PARALLEL WORKSHARE
#endif
END SUBROUTINE mem_zero_${nametype1}$

Expand Down
6 changes: 4 additions & 2 deletions src/mpi/dbcsr_mpiwrap.F
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,8 @@ MODULE dbcsr_mpiwrap
#define MPI_STATUS_EXTRACT(X) (X)
#endif

!$ USE OMP_LIB, ONLY: omp_in_parallel

IMPLICIT NONE
PRIVATE

Expand Down Expand Up @@ -5183,11 +5185,11 @@ SUBROUTINE mp_rget_${nametype1}$v(base, source, win, win_data, myproc, disp, req
#endif
IF (do_local_copy) THEN
#if !defined(__DBCSR_DISABLE_WORKSHARE)
!$OMP PARALLEL WORKSHARE DEFAULT(none) SHARED(base,win_data,disp_aint,len)
!$OMP PARALLEL IF(.NOT. omp_in_parallel()) WORKSHARE DEFAULT(none) SHARED(base,win_data,disp_aint,len)
#endif
base(:) = win_data(disp_aint + 1:disp_aint + len)
#if !defined(__DBCSR_DISABLE_WORKSHARE)
!$OMP END PARALLEL WORKSHARE
!$OMP END PARALLEL WORKSHARE
#endif
request = mp_request_null
ierr = 0
Expand Down
27 changes: 7 additions & 20 deletions src/ops/dbcsr_operations.F
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ MODULE dbcsr_operations
mp_sum
#include "base/dbcsr_base_uses.f90"

!$ USE OMP_LIB, ONLY: omp_get_max_threads, omp_get_thread_num, omp_get_num_threads
!$ USE OMP_LIB, ONLY: omp_get_thread_num, omp_get_num_threads, omp_in_parallel

IMPLICIT NONE

Expand Down Expand Up @@ -315,35 +315,22 @@ SUBROUTINE dbcsr_zero(matrix_a)
INTEGER :: handle

CALL timeset(routineN, handle)
#if !defined(__DBCSR_DISABLE_WORKSHARE)
!$OMP PARALLEL IF(.NOT. omp_in_parallel()) WORKSHARE DEFAULT(NONE) SHARED(matrix_a)
#endif
SELECT CASE (dbcsr_get_data_type(matrix_a))
#if defined(__DBCSR_DISABLE_WORKSHARE)
CASE (dbcsr_type_complex_4)
matrix_a%data_area%d%c_sp = (0.0, 0.0)
CASE (dbcsr_type_complex_8)
matrix_a%data_area%d%c_dp = (0.0_dp, 0.0_dp)
CASE (dbcsr_type_real_4)
matrix_a%data_area%d%r_sp = 0.0
CASE (dbcsr_type_real_8)
matrix_a%data_area%d%r_dp = 0.0_dp
#else
CASE (dbcsr_type_complex_4)
!$OMP PARALLEL WORKSHARE DEFAULT(NONE), SHARED(matrix_a)
matrix_a%data_area%d%c_sp = (0.0, 0.0)
!$OMP END PARALLEL WORKSHARE
CASE (dbcsr_type_complex_8)
!$OMP PARALLEL WORKSHARE DEFAULT(NONE), SHARED(matrix_a)
matrix_a%data_area%d%c_dp = (0.0_dp, 0.0_dp)
!$OMP END PARALLEL WORKSHARE
CASE (dbcsr_type_real_4)
!$OMP PARALLEL WORKSHARE DEFAULT(NONE), SHARED(matrix_a)
matrix_a%data_area%d%r_sp = 0.0
!$OMP END PARALLEL WORKSHARE
CASE (dbcsr_type_real_8)
!$OMP PARALLEL WORKSHARE DEFAULT(NONE), SHARED(matrix_a)
matrix_a%data_area%d%r_dp = 0.0_dp
!$OMP END PARALLEL WORKSHARE
#endif
END SELECT
#if !defined(__DBCSR_DISABLE_WORKSHARE)
!$OMP END PARALLEL WORKSHARE
#endif
CALL timestop(handle)
END SUBROUTINE dbcsr_zero

Expand Down

0 comments on commit a2e4aaf

Please sign in to comment.