From f0d040cab9a2c6b36de7c376ca98b601270e1780 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Thu, 13 Jan 2022 11:47:12 +0100 Subject: [PATCH] Philippe 13/01/2022: OpenACC: ACC_DEVICE_* is 64 bits for CCE and 32 bits for NVHPC + add detection of AMD GPUs --- src/LIB/SURCOUCHE/src/mode_mnh_world.f90 | 33 +++++++++++++++++------- src/Rules.LXcray.mk | 2 +- src/Rules.LXnvhpc.mk | 2 +- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/LIB/SURCOUCHE/src/mode_mnh_world.f90 b/src/LIB/SURCOUCHE/src/mode_mnh_world.f90 index 5934d996b..287f0a519 100644 --- a/src/LIB/SURCOUCHE/src/mode_mnh_world.f90 +++ b/src/LIB/SURCOUCHE/src/mode_mnh_world.f90 @@ -2,6 +2,15 @@ #undef MNH_OPENACC #endif +#ifdef MNH_COMPILER_NVHPC +#define MNH_ACC_SZ MNHINT32 +#elif MNH_COMPILER_CCE +#define MNH_ACC_SZ MNHINT64 +#else +#define MNH_ACC_SZ KIND(1) +#endif + + !MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt @@ -31,6 +40,7 @@ CONTAINS #ifdef MNH_GA USE MODD_MPIF , ONLY : MPI_THREAD_MULTIPLE #endif + USE MODD_PRECISION, ONLY: MNHINT32, MNHINT64 USE MODD_VAR_ll, ONLY : IP, NPROC, NMNH_COMM_WORLD , LMNH_ISINIT !JUANZ #ifdef MNH_OPENACC @@ -139,9 +149,12 @@ CONTAINS case default PRINT *,"Using OpenACC (unknown version)" end select - CALL MNH_PRINT_DEVICE_PROPERTIES(ACC_DEVICE_NVIDIA, "NVIDIA GPU(s)") + CALL MNH_PRINT_DEVICE_PROPERTIES( ACC_DEVICE_NVIDIA, "NVIDIA GPU(s)" ) !CALL MNH_PRINT_DEVICE_PROPERTIES(ACC_DEVICE_RADEON, "Radeon GPU(s)") ACC_DEVICE_RADEON was removed from PGI 19.7 - CALL MNH_PRINT_DEVICE_PROPERTIES(ACC_DEVICE_HOST, "Host CPU(s)") +#ifdef MNH_COMPILER_CCE + CALL MNH_PRINT_DEVICE_PROPERTIES( ACC_DEVICE_AMD, "AMD GPU(s)" ) +#endif + CALL MNH_PRINT_DEVICE_PROPERTIES( ACC_DEVICE_HOST, "Host CPU(s)") !CALL MNH_PRINT_DEVICE_PROPERTIES(ACC_DEVICE_XEONPHI,"Xeon Phi(s)") ACC_DEVICE_XEONPHI was removed from PGI 19.7 #endif OPEN(newunit=ILU,form="formatted",file=conf_mnh_world,STATUS='OLD',iostat=IERR) @@ -208,15 +221,15 @@ CONTAINS CONTAINS SUBROUTINE MNH_PRINT_DEVICE_PROPERTIES(KDEVTYPE,HMSG) ! - INTEGER, INTENT(IN) :: KDEVTYPE - CHARACTER(LEN=*),INTENT(IN) :: HMSG + INTEGER(KIND=MNH_ACC_SZ), INTENT(IN) :: KDEVTYPE + CHARACTER(LEN=*), INTENT(IN) :: HMSG ! - INTEGER :: INUMDEV, IDXNAMEDEV, IDXVENDORDEV, IDXDRIVERDEV - INTEGER(KIND=8) :: IMEMDEV - INTEGER :: JI - CHARACTER(LEN=32) :: YNAMEDEV - CHARACTER(LEN=16) :: YVENDORDEV - CHARACTER(LEN=32) :: YDRIVERDEV + INTEGER :: INUMDEV, IDXNAMEDEV, IDXVENDORDEV, IDXDRIVERDEV + INTEGER(KIND=MNHINT64) :: IMEMDEV + INTEGER :: JI + CHARACTER(LEN=32) :: YNAMEDEV + CHARACTER(LEN=16) :: YVENDORDEV + CHARACTER(LEN=32) :: YDRIVERDEV ! INUMDEV = ACC_GET_NUM_DEVICES(KDEVTYPE) WRITE(*,*) " with ",INUMDEV," ",TRIM(HMSG)," (for rank 0)" diff --git a/src/Rules.LXcray.mk b/src/Rules.LXcray.mk index d0b01dac5..659b59866 100644 --- a/src/Rules.LXcray.mk +++ b/src/Rules.LXcray.mk @@ -125,7 +125,7 @@ CPP = cpp -P -Wcomment # CPPFLAGS_C = -DLITTLE_endian CPPFLAGS_SURFEX = -traditional -CPPFLAGS_SURCOUCHE = -traditional -DDEV_NULL -DUSE_MPI +CPPFLAGS_SURCOUCHE = -traditional -DDEV_NULL -DUSE_MPI -DMNH_COMPILER_CCE CPPFLAGS_RAD = -traditional CPPFLAGS_NEWLFI = -traditional -DSWAPIO -DLINUX -DLFI_INT=${LFI_INT} CPPFLAGS_MNH = -traditional -DMNH -DSFX_MNH -DMNH_NO_MPI_LOGICAL48 -DUSE_MPI -DMNH_CRAY diff --git a/src/Rules.LXnvhpc.mk b/src/Rules.LXnvhpc.mk index 8566b8c8d..fe0a23215 100644 --- a/src/Rules.LXnvhpc.mk +++ b/src/Rules.LXnvhpc.mk @@ -197,7 +197,7 @@ CPP = cpp -P -traditional -Wcomment -D_OPENACC=201711 # CPPFLAGS_C = -DLITTLE_endian CPPFLAGS_SURFEX = -CPPFLAGS_SURCOUCHE += +CPPFLAGS_SURCOUCHE += -DMNH_COMPILER_NVHPC CPPFLAGS_RAD = CPPFLAGS_NEWLFI = -DSWAPIO -DLINUX -DLFI_INT=${LFI_INT} CPPFLAGS_MNH = -DMNH -DMNH_PGI -DSFX_MNH -- GitLab