LCOV - code coverage report
Current view: | top level - dynamics/se/dycore - gbarrier_mod.F90 (source / functions) |  |  | Hit | Total | Coverage
Test: | coverage.info |  | Lines: | 9 | 12 | 75.0 %
Date: | 2025-01-13 21:54:50 |  | Functions: | 3 | 4 | 75.0 %

              Line data    Source code
           1             : module gbarrier_mod
           2             :   use gbarriertype_mod, only: gbarrier_t
           3             :   implicit none
           4             :
           5             :   integer, parameter :: LOG2MAX = 6
           6             :   integer, parameter :: MAXTHREADS = 64
           7             :
           8             :   public :: gbarrier_init
           9             :   public :: gbarrier_info
          10             :   public :: gbarrier
          11             :
          12             :   contains
          13             :
          14       29952 :     subroutine gbarrier_init(barrier, nthreads)
          15             :       type (gbarrier_t), intent(out) :: barrier
          16             :       integer, intent(in) :: nthreads
          17             :
          18             :       interface
          19             :         subroutine gbarrier_initialize(c_barrier, nthreads) bind(C)
          20             :           use, intrinsic :: ISO_C_Binding, only: C_ptr, C_int
          21             :           implicit none
          22             :
          23             :           type (C_ptr), intent(out) :: c_barrier
          24             :           integer (C_int), intent(in), value :: nthreads
          25             :         end subroutine gbarrier_initialize
          26             :       end interface
          27             :
          28       29952 :       call gbarrier_initialize(barrier%c_barrier, nthreads)
          29       29952 :     end subroutine gbarrier_init
          30             :
          31        8448 :     subroutine gbarrier_delete(barrier)
          32             :       type (gbarrier_t), intent(in) :: barrier
          33             :
          34             :       interface
          35             :         subroutine gbarrier_free(c_barrier) bind(C)
          36             :           use, intrinsic :: ISO_C_Binding, only: C_ptr
          37             :           implicit none
          38             :
          39             :           type (C_ptr), intent(in) :: c_barrier
          40             :         end subroutine gbarrier_free
          41             :       end interface
          42             :
          43        8448 :       call gbarrier_free(barrier%c_barrier)
          44        8448 :     end subroutine gbarrier_delete
          45             :
          46           0 :     subroutine gbarrier_info(barrier)
          47             :       type (gbarrier_t), intent(in) :: barrier
          48             :
          49             :       interface
          50             :         subroutine gbarrier_print(c_barrier) bind(C)
          51             :           use, intrinsic :: ISO_C_Binding, only: C_ptr
          52             :           implicit none
          53             :           type (C_ptr), value :: c_barrier
          54             :         end subroutine gbarrier_print
          55             :       end interface
          56             :
          57           0 :       call gbarrier_print(barrier%c_barrier)
          58           0 :     end subroutine gbarrier_info
          59             :
          60             :
          61    65046528 :     subroutine gbarrier(barrier, threadID)
          62             :       type (gbarrier_t), intent(in) :: barrier
          63             :       integer, intent(in) :: threadID
          64             :
          65             :       interface
          66             :         subroutine gbarrier_synchronize(c_barrier, thread) bind(C)
          67             :           use, intrinsic :: ISO_C_Binding, only: C_ptr, C_int
          68             :           implicit none
          69             :
          70             :           type (C_ptr), intent(in), value :: c_barrier
          71             :           integer (C_int), intent(in), value :: thread
          72             :         end subroutine gbarrier_synchronize
          73             :       end interface
          74             :
          75    65046528 :       call gbarrier_synchronize(barrier%c_barrier, threadID)
          76    65046528 :     end subroutine gbarrier
          77             :
          78             : end module gbarrier_mod
          79             :

Generated by: LCOV version 1.14