Skip to content

Commit e2f76e5

Browse files
committed
Support numba expr when blocks\neq chunks \neq shape without padding
1 parent 5976688 commit e2f76e5

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

blosc2/blosc2_ext.pyx

+12-4
Original file line numberDiff line numberDiff line change
@@ -1562,17 +1562,25 @@ cdef int general_numba(blosc2_prefilter_params *params):
15621562
# off caldrà sumar-li blockshape també
15631563
cdef int64_t offset = params.nchunk * udata.chunkshape + params.output_offset // params.output_typesize
15641564
# shape normal, no extshape, revisar-ho quan hi haja padding
1565-
cdef int64_t offset_ndim[B2ND_MAX_DIM]
15661565
cdef int64_t chunk_ndim[B2ND_MAX_DIM]
15671566
cdef int64_t chunks_in_array[B2ND_MAX_DIM]
15681567
for i in range(nd):
15691568
# Canviar-ho a extshape i chunkshape normal
15701569
chunks_in_array[i] = udata.shape[i] // udata.chunkshape_ndim[i]
1571-
15721570
blosc2_unidim_to_multidim(nd, chunks_in_array, params.nchunk, chunk_ndim)
1571+
# print("nchunk ", params.nchunk)
1572+
1573+
cdef int64_t block_ndim[B2ND_MAX_DIM]
1574+
cdef int64_t blocks_in_chunk[B2ND_MAX_DIM]
1575+
for i in range(nd):
1576+
# Canviar-ho a extshape i chunkshape normal
1577+
blocks_in_chunk[i] = udata.chunkshape_ndim[i] // udata.blockshape[i]
1578+
blosc2_unidim_to_multidim(nd, chunks_in_array, params.nblock, block_ndim)
1579+
1580+
cdef int64_t offset_ndim[B2ND_MAX_DIM]
15731581
for i in range(nd):
1574-
offset_ndim[i] = chunk_ndim[i] * udata.chunkshape_ndim[i]
1575-
print("offset_ndim[", i, "] = ", offset_ndim[i])
1582+
offset_ndim[i] = chunk_ndim[i] * udata.chunkshape_ndim[i] + block_ndim[i] * udata.blockshape[i]
1583+
# print("offset_ndim[", i, "] = ", offset_ndim[i])
15761584

15771585
cdef np.npy_intp dims[B2ND_MAX_DIM]
15781586
# params.output_size // params.output_typesize

blosc2/lazyexpr.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,8 @@ def __init__(self, func, inputs_tuple, dtype, shape):
522522
cparams = {'nthreads': 1}
523523
# canviar això de nthreads
524524
chunks = [i // 2 for i in self.shape]
525-
self.res = blosc2.empty(self.shape, dtype, cparams=cparams, chunks=chunks, blocks=chunks)
525+
blocks = [i // 2 for i in chunks]
526+
self.res = blosc2.empty(self.shape, dtype, cparams=cparams, chunks=chunks, blocks=blocks)
526527
self.res._set_aux_numba(func, id(inputs_tuple))
527528
self.func = func
528529

0 commit comments

Comments
 (0)