|
20 | 20 | VOID, Byref, DefFunction, FieldFromPointer, IndexedPointer, ListInitializer, SizeOf, |
21 | 21 | as_long, pow_to_mul, unevaluate |
22 | 22 | ) |
23 | | -from devito.tools import as_list, as_mapper, as_tuple, filter_sorted, flatten, is_integer |
| 23 | +from devito.tools import ( |
| 24 | + as_list, as_mapper, as_tuple, filter_sorted, flatten, is_integer, prod |
| 25 | +) |
24 | 26 | from devito.types import ( |
25 | 27 | Array, ComponentAccess, CustomDimension, DeviceMap, DeviceRM, Dimension, Eq, Symbol, |
26 | 28 | size_t |
@@ -192,7 +194,8 @@ def _alloc_host_array_on_high_bw_mem(self, site, obj, storage, *args): |
192 | 194 |
|
193 | 195 | memptr = VOID(Byref(obj._C_symbol), '**') |
194 | 196 | alignment = obj._data_alignment |
195 | | - nbytes = SizeOf(obj._C_typedata)*as_long(obj.size) |
| 197 | + size = prod(as_long(i) for i in obj.symbolic_shape) |
| 198 | + nbytes = SizeOf(obj._C_typedata)*size |
196 | 199 | zeroing, efuncs = self._zero_init(obj, storage) |
197 | 200 | allocs = [decl, self.langbb['host-alloc'](memptr, alignment, nbytes), |
198 | 201 | *zeroing] |
@@ -601,7 +604,8 @@ def _alloc_local_array_on_high_bw_mem(self, site, obj, storage): |
601 | 604 | doalloc = self.langbb['device-alloc'] |
602 | 605 | dofree = self.langbb['device-free'] |
603 | 606 |
|
604 | | - nbytes = SizeOf(obj._C_typedata)*obj.size |
| 607 | + size = prod(as_long(i) for i in obj.symbolic_shape) |
| 608 | + nbytes = SizeOf(obj._C_typedata)*size |
605 | 609 |
|
606 | 610 | zeroing, efuncs = self._zero_init(obj, storage) |
607 | 611 | allocs = [doalloc(nbytes, deviceid, retobj=obj), *zeroing] |
|
0 commit comments