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