Skip to content

Commit aac718d

Browse files
committed
Generalise offload related preproc definitions
1 parent 04188f5 commit aac718d

7 files changed

+29
-30
lines changed

CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ if(HAVE_BUDDY_MALLOC)
7777
list( APPEND fypp_defines "-DUSE_BUDDY_MALLOC")
7878
endif()
7979
if(HAVE_CUDA)
80-
list( APPEND fypp_defines "-DCUDA")
80+
list( APPEND fypp_defines "-DWITH_HIC")
8181
endif()
8282
if(fiat_FOUND)
8383
list( APPEND fypp_defines "-DWITH_FIAT")

cmake/field_api_add_object_library.cmake

+1
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ macro(field_api_add_object_library)
5454
${_PAR_DEFINITIONS}
5555
$<$<NOT:${fiat_FOUND}>:${FIELD_API_DEFINITIONS}>
5656
$<${fiat_FOUND}:WITH_FIAT>
57+
${FIELD_API_OFFLOAD_DEFINITIONS}
5758
PRIVATE_LIBS
5859
${_PAR_LIBRARIES}
5960
$<${HAVE_ACC}:OpenACC::OpenACC_Fortran>

cmake/field_api_get_offload_model.cmake

+5
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,9 @@ macro( field_api_get_offload_model )
5454
set(FIELD_API_OFFLOAD_MODEL "NVHPCOpenACC")
5555
endif()
5656

57+
unset(FIELD_API_OFFLOAD_DEFINITIONS)
58+
if( HAVE_ACC )
59+
list(APPEND FIELD_API_OFFLOAD_DEFINITIONS WITH_GPU_OFFLOAD)
60+
endif()
61+
5762
endmacro()

src/core/dev_alloc_module.fypp

+6-6
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ INTERFACE
5151
END INTERFACE
5252
#:endif
5353

54-
#:if defined('CUDA')
54+
#:if defined('WITH_HIC')
5555
INTERFACE
5656
$:offload_macros.DevMallocIntf(indent=2)
5757
$:offload_macros.DevFreeIntf(indent=2)
@@ -63,7 +63,7 @@ CONTAINS
6363

6464
#:for ft in fieldTypeList
6565

66-
#:if defined('USE_BUDDY_MALLOC') or defined('CUDA')
66+
#:if defined('USE_BUDDY_MALLOC') or defined('WITH_HIC')
6767

6868
SUBROUTINE ${ft.name}$_DEV_ALLOCATE_HST (DEV, HST, MAP_DEVPTR)
6969

@@ -94,7 +94,7 @@ LOGICAL, INTENT(IN) :: MAP_DEVPTR
9494

9595
TYPE (C_PTR) :: PTR
9696
INTEGER (C_SIZE_T) :: SIZ
97-
#:if defined('CUDA')
97+
#:if defined('WITH_HIC')
9898
$:offload_macros.RuntimeErrorType(symbols=['ISTAT',])
9999
#:endif
100100

@@ -109,7 +109,7 @@ SIZ = SIZ * INT (UBOUNDS(${i}$)-ILBOUNDS(${i}$)+1, C_SIZE_T)
109109
IF(MAP_DEVPTR)THEN
110110
CALL DEV_MALLOC (SIZ, PTR)
111111
ELSE
112-
#:if defined('CUDA')
112+
#:if defined('WITH_HIC')
113113
$:offload_macros.DevMalloc(ptr='PTR', size='SIZ', return_val='ISTAT')
114114
#:endif
115115
ENDIF
@@ -132,7 +132,7 @@ USE FIELD_STATISTICS_MODULE
132132
${ft.type}$, POINTER :: DEV(${ft.shape}$)
133133
LOGICAL, INTENT(IN) :: MAP_DEVPTR
134134
TYPE (C_PTR) :: PTR
135-
#:if defined('CUDA')
135+
#:if defined('WITH_HIC')
136136
$:offload_macros.RuntimeErrorType(symbols=['ISTAT',])
137137
#:endif
138138

@@ -146,7 +146,7 @@ IF (ASSOCIATED (DEV)) THEN
146146
CALL DEV_FREE (PTR)
147147
$:offload_macros.HostMappedDevFree(data=['DEV',], indent=4)
148148
ELSE
149-
#:if defined('CUDA')
149+
#:if defined('WITH_HIC')
150150
$:offload_macros.DevFree(ptr='PTR', return_val='ISTAT')
151151
#:endif
152152
ENDIF

src/core/field_RANKSUFF_data_module.fypp

+5-9
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ CONTAINS
6666
ENDIF
6767

6868
SELECT CASE (LAST_CONTIG_DIM)
69-
#:if defined('CUDA')
69+
#:if defined('WITH_HIC')
7070
CASE (${ft.rank}$)
7171
FUNC => ${ftn}$_COPY_DIM${ft.rank}$_CONTIGUOUS
7272
#:for d1 in range (ft.rank)
@@ -111,19 +111,15 @@ CONTAINS
111111

112112
#:for d in range (0, ft.rank+1)
113113
SUBROUTINE ${ftn}$_COPY_DIM${d}$_CONTIGUOUS (HST, DEV, MAP_DEVPTR, KDIR, QUEUE)
114-
#ifdef _OPENACC
115114
$:offload_macros.RuntimeApiImport(indent=2)
116-
#endif
117115
USE, INTRINSIC :: ISO_FORTRAN_ENV, ONLY : INT64
118116
${ft.type}$, POINTER :: HST (${ft.shape}$), DEV (${ft.shape}$)
119117
LOGICAL, INTENT (IN) :: MAP_DEVPTR
120118
INTEGER (KIND=JPIM), INTENT (IN) :: KDIR
121119
INTEGER (KIND=JPIM), OPTIONAL, INTENT (IN) :: QUEUE
122120
INTEGER (KIND=INT64) :: ISIZE
123121
INTEGER :: ${', '.join (['J'] + list (map (lambda i: 'J' + str (i+1), range (d, ft.rank))))}$
124-
#ifdef _OPENACC
125122
$:offload_macros.CDevptrDecl(symbols=['DEVPTR'], indent=4)
126-
#endif
127123

128124
#:for e in range (ft.rank, d, -1)
129125
${' ' * (ft.rank - e)}$DO J${e}$ = LBOUND (HST, ${e}$), UBOUND (HST, ${e}$)
@@ -132,7 +128,7 @@ $:offload_macros.CDevptrDecl(symbols=['DEVPTR'], indent=4)
132128
#:set lbdiff = lambda i: f'LBOUND(DEV,{i}) - LBOUND (HST,{i})'
133129
#:set ard = ', '.join ([':'] * d + ['J' + str(i+1) + ' + ' + lbdiff(i+1) for i in range (d, ft.rank)])
134130
#:set indent = ' ' * (ft.rank - e)
135-
#ifdef _OPENACC
131+
#ifdef WITH_GPU_OFFLOAD
136132
${indent}$ IF(MAP_DEVPTR)THEN
137133
$:offload_macros.HostDataStart(symbols=[f'DEV ({ard})'], indent=ft.rank - e)
138134
${indent}$ DEVPTR = ${offload_macros.DevptrCLOC(f'DEV ({ard})')}$
@@ -149,7 +145,7 @@ $:offload_macros.DataEnd(indent=ft.rank - e)
149145
${indent}$ ISIZE = SIZEOF ( HST(${ar}$) )
150146
#:endif
151147
${indent}$ IF (KDIR == NH2D) THEN
152-
#ifdef _OPENACC
148+
#ifdef WITH_GPU_OFFLOAD
153149
${indent}$ IF(PRESENT(QUEUE))THEN
154150
$:offload_macros.CopyToDevice1DAsync(dev='DEVPTR', host=f'HST ({ar})', size='ISIZE', queue='QUEUE', indent=ft.rank - e + 10)
155151
${indent}$ ELSE
@@ -159,7 +155,7 @@ $:offload_macros.CopyToDevice1D(dev='DEVPTR', host=f'HST ({ar})', size='ISIZE',
159155
${indent}$ DEV (${ard}$) = HST (${ar}$)
160156
#endif
161157
${indent}$ ELSEIF (KDIR == ND2H) THEN
162-
#ifdef _OPENACC
158+
#ifdef WITH_GPU_OFFLOAD
163159
${indent}$ IF(PRESENT(QUEUE))THEN
164160
$:offload_macros.CopyFromDevice1DAsync(dev='DEVPTR', host=f'HST ({ar})', size='ISIZE', queue='QUEUE', indent=ft.rank - e + 10)
165161
${indent}$ ELSE
@@ -176,7 +172,7 @@ $:offload_macros.CopyFromDevice1D(dev='DEVPTR', host=f'HST ({ar})', size='ISIZE'
176172

177173
#:endfor
178174

179-
#:if defined('CUDA')
175+
#:if defined('WITH_HIC')
180176
#:for d1 in range (0, ft.rank)
181177
#:for d2 in range (d1+1, ft.rank+1)
182178
SUBROUTINE ${ftn}$_COPY_2D_DIM${d1}$_${d2}$_CONTIGUOUS (HST, DEV, MAP_DEVPTR, KDIR, QUEUE)

src/core/field_RANKSUFF_module.fypp

+5-8
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@ USE HOST_ALLOC_MODULE
1919
USE FIELD_BASIC_MODULE
2020
USE FIELD_CONSTANTS_MODULE
2121
USE FIELD_DEFAULTS_MODULE
22-
#ifdef _OPENACC
23-
USE OPENACC
24-
#endif
2522
${fieldType.useParkind1 ()}$
2623

2724
#:for ft in fieldTypeList
@@ -187,7 +184,7 @@ CONTAINS
187184
IF(PRESENT(MAP_DEVPTR))THEN
188185
SELF%MAP_DEVPTR = MAP_DEVPTR
189186
ENDIF
190-
#:if not defined('CUDA')
187+
#:if not defined('WITH_HIC')
191188
IF(.NOT. SELF%MAP_DEVPTR)THEN
192189
CALL FIELD_ABORT ("${ftn}$_WRAPPER_INIT: CUDA backend needed to disable host-mapped device-pointer")
193190
ENDIF
@@ -235,7 +232,7 @@ CONTAINS
235232
IF (PRESENT (PERSISTENT)) LLPERSISTENT = PERSISTENT
236233

237234
SELF%POOLED = POOL_OWNED_FIELDS
238-
#:if defined('CUDA')
235+
#:if defined('WITH_HIC')
239236
SELF%PINNED = INIT_PINNED_VALUE
240237
#:endif
241238
IF(PRESENT(PINNED))THEN
@@ -249,7 +246,7 @@ CONTAINS
249246
IF(PRESENT(MAP_DEVPTR))THEN
250247
SELF%MAP_DEVPTR = MAP_DEVPTR
251248
ENDIF
252-
#:if not defined('CUDA')
249+
#:if not defined('WITH_HIC')
253250
IF(.NOT. SELF%MAP_DEVPTR)THEN
254251
CALL FIELD_ABORT ("${ftn}$_OWNER_INIT: CUDA backend needed to disable host-mapped device-pointer")
255252
ENDIF
@@ -390,7 +387,7 @@ CONTAINS
390387

391388
IF (.NOT. SELF%LOBJECT_COPIED) THEN
392389
SELF%LOBJECT_COPIED = .TRUE.
393-
#ifdef _OPENACC
390+
#ifdef WITH_GPU_OFFLOAD
394391
IF (ASSOCIATED (SELF%DEVPTR)) THEN
395392
$:offload_macros.AttachDevPtr(ptr='SELF%DEVPTR', indent=6)
396393
ENDIF
@@ -414,7 +411,7 @@ $:offload_macros.AttachDevPtr(ptr='SELF%DEVPTR', indent=6)
414411

415412
IF (SELF%LOBJECT_COPIED) THEN
416413
SELF%LOBJECT_COPIED = .FALSE.
417-
#ifdef _OPENACC
414+
#ifdef WITH_GPU_OFFLOAD
418415
IF (ASSOCIATED (SELF%DEVPTR)) THEN
419416
$:offload_macros.DetachDevPtr(ptr='SELF%DEVPTR', indent=6)
420417
ENDIF

src/core/host_alloc_module.fypp

+6-6
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ INTERFACE
6464
END SUBROUTINE C_PTR_INCR
6565
END INTERFACE
6666

67-
#:if defined('CUDA')
67+
#:if defined('WITH_HIC')
6868
INTERFACE
6969
$:offload_macros.HostRegisterIntf(indent=3)
7070
$:offload_macros.HostUnregisterIntf(indent=3)
@@ -117,7 +117,7 @@ SUBROUTINE MEM_BLOCK_INIT( SELF )
117117

118118
CALL C_MALLOC(SELF%SIZE, SELF%DATA)
119119

120-
#:if defined('CUDA')
120+
#:if defined('WITH_HIC')
121121
IF(INIT_PINNED_VALUE)THEN
122122
CALL PIN_ALLOCATION(SELF%DATA, SELF%SIZE)
123123
ENDIF
@@ -152,7 +152,7 @@ SUBROUTINE MEM_BLOCK_FINAL( SELF )
152152
PRINT *, "FIELD_API DETECTED UNFINALISED FIELDS, POTENTIAL DEVICE MEMORY LEAK"
153153
ENDIF
154154

155-
#:if defined('CUDA')
155+
#:if defined('WITH_HIC')
156156
IF (INIT_PINNED_VALUE) THEN
157157
CALL UNPIN_ALLOCATION(SELF%DATA)
158158
ENDIF
@@ -248,7 +248,7 @@ SUBROUTINE MEM_POOL_REQUEST_MEM( SELF, ALLOC_SIZE, BLK, DATA, BLKID )
248248

249249
END SUBROUTINE MEM_POOL_REQUEST_MEM
250250

251-
#:if defined('CUDA')
251+
#:if defined('WITH_HIC')
252252
SUBROUTINE PIN_ALLOCATION(DATA, ARR_SIZE)
253253

254254
TYPE(C_PTR), INTENT(INOUT) :: DATA
@@ -333,7 +333,7 @@ SUBROUTINE ${ft.name}$_HOST_ALLOC (HST, LBOUNDS, UBOUNDS, PINNED)
333333
IF(ARR_SIZE > 0)THEN
334334
CALL C_MALLOC(ARR_SIZE, DATA)
335335

336-
#:if defined('CUDA')
336+
#:if defined('WITH_HIC')
337337
IF(PINNED)THEN
338338
CALL PIN_ALLOCATION(DATA, ARR_SIZE)
339339
ENDIF
@@ -361,7 +361,7 @@ SUBROUTINE ${ft.name}$_HOST_DEALLOC(HST, PINNED)
361361
IF(SIZE(HST) > 0)THEN
362362
DATA = C_LOC (HST (${ ', '.join (map (lambda i: 'LBOUND (HST, ' + str (i) + ')', range (1, ft.rank+1))) }$))
363363

364-
#:if defined('CUDA')
364+
#:if defined('WITH_HIC')
365365
IF (PINNED) THEN
366366
CALL UNPIN_ALLOCATION(DATA)
367367
ENDIF

0 commit comments

Comments
 (0)