Skip to content

Commit f014507

Browse files
committed
Merge develop
Signed-off-by: Nicholas Gates <[email protected]>
1 parent 30ebc09 commit f014507

File tree

4 files changed

+51
-24
lines changed

4 files changed

+51
-24
lines changed

encodings/alp/src/alp/array.rs

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ use vortex_array::Precision;
1616
use vortex_array::ProstMetadata;
1717
use vortex_array::SerializeMetadata;
1818
use vortex_array::execution::ExecutionCtx;
19+
use vortex_array::kernel::KernelRef;
20+
use vortex_array::kernel::kernel;
1921
use vortex_array::patches::Patches;
2022
use vortex_array::patches::PatchesMetadata;
2123
use vortex_array::serde::ArrayChildren;
@@ -41,7 +43,6 @@ use vortex_error::VortexExpect;
4143
use vortex_error::VortexResult;
4244
use vortex_error::vortex_bail;
4345
use vortex_error::vortex_ensure;
44-
use vortex_vector::Vector;
4546

4647
use crate::ALPFloat;
4748
use crate::alp::Exponents;
@@ -140,10 +141,9 @@ impl VTable for ALPVTable {
140141
)
141142
}
142143

143-
fn bind_kernel(array: &ALPArray, ctx: &mut ExecutionCtx) -> VortexResult<Vector> {
144-
let encoded_vector = array.encoded().bind_kernel(ctx)?;
145-
146-
let patches_vectors = if let Some(patches) = array.patches() {
144+
fn bind_kernel(array: &ALPArray, ctx: &mut ExecutionCtx) -> VortexResult<KernelRef> {
145+
let encoded = array.encoded().bind_kernel(ctx)?;
146+
let patches_kernels = if let Some(patches) = array.patches() {
147147
Some((
148148
patches.indices().bind_kernel(ctx)?,
149149
patches.values().bind_kernel(ctx)?,
@@ -161,7 +161,24 @@ impl VTable for ALPVTable {
161161
let exponents = array.exponents();
162162

163163
match_each_alp_float_ptype!(array.dtype().as_ptype(), |T| {
164-
decompress_into_vector::<T>(encoded_vector, exponents, patches_vectors, patches_offset)
164+
Ok(kernel(move || {
165+
let encoded_vector = encoded.execute()?;
166+
let patches_vectors = match patches_kernels {
167+
Some((idx_kernel, val_kernel, co_kernel)) => Some((
168+
idx_kernel.execute()?,
169+
val_kernel.execute()?,
170+
co_kernel.map(|k| k.execute()).transpose()?,
171+
)),
172+
None => None,
173+
};
174+
175+
decompress_into_vector::<T>(
176+
encoded_vector,
177+
exponents,
178+
patches_vectors,
179+
patches_offset,
180+
)
181+
}))
165182
})
166183
}
167184
}

encodings/fastlanes/src/bitpacking/vtable/mod.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ use vortex_array::DeserializeMetadata;
55
use vortex_array::ProstMetadata;
66
use vortex_array::SerializeMetadata;
77
use vortex_array::execution::ExecutionCtx;
8+
use vortex_array::kernel::KernelRef;
9+
use vortex_array::kernel::kernel;
810
use vortex_array::patches::Patches;
911
use vortex_array::patches::PatchesMetadata;
1012
use vortex_array::serde::ArrayChildren;
@@ -23,7 +25,6 @@ use vortex_error::VortexError;
2325
use vortex_error::VortexResult;
2426
use vortex_error::vortex_bail;
2527
use vortex_error::vortex_err;
26-
use vortex_vector::Vector;
2728
use vortex_vector::VectorMutOps;
2829

2930
use crate::BitPackedArray;
@@ -172,8 +173,11 @@ impl VTable for BitPackedVTable {
172173
)
173174
}
174175

175-
fn bind_kernel(array: &BitPackedArray, _ctx: &mut ExecutionCtx) -> VortexResult<Vector> {
176-
Ok(unpack_to_primitive_vector(array).freeze().into())
176+
fn bind_kernel(array: &BitPackedArray, _ctx: &mut ExecutionCtx) -> VortexResult<KernelRef> {
177+
let array = array.clone();
178+
Ok(kernel(move || {
179+
Ok(unpack_to_primitive_vector(&array).freeze().into())
180+
}))
177181
}
178182
}
179183

encodings/sequence/src/array.rs

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ use vortex_array::ProstMetadata;
1616
use vortex_array::SerializeMetadata;
1717
use vortex_array::arrays::PrimitiveArray;
1818
use vortex_array::execution::ExecutionCtx;
19+
use vortex_array::kernel::KernelRef;
20+
use vortex_array::kernel::kernel;
1921
use vortex_array::serde::ArrayChildren;
2022
use vortex_array::stats::ArrayStats;
2123
use vortex_array::stats::StatsSetRef;
@@ -48,7 +50,6 @@ use vortex_mask::Mask;
4850
use vortex_scalar::PValue;
4951
use vortex_scalar::Scalar;
5052
use vortex_scalar::ScalarValue;
51-
use vortex_vector::Vector;
5253
use vortex_vector::primitive::PVector;
5354

5455
vtable!(Sequence);
@@ -268,23 +269,28 @@ impl VTable for SequenceVTable {
268269
))
269270
}
270271

271-
fn bind_kernel(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult<Vector> {
272+
fn bind_kernel(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult<KernelRef> {
273+
let array = array.clone();
274+
272275
Ok(match_each_native_ptype!(array.ptype(), |P| {
273276
let base = array.base().cast::<P>();
274277
let multiplier = array.multiplier().cast::<P>();
275278

276-
let values = if multiplier == <P>::one() {
277-
BufferMut::from_iter(
278-
(0..array.len()).map(|i| base + <P>::from_usize(i).vortex_expect("must fit")),
279-
)
280-
} else {
281-
BufferMut::from_iter(
282-
(0..array.len())
283-
.map(|i| base + <P>::from_usize(i).vortex_expect("must fit") * multiplier),
284-
)
285-
};
286-
287-
PVector::<P>::new(values.freeze(), Mask::new_true(array.len())).into()
279+
kernel(move || {
280+
let values =
281+
if multiplier == <P>::one() {
282+
BufferMut::from_iter(
283+
(0..array.len())
284+
.map(|i| base + <P>::from_usize(i).vortex_expect("must fit")),
285+
)
286+
} else {
287+
BufferMut::from_iter((0..array.len()).map(|i| {
288+
base + <P>::from_usize(i).vortex_expect("must fit") * multiplier
289+
}))
290+
};
291+
292+
Ok(PVector::<P>::new(values.freeze(), Mask::new_true(array.len())).into())
293+
})
288294
}))
289295
}
290296
}

vortex-array/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ pub mod expr;
3535
mod expression;
3636
mod hash;
3737
pub mod iter;
38-
mod kernel;
38+
pub mod kernel;
3939
mod mask;
4040
mod mask_future;
4141
mod metadata;

0 commit comments

Comments
 (0)