Skip to content

Instantly share code, notes, and snippets.

View FrancescAlted's full-sized avatar

Francesc Alted FrancescAlted

View GitHub Profile
@FrancescAlted
FrancescAlted / blosc2-jit-microbench.ipynb
Created March 10, 2025 18:08
Micro-benchmark for blosc2, using numpy functions, reductions and broadcasting
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
area_circle = ia.nansum(circle)
area_square = ia.nansum(square)
print(f"PI estimate: {4 * area_circle / area_square}")
expr = ia.expr_from_udf(filter_func,
[rand_data],
[shape[0], shape[1], True])
circle = expr.eval()
expr = ia.expr_from_udf(filter_func,
[rand_data],
[shape[0], shape[1], False])
square = expr.eval()
@udf.jit()
def filter_func(out: udf.Array(udf.float32, 2),
vals: udf.Array(udf.float32, 2),
nrows: udf.int64, ncols: udf.int64,
iscircle: udf.bool) -> udf.int32:
n = out.window_shape[0]
m = out.window_shape[1]
row_start = out.window_start[0]
col_start = out.window_start[1]
for i in range(n):
@udf.scalar()
def square_filter(val: udf.float32) -> udf.float32:
if val >= 0.5:
return 1.
return math.nan
import iarray as ia
shape = (40_000, 40_000)
ia.set_config_defaults(dtype=np.float32, fp_mantissa_bits=15)
rand_data = ia.random.random_sample(shape)
@udf.scalar()
def circle_filter(val: udf.float32, row: udf.int64, col: udf.int64,
nrows: udf.int64, ncols: udf.int64) -> udf.float32:
x = (2. * row / nrows) - 1.
y = (2. * col / ncols) - 1.
if ((x ** 2 + y ** 2) <= 1) and val >= 0.5:
return 1.
return math.nan
@FrancescAlted
FrancescAlted / circle_filter.py
Created September 12, 2022 07:07
Computing π using ironArray
@udf.scalar()
def circle_filter(val: udf.float32, row: udf.int64, col: udf.int64,
nrows: udf.int64, ncols: udf.int64)
-> udf.float32:
x = (2. * row / nrows) - 1.
y = (2. * col / ncols) - 1.
if ((x ** 2 + y ** 2) <= 1) and val >= 0.5:
return 1.
return math.nan
@FrancescAlted
FrancescAlted / Estimating-Pi-ironArray.py
Last active September 12, 2022 08:11
Estimating the value of Pi for an ironArray blog (https://medium.com/p/bd4b08b799a8)
import numpy as np
import iarray as ia
from iarray import udf
import math
# Params for array construction
shape = (40_000, 40_000)
ia.set_config_defaults(dtype=np.float32, fp_mantissa_bits=15)