Skip to content

Commit bd3cd55

Browse files
committed
compiler: Use int32 for dimension sizes
1 parent 883436f commit bd3cd55

13 files changed

Lines changed: 48 additions & 29 deletions

File tree

devito/passes/iet/definitions.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"""
55

66
from collections import OrderedDict
7+
from ctypes import c_uint64
78
from functools import singledispatch
89
from operator import itemgetter
910

@@ -187,7 +188,7 @@ def _alloc_mapped_array_on_high_bw_mem(self, site, obj, storage, *args):
187188
arity_arg = sizeof_dtypeN / sizeof_dtype1
188189
ndims_param = Symbol(name='ndims', dtype=size_t)
189190
ndims_arg = obj.ndim
190-
shape_param = Array(name=f'{obj.name}_shape', dtype=np.uint64,
191+
shape_param = Array(name=f'{obj.name}_shape', dtype=np.int32,
191192
dimensions=(Dimension(name='d'),), scope='rvalue')
192193
shape_arg = ListInitializer(obj.c0.symbolic_shape, dtype=shape_param.dtype)
193194

@@ -205,7 +206,7 @@ def _alloc_mapped_array_on_high_bw_mem(self, site, obj, storage, *args):
205206

206207
# Allocate the shape array
207208
memptr = VOID(Byref(ffp1), '**')
208-
nbytes = SizeOf(obj._C_size_type)*ndims_param
209+
nbytes = SizeOf(c_uint64)*ndims_param
209210
alloc1 = self.langbb['host-alloc'](memptr, alignment, nbytes)
210211

211212
# Initialize the Array metadata
@@ -289,7 +290,7 @@ def _alloc_bundle_struct_on_high_bw_mem(self, site, obj, storage):
289290

290291
# Allocate the shape array
291292
memptr = VOID(Byref(ffp1), '**')
292-
nbytes = SizeOf(obj._C_size_type)*obj.ndim
293+
nbytes = SizeOf(c_uint64)*obj.ndim
293294
alloc1 = self.langbb['host-alloc'](memptr, alignment, nbytes)
294295

295296
# Initialize the Bundle metadata

devito/types/array.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from ctypes import POINTER, Structure, c_void_p, c_uint64
1+
from ctypes import POINTER, Structure, c_void_p, c_int, c_uint64
22
from functools import cached_property
33

44
import numpy as np
@@ -225,15 +225,13 @@ class MappedArrayMixin:
225225
_C_field_nbytes = 'nbytes'
226226
_C_field_arity = 'arity'
227227

228-
_C_size_type = c_uint64
229-
230228
_C_ctype = POINTER(type(_C_structname, (Structure,),
231229
{'_fields_': [(_C_field_data, c_restrict_void_p),
232230
(_C_field_dmap, c_void_p),
233-
(_C_field_shape, POINTER(_C_size_type)),
234-
(_C_field_size, _C_size_type),
235-
(_C_field_nbytes, _C_size_type),
236-
(_C_field_arity, _C_size_type)]}))
231+
(_C_field_shape, POINTER(c_int)),
232+
(_C_field_size, c_uint64),
233+
(_C_field_nbytes, c_uint64),
234+
(_C_field_arity, c_uint64)]}))
237235

238236

239237
class ArrayMapped(MappedArrayMixin, Array):

devito/types/dense.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -652,6 +652,7 @@ def initializer(self):
652652
_C_structname = 'dataobj'
653653
_C_field_data = 'data'
654654
_C_field_size = 'size'
655+
_C_field_nbytes = 'nbytes'
655656
_C_field_nopad_size = 'npsize'
656657
_C_field_domain_size = 'dsize'
657658
_C_field_halo_size = 'hsize'
@@ -661,7 +662,8 @@ def initializer(self):
661662

662663
_C_ctype = POINTER(type(_C_structname, (Structure,),
663664
{'_fields_': [(_C_field_data, c_restrict_void_p),
664-
(_C_field_size, POINTER(c_ulong)),
665+
(_C_field_size, POINTER(c_int)),
666+
(_C_field_nbytes, c_ulong),
665667
(_C_field_nopad_size, POINTER(c_ulong)),
666668
(_C_field_domain_size, POINTER(c_ulong)),
667669
(_C_field_halo_size, POINTER(c_int)),
@@ -679,7 +681,8 @@ def _C_make_dataobj(self, alias=None, **args):
679681

680682
dataobj = byref(self._C_ctype._type_())
681683
dataobj._obj.data = data.ctypes.data_as(c_restrict_void_p)
682-
dataobj._obj.size = (c_ulong*self.ndim)(*data.shape)
684+
dataobj._obj.size = (c_int*self.ndim)(*data.shape)
685+
dataobj._obj.nbytes = data.nbytes
683686

684687
# MPI-related fields
685688
dataobj._obj.npsize = (c_ulong*self.ndim)(*[i - sum(j) for i, j in

examples/cfd/01_convection.ipynb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,8 @@
423423
"struct dataobj\n",
424424
"{\n",
425425
" void *restrict data;\n",
426-
" unsigned long * size;\n",
426+
" int * size;\n",
427+
" unsigned long nbytes;\n",
427428
" unsigned long * npsize;\n",
428429
" unsigned long * dsize;\n",
429430
" int * hsize;\n",

examples/cfd/01_convection_revisited.ipynb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,8 @@
402402
"struct dataobj\n",
403403
"{\n",
404404
" void *restrict data;\n",
405-
" unsigned long * size;\n",
405+
" int * size;\n",
406+
" unsigned long nbytes;\n",
406407
" unsigned long * npsize;\n",
407408
" unsigned long * dsize;\n",
408409
" int * hsize;\n",

examples/compiler/01_data_regions.ipynb

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,8 @@
104104
"struct dataobj\n",
105105
"{\n",
106106
" void *restrict data;\n",
107-
" unsigned long * size;\n",
107+
" int * size;\n",
108+
" unsigned long nbytes;\n",
108109
" unsigned long * npsize;\n",
109110
" unsigned long * dsize;\n",
110111
" int * hsize;\n",
@@ -333,7 +334,8 @@
333334
"struct dataobj\n",
334335
"{\n",
335336
" void *restrict data;\n",
336-
" unsigned long * size;\n",
337+
" int * size;\n",
338+
" unsigned long nbytes;\n",
337339
" unsigned long * npsize;\n",
338340
" unsigned long * dsize;\n",
339341
" int * hsize;\n",
@@ -451,7 +453,8 @@
451453
"struct dataobj\n",
452454
"{\n",
453455
" void *restrict data;\n",
454-
" unsigned long * size;\n",
456+
" int * size;\n",
457+
" unsigned long nbytes;\n",
455458
" unsigned long * npsize;\n",
456459
" unsigned long * dsize;\n",
457460
" int * hsize;\n",

examples/compiler/03_iet-A.ipynb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,8 @@
135135
"struct dataobj\n",
136136
"{\n",
137137
" void *restrict data;\n",
138-
" unsigned long * size;\n",
138+
" int * size;\n",
139+
" unsigned long nbytes;\n",
139140
" unsigned long * npsize;\n",
140141
" unsigned long * dsize;\n",
141142
" int * hsize;\n",

examples/mpi/overview.ipynb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,8 @@
328328
"struct dataobj\n",
329329
"{\n",
330330
" void *restrict data;\n",
331-
" unsigned long * size;\n",
331+
" int * size;\n",
332+
" unsigned long nbytes;\n",
332333
" unsigned long * npsize;\n",
333334
" unsigned long * dsize;\n",
334335
" int * hsize;\n",
@@ -420,7 +421,8 @@
420421
"struct dataobj\n",
421422
"{\n",
422423
" void *restrict data;\n",
423-
" unsigned long * size;\n",
424+
" int * size;\n",
425+
" unsigned long nbytes;\n",
424426
" unsigned long * npsize;\n",
425427
" unsigned long * dsize;\n",
426428
" int * hsize;\n",

examples/performance/00_overview.ipynb

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1170,7 +1170,8 @@
11701170
"struct dataobj\n",
11711171
"{\n",
11721172
" void *restrict data;\n",
1173-
" unsigned long * size;\n",
1173+
" int * size;\n",
1174+
" unsigned long nbytes;\n",
11741175
" unsigned long * npsize;\n",
11751176
" unsigned long * dsize;\n",
11761177
" int * hsize;\n",
@@ -1458,7 +1459,8 @@
14581459
"struct dataobj\n",
14591460
"{\n",
14601461
" void *restrict data;\n",
1461-
" unsigned long * size;\n",
1462+
" int * size;\n",
1463+
" unsigned long nbytes;\n",
14621464
" unsigned long * npsize;\n",
14631465
" unsigned long * dsize;\n",
14641466
" int * hsize;\n",
@@ -1598,7 +1600,8 @@
15981600
"struct dataobj\n",
15991601
"{\n",
16001602
" void *restrict data;\n",
1601-
" unsigned long * size;\n",
1603+
" int * size;\n",
1604+
" unsigned long nbytes;\n",
16021605
" unsigned long * npsize;\n",
16031606
" unsigned long * dsize;\n",
16041607
" int * hsize;\n",

examples/performance/01_gpu.ipynb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,8 @@
253253
"struct dataobj\n",
254254
"{\n",
255255
" void *restrict data;\n",
256-
" unsigned long * size;\n",
256+
" int * size;\n",
257+
" unsigned long nbytes;\n",
257258
" unsigned long * npsize;\n",
258259
" unsigned long * dsize;\n",
259260
" int * hsize;\n",

0 commit comments

Comments
 (0)