Skip to content

Commit 5ceba21

Browse files
committed
Optimization for dispose outputs in reductions
1 parent 999a1b6 commit 5ceba21

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ else()
9292
include(FetchContent)
9393
FetchContent_Declare(blosc2
9494
GIT_REPOSITORY https://github.com/Blosc/c-blosc2
95-
GIT_TAG 31365f4ab555f722b37212ee689d076c8a53b279 # openzl
95+
GIT_TAG 9d250c2201f6e385c56a372b08037f7debc6fa1b # openzl
9696
# in case you want to use a local copy of c-blosc2 for development, uncomment the line below
9797
# SOURCE_DIR "/Users/faltet/blosc/c-blosc2"
9898
)

src/blosc2/blosc2_ext.pyx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@ cdef extern from "blosc2.h":
209209
uint8_t* ttmp
210210
size_t ttmp_nbytes
211211
blosc2_context* ctx
212+
c_bool output_is_disposable
212213

213214
ctypedef struct blosc2_postfilter_params:
214215
void *user_data
@@ -1682,7 +1683,7 @@ cdef class SChunk:
16821683
cdef blosc2_cparams* cparams = self.schunk.storage.cparams
16831684
cparams.prefilter = <blosc2_prefilter_fn> general_filler
16841685

1685-
cdef blosc2_prefilter_params* preparams = <blosc2_prefilter_params *> malloc(sizeof(blosc2_prefilter_params))
1686+
cdef blosc2_prefilter_params* preparams = <blosc2_prefilter_params *> calloc(1, sizeof(blosc2_prefilter_params))
16861687
cdef filler_udata* fill_udata = <filler_udata *> malloc(sizeof(filler_udata))
16871688
fill_udata.py_func = <char *> malloc(strlen(func_id) + 1)
16881689
strcpy(fill_udata.py_func, func_id)
@@ -1715,7 +1716,7 @@ cdef class SChunk:
17151716

17161717
cdef blosc2_cparams* cparams = self.schunk.storage.cparams
17171718
cparams.prefilter = <blosc2_prefilter_fn> general_prefilter
1718-
cdef blosc2_prefilter_params* preparams = <blosc2_prefilter_params *> malloc(sizeof(blosc2_prefilter_params))
1719+
cdef blosc2_prefilter_params* preparams = <blosc2_prefilter_params *> calloc(1, sizeof(blosc2_prefilter_params))
17191720
cdef user_filters_udata* pref_udata = <user_filters_udata*> malloc(sizeof(user_filters_udata))
17201721
pref_udata.py_func = <char *> malloc(strlen(func_id) + 1)
17211722
strcpy(pref_udata.py_func, func_id)
@@ -2856,8 +2857,9 @@ cdef class NDArray:
28562857
free(variables[i].name)
28572858
free(variables)
28582859

2859-
cdef blosc2_prefilter_params* preparams = <blosc2_prefilter_params *> malloc(sizeof(blosc2_prefilter_params))
2860+
cdef blosc2_prefilter_params* preparams = <blosc2_prefilter_params *> calloc(1, sizeof(blosc2_prefilter_params))
28602861
preparams.user_data = udata
2862+
preparams.output_is_disposable = False if aux_reduc is None else True
28612863
cparams.preparams = preparams
28622864
_check_cparams(cparams)
28632865

@@ -2880,7 +2882,7 @@ cdef class NDArray:
28802882
cdef blosc2_cparams* cparams = self.array.sc.storage.cparams
28812883
cparams.prefilter = <blosc2_prefilter_fn> general_udf_prefilter
28822884

2883-
cdef blosc2_prefilter_params* preparams = <blosc2_prefilter_params *> malloc(sizeof(blosc2_prefilter_params))
2885+
cdef blosc2_prefilter_params* preparams = <blosc2_prefilter_params *> calloc(1, sizeof(blosc2_prefilter_params))
28842886
preparams.user_data = self._fill_udf_udata(func_id, inputs_id)
28852887
cparams.preparams = preparams
28862888
_check_cparams(cparams)

0 commit comments

Comments
 (0)