See More

from libcpp cimport bool cdef extern from "": ctypedef signed char int8_t ctypedef signed short int16_t ctypedef signed int int32_t ctypedef signed long int64_t ctypedef unsigned char uint8_t ctypedef unsigned short uint16_t ctypedef unsigned int uint32_t ctypedef unsigned long long uint64_t cdef extern from "libiarray/iarray.h": ctypedef uint64_t ina_rc_t # Stuff from "libinac/ina.h" cdef enum: INA_ES_USER_DEFINED = 1024UL cdef enum: INA_RC_BIT_C = 16U cdef enum: INA_ERR_COMPILED = 18ULL << INA_RC_BIT_C INA_ERR_FAILED = 43ULL << INA_RC_BIT_C INA_ERR_OUT_OF_RANGE = 84ULL << INA_RC_BIT_C # End of stuff from "libinac/ina.h" cdef enum: IARRAY_COMP_SHUFFLE = 0x1, IARRAY_COMP_BITSHUFFLE = 0x2, IARRAY_COMP_DELTA = 0x4, IARRAY_COMP_TRUNC_PREC = 0x8, cdef enum: IARRAY_ES_CONTAINER = INA_ES_USER_DEFINED + 1 IARRAY_ES_DTSHAPE IARRAY_ES_SHAPE IARRAY_ES_CHUNKSHAPE IARRAY_ES_NDIM IARRAY_ES_DTYPE IARRAY_ES_STORAGE IARRAY_ES_PERSISTENCY IARRAY_ES_BUFFER IARRAY_ES_CATERVA IARRAY_ES_BLOSC IARRAY_ES_ASSERTION IARRAY_ES_BLOCKSHAPE IARRAY_ES_RNG_METHOD IARRAY_ES_RAND_METHOD IARRAY_ES_RAND_PARAM IARRAY_ES_ITER IARRAY_ES_EVAL_METHOD IARRAY_ES_EVAL_ENGINE cdef enum: IARRAY_ERR_EVAL_ENGINE_FAILED = INA_ERR_FAILED | IARRAY_ES_EVAL_ENGINE IARRAY_ERR_EVAL_ENGINE_NOT_COMPILED = INA_ERR_COMPILED | IARRAY_ES_EVAL_ENGINE IARRAY_ERR_EVAL_ENGINE_OUT_OF_RANGE = INA_ERR_OUT_OF_RANGE | IARRAY_ES_EVAL_ENGINE cdef enum: IARRAY_DIMENSION_MAX = 8 ctypedef enum iarray_container_flags_t: IARRAY_CONTAINER_PERSIST = 0x1 ctypedef enum iarray_data_type_t: IARRAY_DATA_TYPE_DOUBLE IARRAY_DATA_TYPE_FLOAT IARRAY_DATA_TYPE_MAX ctypedef enum iarray_compression_codec_t: IARRAY_COMPRESSION_BLOSCLZ = 0 IARRAY_COMPRESSION_LZ4 IARRAY_COMPRESSION_LZ4HC IARRAY_COMPRESSION_SNAPPY IARRAY_COMPRESSION_ZLIB IARRAY_COMPRESSION_ZSTD IARRAY_COMPRESSION_LIZARD ctypedef enum iarray_compression_favor_t: IARRAY_COMPRESSION_FAVOR_BALANCE = 0 IARRAY_COMPRESSION_FAVOR_SPEED IARRAY_COMPRESSION_FAVOR_CRATIO ctypedef enum iarray_eval_method_t: IARRAY_EVAL_METHOD_AUTO IARRAY_EVAL_METHOD_ITERCHUNK IARRAY_EVAL_METHOD_ITERBLOSC IARRAY_EVAL_METHOD_ITERBLOSC2 ctypedef enum iarray_eval_engine_t: IARRAY_EVAL_ENGINE_AUTO IARRAY_EVAL_ENGINE_INTERPRETER IARRAY_EVAL_ENGINE_COMPILER ctypedef enum iarray_split_mode_t: IARRAY_ALWAYS_SPLIT = 1 IARRAY_NEVER_SPLIT = 2 IARRAY_AUTO_SPLIT = 3 IARRAY_FORWARD_COMPAT_SPLIT = 4 ctypedef struct iarray_config_t: iarray_compression_codec_t compression_codec int compression_level iarray_compression_favor_t compression_favor int use_dict int splitmode int filter_flags unsigned int eval_method int max_num_threads uint8_t fp_mantissa_bits bool btune ctypedef struct iarray_storage_t: const char *urlpath bool contiguous int64_t chunkshape[IARRAY_DIMENSION_MAX] int64_t blockshape[IARRAY_DIMENSION_MAX] ctypedef struct iarray_dtshape_t: iarray_data_type_t dtype int8_t ndim int64_t shape[IARRAY_DIMENSION_MAX] ctypedef struct iarray_context_t ctypedef struct iarray_container_t ctypedef struct iarray_expression_t ina_rc_t iarray_init() void iarray_destroy() const char* iarray_err_strerror(ina_rc_t rc) ina_rc_t iarray_context_new(iarray_config_t *cfg, iarray_context_t **ctx) void iarray_context_free(iarray_context_t **ctx) ina_rc_t iarray_get_ncores(int *ncores, int64_t max_ncores); ina_rc_t iarray_partition_advice(iarray_context_t *ctx, iarray_dtshape_t *dtshape, iarray_storage_t *storage, int64_t min_chunksize, int64_t max_chunksize, int64_t min_blocksize, int64_t max_blocksize); ina_rc_t iarray_empty(iarray_context_t *ctx, iarray_dtshape_t *dtshape, iarray_storage_t *storage, int flags, iarray_container_t **container) void iarray_container_free(iarray_context_t *ctx, iarray_container_t **container) ina_rc_t iarray_container_info(iarray_container_t *c, int64_t *nbytes, int64_t *cbytes) ina_rc_t iarray_arange(iarray_context_t *ctx, iarray_dtshape_t *dtshape, double start, double stop, double step, iarray_storage_t *storage, int flags, iarray_container_t **container) ina_rc_t iarray_linspace(iarray_context_t *ctx, iarray_dtshape_t *dtshape, double start, double stop, iarray_storage_t *storage, int flags, iarray_container_t **container) ina_rc_t iarray_zeros(iarray_context_t *ctx, iarray_dtshape_t *dtshape, iarray_storage_t *storage, int flags, iarray_container_t **container) ina_rc_t iarray_ones(iarray_context_t *ctx, iarray_dtshape_t *dtshape, iarray_storage_t *storage, int flags, iarray_container_t **container) ina_rc_t iarray_fill_float(iarray_context_t *ctx, iarray_dtshape_t *dtshape, float value, iarray_storage_t *storage, int flags, iarray_container_t **container) ina_rc_t iarray_fill_double(iarray_context_t *ctx, iarray_dtshape_t *dtshape, double value, iarray_storage_t *storage, int flags, iarray_container_t **container) ina_rc_t iarray_copy(iarray_context_t *ctx, iarray_container_t *src, bool view, iarray_storage_t *storage, int flags, iarray_container_t **dest) nogil ina_rc_t iarray_get_slice(iarray_context_t *ctx, iarray_container_t *src, int64_t *start, int64_t *stop, bool view, iarray_storage_t *storage, int flags, iarray_container_t **container) ina_rc_t iarray_set_slice_buffer(iarray_context_t *ctx, iarray_container_t *container, const int64_t *start, const int64_t *stop, void *buffer, int64_t buflen) ina_rc_t iarray_to_buffer(iarray_context_t *ctx, iarray_container_t *container, void *buffer, int64_t buflen) ina_rc_t iarray_squeeze_index(iarray_context_t *ctx, iarray_container_t *container, bool *index) ina_rc_t iarray_squeeze(iarray_context_t *ctx, iarray_container_t *container) ina_rc_t iarray_get_dtshape(iarray_context_t *ctx, iarray_container_t *c, iarray_dtshape_t *dtshape) ina_rc_t iarray_get_storage(iarray_context_t *ctx, iarray_container_t *c, iarray_storage_t *storage) ina_rc_t iarray_get_cfg(iarray_context_t *ctx, iarray_container_t *c, iarray_config_t *cfg) ina_rc_t iarray_is_view(iarray_context_t *ctx, iarray_container_t *c, bool *view) ina_rc_t iarray_is_transposed(iarray_context_t *ctx, iarray_container_t *c, bool *transposed) ina_rc_t iarray_from_buffer(iarray_context_t *ctx, iarray_dtshape_t *dtshape, void *buffer, int64_t buflen, iarray_storage_t *storage, int flags, iarray_container_t **container) ina_rc_t iarray_container_load(iarray_context_t *ctx, char *urlpath, iarray_container_t **container) ina_rc_t iarray_container_open(iarray_context_t *ctx, char *urlpath, iarray_container_t **container) bool iarray_is_empty(iarray_container_t *container) ina_rc_t iarray_expr_new(iarray_context_t *ctx, iarray_expression_t **e) void iarray_expr_free(iarray_context_t *ctx, iarray_expression_t **e) ina_rc_t iarray_expr_bind(iarray_expression_t *e, const char *var, iarray_container_t *val) ina_rc_t iarray_expr_bind_out_properties(iarray_expression_t *e, iarray_dtshape_t *dtshape, iarray_storage_t *store); ina_rc_t iarray_expr_compile(iarray_expression_t *e, const char *expr) ina_rc_t iarray_expr_compile_udf(iarray_expression_t *e, int llvm_bc_len, const char *llvm_bc, const char *name) ina_rc_t iarray_eval(iarray_expression_t *e, iarray_container_t **c) nogil # Linear algebra ctypedef enum iarray_operator_hint_t: IARRAY_OPERATOR_GENERAL = 0 IARRAY_OPERATOR_SYMMETRIC IARRAY_OPERATOR_TRIANGULAR ina_rc_t iarray_matmul_advice(iarray_context_t *ctx, iarray_container_t *a, iarray_container_t *b, iarray_container_t *c, int64_t *blockshape_a, int64_t *blockshape_b, int64_t low, int64_t high) ina_rc_t iarray_linalg_matmul(iarray_context_t *ctx, iarray_container_t *a, iarray_container_t *b, iarray_storage_t *store, iarray_container_t **result) ina_rc_t iarray_opt_gemv(iarray_context_t *ctx, iarray_container_t *a, iarray_container_t *b, iarray_storage_t *store, iarray_container_t **result) ina_rc_t iarray_opt_gemm(iarray_context_t *ctx, iarray_container_t *a, iarray_container_t *b, iarray_storage_t *store, iarray_container_t **result) ina_rc_t iarray_opt_gemm_b(iarray_context_t *ctx, iarray_container_t *a, iarray_container_t *b, iarray_storage_t *store, iarray_container_t **result) ina_rc_t iarray_opt_gemm_a(iarray_context_t *ctx, iarray_container_t *a, iarray_container_t *b, iarray_storage_t *store, iarray_container_t **result) ina_rc_t iarray_linalg_transpose(iarray_context_t *ctx, iarray_container_t *a, iarray_container_t **b); # Reductions ctypedef enum iarray_reduce_func_t: IARRAY_REDUCE_MAX, IARRAY_REDUCE_MIN, IARRAY_REDUCE_SUM, IARRAY_REDUCE_PROD, IARRAY_REDUCE_MEAN ina_rc_t iarray_reduce(iarray_context_t *ctx, iarray_container_t *a, iarray_reduce_func_t func, int8_t axis, iarray_storage_t *store, iarray_container_t **b); ina_rc_t iarray_reduce_multi(iarray_context_t *ctx, iarray_container_t *a, iarray_reduce_func_t func, int8_t naxis, int8_t *axis, iarray_storage_t *store, iarray_container_t **b); # Iterators ctypedef struct iarray_iter_write_block_t ctypedef struct iarray_iter_write_block_value_t: void *block_pointer int64_t *block_index int64_t *elem_index int64_t nblock int64_t *block_shape int64_t block_size ina_rc_t iarray_iter_write_block_new(iarray_context_t *ctx, iarray_iter_write_block_t **itr, iarray_container_t *container, const int64_t *blockshape, iarray_iter_write_block_value_t *value, bool external_buffer) void iarray_iter_write_block_free(iarray_iter_write_block_t **itr) ina_rc_t iarray_iter_write_block_next(iarray_iter_write_block_t *itr, void *buffer, int32_t bufsize) ina_rc_t iarray_iter_write_block_has_next(iarray_iter_write_block_t *itr) ctypedef struct iarray_iter_read_block_t ctypedef struct iarray_iter_read_block_value_t: void *block_pointer int64_t *block_index int64_t *elem_index int64_t nblock int64_t* block_shape int64_t block_size ina_rc_t iarray_iter_read_block_new(iarray_context_t *ctx, iarray_iter_read_block_t **itr, iarray_container_t *cont, const int64_t *blockshape, iarray_iter_read_block_value_t *value, bool external_buffer) void iarray_iter_read_block_free(iarray_iter_read_block_t **itr) ina_rc_t iarray_iter_read_block_next(iarray_iter_read_block_t *itr, void *buffer, int32_t bufsize) ina_rc_t iarray_iter_read_block_has_next(iarray_iter_read_block_t *itr) # Random ctypedef enum iarray_random_rng_t: IARRAY_RANDOM_RNG_MERSENNE_TWISTER IARRAY_RANDOM_RNG_SOBOL ctypedef enum iarray_random_dist_parameter_t: IARRAY_RANDOM_DIST_PARAM_MU IARRAY_RANDOM_DIST_PARAM_SIGMA IARRAY_RANDOM_DIST_PARAM_ALPHA IARRAY_RANDOM_DIST_PARAM_BETA IARRAY_RANDOM_DIST_PARAM_LAMBDA IARRAY_RANDOM_DIST_PARAM_A IARRAY_RANDOM_DIST_PARAM_B IARRAY_RANDOM_DIST_PARAM_P IARRAY_RANDOM_DIST_PARAM_M IARRAY_RANDOM_DIST_PARAM_SENTINEL ctypedef struct iarray_random_ctx_t ina_rc_t iarray_random_ctx_new(iarray_context_t *ctx, uint32_t seed, iarray_random_rng_t rng, iarray_random_ctx_t **rng_ctx) void iarray_random_ctx_free(iarray_context_t *ctx, iarray_random_ctx_t **rng_ctx) ina_rc_t iarray_random_dist_set_param_float(iarray_random_ctx_t *ctx, iarray_random_dist_parameter_t key, float value) ina_rc_t iarray_random_dist_set_param_double(iarray_random_ctx_t *ctx, iarray_random_dist_parameter_t key, double value) ina_rc_t iarray_random_rand(iarray_context_t *ctx, iarray_dtshape_t *dtshape, iarray_random_ctx_t *rand_ctx, iarray_storage_t *store, int flags, iarray_container_t **container) ina_rc_t iarray_random_randn(iarray_context_t *ctx, iarray_dtshape_t *dtshape, iarray_random_ctx_t *rand_ctx, iarray_storage_t *store, int flags, iarray_container_t **container) ina_rc_t iarray_random_beta(iarray_context_t *ctx, iarray_dtshape_t *dtshape, iarray_random_ctx_t *rand_ctx, iarray_storage_t *store, int flags, iarray_container_t **container) ina_rc_t iarray_random_lognormal(iarray_context_t *ctx, iarray_dtshape_t *dtshape, iarray_random_ctx_t *rand_ctx, iarray_storage_t *store, int flags, iarray_container_t **container) ina_rc_t iarray_random_exponential(iarray_context_t *ctx, iarray_dtshape_t *dtshape, iarray_random_ctx_t *random_ctx, iarray_storage_t *store, int flags, iarray_container_t **container) ina_rc_t iarray_random_uniform(iarray_context_t *ctx, iarray_dtshape_t *dtshape, iarray_random_ctx_t *random_ctx, iarray_storage_t *store, int flags, iarray_container_t **container) ina_rc_t iarray_random_normal(iarray_context_t *ctx, iarray_dtshape_t *dtshape, iarray_random_ctx_t *random_ctx, iarray_storage_t *store, int flags, iarray_container_t **container) ina_rc_t iarray_random_bernoulli(iarray_context_t *ctx, iarray_dtshape_t *dtshape, iarray_random_ctx_t *random_ctx, iarray_storage_t *store, int flags, iarray_container_t **container) ina_rc_t iarray_random_binomial(iarray_context_t *ctx, iarray_dtshape_t *dtshape, iarray_random_ctx_t *random_ctx, iarray_storage_t *store, int flags, iarray_container_t **container) ina_rc_t iarray_random_poisson(iarray_context_t *ctx, iarray_dtshape_t *dtshape, iarray_random_ctx_t *random_ctx, iarray_storage_t *store, int flags, iarray_container_t **container) ina_rc_t iarray_random_kstest(iarray_context_t *ctx, iarray_container_t *container1, iarray_container_t *container2, bool *res)