LCOV - code coverage report
Current view: top level - src/fm - cp_dlaf_utils_api.F (source / functions) Hit Total Coverage
Test: CP2K Regtests (git:3add494) Lines: 10 20 50.0 %
Date: 2024-05-01 06:49:23 Functions: 2 4 50.0 %

          Line data    Source code
       1             : !--------------------------------------------------------------------------------------------------!
       2             : !   CP2K: A general program to perform molecular dynamics simulations                              !
       3             : !   Copyright 2000-2024 CP2K developers group <https://cp2k.org>                                   !
       4             : !                                                                                                  !
       5             : !   SPDX-License-Identifier: GPL-2.0-or-later                                                      !
       6             : !--------------------------------------------------------------------------------------------------!
       7             : 
       8             : MODULE cp_dlaf_utils_api
       9             :    USE ISO_C_BINDING,                   ONLY: C_CHAR,&
      10             :                                               C_INT,&
      11             :                                               C_LOC,&
      12             :                                               C_NULL_CHAR,&
      13             :                                               C_PTR
      14             : #include "../base/base_uses.f90"
      15             : 
      16             :    IMPLICIT NONE
      17             : 
      18             :    PRIVATE
      19             : 
      20             :    CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'cp_dlaf_utils_api'
      21             : 
      22             :    PUBLIC :: cp_dlaf_initialize, cp_dlaf_finalize
      23             :    PUBLIC :: cp_dlaf_create_grid, cp_dlaf_free_grid
      24             : 
      25             : CONTAINS
      26             : 
      27             : ! **************************************************************************************************
      28             : !> \brief Initialize DLA-Future and pika runtime
      29             : !> \author Rocco Meli
      30             : !> \author Mikael Simberg
      31             : !> \author Mathieu Taillefumier
      32             : ! **************************************************************************************************
      33       16894 :    SUBROUTINE cp_dlaf_initialize()
      34             :       CHARACTER(len=*), PARAMETER :: routineN = 'cp_dlaf_initialize'
      35             :       INTEGER, PARAMETER                                 :: dlaf_argc = 1, pika_argc = 1
      36             : 
      37       16894 :       CHARACTER(len=5, kind=C_CHAR), ALLOCATABLE, TARGET :: dlaf_argv(:), pika_argv(:)
      38             :       INTEGER                                            :: handle
      39       16894 :       TYPE(C_PTR), ALLOCATABLE, DIMENSION(:)             :: dlaf_argv_ptr, pika_argv_ptr
      40             :       INTERFACE
      41             :          SUBROUTINE dlaf_init(pika_argc, pika_argv, dlaf_argc, dlaf_argv) BIND(C, name='dlaf_initialize')
      42             :             IMPORT :: C_PTR, C_INT
      43             :             TYPE(c_ptr), DIMENSION(*) :: pika_argv
      44             :             TYPE(c_ptr), DIMENSION(*) :: dlaf_argv
      45             :             INTEGER(kind=c_int), value :: pika_argc
      46             :             INTEGER(kind=c_int), value :: dlaf_argc
      47             :          END SUBROUTINE dlaf_init
      48             :       END INTERFACE
      49             : 
      50       16894 :       CALL timeset(routineN, handle)
      51             : 
      52             : #if defined(__DLAF)
      53             :       ALLOCATE (pika_argv(pika_argc))
      54             :       pika_argv(1) = "dlaf"//C_NULL_CHAR
      55             :       ALLOCATE (dlaf_argv(dlaf_argc))
      56             :       dlaf_argv(1) = "dlaf"//C_NULL_CHAR
      57             : 
      58             :       ALLOCATE (pika_argv_ptr(pika_argc))
      59             :       pika_argv_ptr(1) = c_loc(pika_argv(1))
      60             :       ALLOCATE (dlaf_argv_ptr(dlaf_argc))
      61             :       dlaf_argv_ptr(1) = c_loc(dlaf_argv(1))
      62             : 
      63             :       CALL dlaf_init(pika_argc, pika_argv_ptr, dlaf_argc, dlaf_argv_ptr)
      64             : #else
      65             :       MARK_USED(pika_argv)
      66             :       MARK_USED(pika_argv_ptr)
      67             :       MARK_USED(pika_argc)
      68             :       MARK_USED(dlaf_argv)
      69             :       MARK_USED(dlaf_argv_ptr)
      70             :       MARK_USED(dlaf_argc)
      71             : #endif
      72             : 
      73       16894 :       CALL timestop(handle)
      74       16894 :    END SUBROUTINE cp_dlaf_initialize
      75             : 
      76             : ! **************************************************************************************************
      77             : !> \brief Finalize DLA-Future and pika runtime
      78             : !> \author Rocco Meli
      79             : !> \author Mikael Simberg
      80             : !> \author Mathieu Taillefumier
      81             : ! **************************************************************************************************
      82       16918 :    SUBROUTINE cp_dlaf_finalize()
      83             :       CHARACTER(len=*), PARAMETER                        :: routineN = 'cp_dlaf_finalize'
      84             : 
      85             :       INTEGER                                            :: handle
      86             :       INTERFACE
      87             :          SUBROUTINE dlaf_finalize_aux() &
      88             :             BIND(C, name='dlaf_finalize')
      89             :          END SUBROUTINE dlaf_finalize_aux
      90             :       END INTERFACE
      91             : 
      92       16918 :       CALL timeset(routineN, handle)
      93             : 
      94             : #if defined(__DLAF)
      95             :       CALL dlaf_finalize_aux()
      96             : #endif
      97             : 
      98       16918 :       CALL timestop(handle)
      99       16918 :    END SUBROUTINE cp_dlaf_finalize
     100             : 
     101             : ! **************************************************************************************************
     102             : !> \brief Create DLA-Future grid from BLACS context
     103             : !> \param blacs_context ...
     104             : !> \author Rocco Meli
     105             : !> \author Mikael Simberg
     106             : !> \author Mathieu Taillefumier
     107             : ! **************************************************************************************************
     108           0 :    SUBROUTINE cp_dlaf_create_grid(blacs_context)
     109             :       INTEGER, INTENT(IN)                                :: blacs_context
     110             : 
     111             :       CHARACTER(len=*), PARAMETER :: routineN = 'cp_dlaf_create_grid'
     112             : 
     113             :       INTEGER                                            :: handle
     114             :       INTERFACE
     115             :          SUBROUTINE dlaf_create_grid(blacs_contxt) &
     116             :             BIND(C, name='dlaf_create_grid_from_blacs')
     117             :             IMPORT :: C_INT
     118             :             INTEGER(KIND=C_INT), VALUE :: blacs_contxt
     119             :          END SUBROUTINE
     120             :       END INTERFACE
     121             : 
     122           0 :       CALL timeset(routineN, handle)
     123             : 
     124             : #if defined(__DLAF)
     125             :       CALL dlaf_create_grid(blacs_context)
     126             : #else
     127             :       MARK_USED(blacs_context)
     128           0 :       CPABORT("CP2K compiled without the DLA-Future library.")
     129             : #endif
     130             : 
     131           0 :       CALL timestop(handle)
     132           0 :    END SUBROUTINE cp_dlaf_create_grid
     133             : 
     134             : ! **************************************************************************************************
     135             : !> \brief Free DLA-Future grid corresponding to BLACS context
     136             : !> \param blacs_context ...
     137             : !> \author Rocco Meli
     138             : !> \author Mikael Simberg
     139             : !> \author Mathieu Taillefumier
     140             : ! **************************************************************************************************
     141           0 :    SUBROUTINE cp_dlaf_free_grid(blacs_context)
     142             :       INTEGER, INTENT(IN)                                :: blacs_context
     143             : 
     144             :       CHARACTER(len=*), PARAMETER                        :: routineN = 'cp_dlaf_free_grid'
     145             : 
     146             :       INTEGER                                            :: handle
     147             :       INTERFACE
     148             :          SUBROUTINE dlaf_free_grid(blacs_contxt) &
     149             :             BIND(C, name='dlaf_free_grid')
     150             :             IMPORT :: C_INT
     151             :             INTEGER(KIND=C_INT), VALUE :: blacs_contxt
     152             :          END SUBROUTINE
     153             :       END INTERFACE
     154             : 
     155           0 :       CALL timeset(routineN, handle)
     156             : 
     157             : #if defined(__DLAF)
     158             :       CALL dlaf_free_grid(blacs_context)
     159             : #else
     160             :       MARK_USED(blacs_context)
     161           0 :       CPABORT("CP2K compiled without the DLA-Future library.")
     162             : #endif
     163             : 
     164           0 :       CALL timestop(handle)
     165           0 :    END SUBROUTINE cp_dlaf_free_grid
     166             : 
     167             : END MODULE cp_dlaf_utils_api

Generated by: LCOV version 1.15