Skip to content

Commit

Permalink
code executes correctly with a single binary sp/dp on GPU
Browse files Browse the repository at this point in the history
  • Loading branch information
piotrows committed Dec 1, 2023
1 parent 8da1ac3 commit b147e38
Show file tree
Hide file tree
Showing 7 changed files with 33 additions and 10 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ find_package( ecbuild 3.4 REQUIRED HINTS ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CUR
project( ectrans LANGUAGES C Fortran CXX )
include( ectrans_macros )

option(IFS_SHARED_LIBS "Build shared libraries (overrides BUILD_SHARED_LIBS)" ON)
option(IFS_SHARED_LIBS "Build shared libraries (overrides BUILD_SHARED_LIBS)" OFF)
set(BUILD_SHARED_LIBS ${IFS_SHARED_LIBS})

ecbuild_enable_fortran( REQUIRED NO_MODULE_DIRECTORY )
Expand Down
18 changes: 17 additions & 1 deletion src/programs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,22 @@ ecbuild_add_library(
PRECOPT
PUBLIC_LIBS fiat trans_sp trans_dp
)
ecbuild_add_library(
TARGET ectrans_interfaces_gpu
LINKER_LANGUAGE Fortran
SOURCES wrappers/dir_trans.F90
wrappers/inv_trans.F90
wrappers/setup_trans0.F90
wrappers/setup_trans.F90
wrappers/trans_inq.F90
PUBLIC_INCLUDES $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/trans/include>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/trans/include/ectrans>
$<INSTALL_INTERFACE:include/ectrans>
$<INSTALL_INTERFACE:include>
PRIVATE_DEFINITIONS SYMBOLSUFFIX
PRECOPT
PUBLIC_LIBS fiat trans_gpu_sp trans_gpu_dp
)

foreach( program ectrans-benchmark ectrans-benchmark-ifs )

Expand Down Expand Up @@ -77,7 +93,7 @@ foreach( program ectrans-benchmark ectrans-benchmark-ifs )
parkind_${prec}
trans_gpu_sp
trans_gpu_dp
ectrans_interfaces
ectrans_interfaces_gpu
)
endif()
endforeach( prec )
Expand Down
4 changes: 2 additions & 2 deletions src/trans/cpu/external/setup_trans.F90
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
! (C) Copyright 2000- ECMWF.
! (C) Copyright 2000- Meteo-France.
!
!
! This software is licensed under the terms of the Apache Licence Version 2.0
! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
! In applying this licence, ECMWF does not waive the privileges and immunities
Expand Down Expand Up @@ -139,7 +139,7 @@ SUBROUTINE SETUP_TRANS(KSMAX,KDGL,KDLON,KLOEN,LDSPLIT,PSTRET,&
INTEGER(KIND=JPIM) ,INTENT(IN) :: KSMAX,KDGL
INTEGER(KIND=JPIM) ,OPTIONAL,INTENT(IN) :: KDLON
INTEGER(KIND=JPIM) ,OPTIONAL,INTENT(IN) :: KLOEN(:)
LOGICAL ,OPTIONAL,INTENT(IN) :: LDSPLIT
LOGICAL ,OPTIONAL,INTENT(IN) :: LDSPLIT
INTEGER(KIND=JPIM) ,OPTIONAL,INTENT(IN) :: KTMAX
INTEGER(KIND=JPIM) ,OPTIONAL,INTENT(OUT):: KRESOL
REAL(KIND=JPRB) ,OPTIONAL,INTENT(IN) :: PWEIGHT(:)
Expand Down
14 changes: 10 additions & 4 deletions src/trans/gpu/external/setup_trans.F90
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,14 @@
! nor does it submit to any jurisdiction.
!
#include "renames.inc"
#ifdef MODULE
MODULE &
#endif
#ifndef INMODULE
SUBROUTINE SETUP_TRANS(KSMAX,KDGL,KDLON,KLOEN,LDSPLIT,PSTRET,&
& KTMAX,KRESOL,PWEIGHT,LDGRIDONLY,LDUSERPNM,LDKEEPRPNM,LDUSEFLT,&
& LDSPSETUPONLY,LDPNMONLY,LDUSEFFTW,&
& LDLL,LDSHIFTLL,CDIO_LEGPOL,CDLEGPOLFNAME,KLEGPOLPTR,KLEGPOLPTR_LEN)
#else
MODULE PROCEDURE SETUP_TRANS
#endif
!**** *SETUP_TRANS* - Setup transform package for specific resolution

! Purpose.
Expand Down Expand Up @@ -153,6 +154,7 @@ SUBROUTINE SETUP_TRANS(KSMAX,KDGL,KDLON,KLOEN,LDSPLIT,PSTRET,&

IMPLICIT NONE

#ifndef INMODULE
! Dummy arguments

INTEGER(KIND=JPIM) ,INTENT(IN) :: KSMAX,KDGL
Expand All @@ -176,6 +178,7 @@ SUBROUTINE SETUP_TRANS(KSMAX,KDGL,KDLON,KLOEN,LDSPLIT,PSTRET,&
CHARACTER(LEN=*),OPTIONAL,INTENT(IN):: CDLEGPOLFNAME
TYPE(C_PTR) ,OPTIONAL,INTENT(IN) :: KLEGPOLPTR
INTEGER(C_SIZE_T) ,OPTIONAL,INTENT(IN) :: KLEGPOLPTR_LEN
#endif

!ifndef INTERFACE

Expand Down Expand Up @@ -1020,5 +1023,8 @@ SUBROUTINE SETUP_TRANS(KSMAX,KDGL,KDLON,KLOEN,LDSPLIT,PSTRET,&
!endif INTERFACE

ENDIF

#ifndef INMODULE
END SUBROUTINE SETUP_TRANS
#else
END PROCEDURE SETUP_TRANS
#endif
1 change: 0 additions & 1 deletion src/trans/gpu/internal/pe2set_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,6 @@ SUBROUTINE PE2SET(KPE,KPRGPNS,KPRGPEW,KPRTRW,KPRTRV)

!* 1. Check input argument for validity
! ---------------------------------

IF(KPE <= 0.OR.KPE > NPROC) THEN
WRITE(*,'(A,2I8)') ' PE2SET INVALID ARGUMENT ',KPE,NPROC
CALL ABORT_TRANS(' PE2SET INVALID ARGUMENT ')
Expand Down
3 changes: 2 additions & 1 deletion src/trans/gpu/internal/sump_trans0_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ SUBROUTINE SUMP_TRANS0
LLP2 = NPRINTLEV>1
IF(LLP1) WRITE(NOUT,*) '=== ENTER ROUTINE SUMP_TRANS0 ==='


NPROC = NPRGPNS*NPRGPEW
WRITE(NOUT,*) NPROC
NPRTRNS = NPRTRW
IF(MOD(NPROC,NPRTRW) /= 0 .OR. NPRTRW > NPROC) THEN
CALL ABORT_TRANS('SUMP_TRANS0: NPROC INCONSISTENT WITH NPRTRW')
Expand Down Expand Up @@ -77,6 +77,7 @@ SUBROUTINE SUMP_TRANS0
N_REGIONS(:)=NPRGPEW
N_REGIONS_EW=NPRGPEW
ENDIF

CALL PE2SET(MYPROC,MY_REGION_NS,MY_REGION_EW,MYSETW,MYSETV)
IF(LLP1) WRITE(NOUT,*)'MYPROC=',MYPROC,'MY_REGION_NS =',MY_REGION_NS,&
& ' MY_REGION_EW=',MY_REGION_EW,' MYSETW=',MYSETW,' MYSETV=',MYSETV
Expand Down
1 change: 1 addition & 0 deletions src/trans/include/ectrans/renames.inc
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@
#define FFTB_PLAN SUFFIXIZE(FFTB_PLAN_VER)
#define FFTB_TYPE SUFFIXIZE(FFTB_TYPE_VER)
#define BLUESTEIN_FFT SUFFIXIZE(BLUESTEIN_FFT_VER)
#define BLUESTEIN_MOD SUFFIXIZE(BLUESTEIN_MOD_VER)
#define gpnorm_trans_gpu SUFFIXIZE(gpnorm_trans_gpu)
#define GPNORM_TRANS_GPU SUFFIXIZE(GPNORM_TRANS_GPU)
#define dir_trans SUFFIXIZE(dir_trans_ver)
Expand Down

0 comments on commit b147e38

Please sign in to comment.