Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
883eac9
feat: add `awkward_IndexedArray_overlay_mask` kernel using cuda.compute
maxymnaumchyk Apr 15, 2026
ce870c7
feat: add `awkward_IndexedArray_reduce_next_64` kernel using cuda.com…
maxymnaumchyk Apr 16, 2026
ed40791
feat: add `IndexedArray_reduce_next_nonlocal_nextshifts_64` kernel us…
maxymnaumchyk Apr 17, 2026
ed9f4ee
feat: add `ByteMaskedArray_getitem_nextcarry` kernel using cuda.compute
maxymnaumchyk Apr 17, 2026
394d017
feat: add `awkward_ByteMaskedArray_numnull` kernel using cuda.compute
maxymnaumchyk Apr 20, 2026
0ed2175
feat: add `awkward_RegularArray_getitem_jagged_expand` kernel using c…
maxymnaumchyk Apr 21, 2026
2aa4c39
add an upper bound
maxymnaumchyk Apr 21, 2026
8ee1e6b
Merge branch 'main' into maxymnaumchyk/3978-awkward_indexedarray_over…
maxymnaumchyk Apr 21, 2026
f117e70
style: pre-commit fixes
pre-commit-ci[bot] Apr 21, 2026
d491d37
feat: add `awkward_RegularArray_getitem_jagged_expand` kernel using c…
maxymnaumchyk Apr 21, 2026
167bc94
feat: add `awkward_UnionArray_simplify_one` kernel using cuda.compute
maxymnaumchyk Apr 21, 2026
93104c6
feat: add `awkward_ListArray_broadcast_tooffsets` kernel using cuda.c…
maxymnaumchyk Apr 27, 2026
219419c
feat: add `awkward_ListArray_localindex` kernel using cuda.compute
maxymnaumchyk Apr 27, 2026
731e572
fix the impl
maxymnaumchyk Apr 27, 2026
0cb3721
feat: add `awkward_ListArray_compact_offsets` kernel using cuda.compute
maxymnaumchyk Apr 28, 2026
5982197
feat: add `awkward_ListArray_combinations_length` kernel using cuda.c…
maxymnaumchyk Apr 28, 2026
4479ce2
feat: add `awkward_ListArray_combinations` kernel using cuda.compute
maxymnaumchyk May 4, 2026
1d1cc3d
feat: add `awkward_UnionArray_nestedfill_tags_index` kernel using cud…
maxymnaumchyk May 5, 2026
1b6ee9a
Merge branch 'main' into maxymnaumchyk/3978-awkward_indexedarray_over…
maxymnaumchyk May 5, 2026
8935bab
fix the tests for kernels that are deliberately raising errors
maxymnaumchyk May 5, 2026
2428e5c
compare `starts` and `stops` separately
maxymnaumchyk May 6, 2026
7b9a1dc
Merge branch 'main' into maxymnaumchyk/3978-awkward_indexedarray_over…
maxymnaumchyk May 6, 2026
28d6206
ignore `memptr` argument for pylint
maxymnaumchyk May 6, 2026
1c891ad
Merge branch 'awkward3' into maxymnaumchyk/3978-awkward_indexedarray_…
ianna May 18, 2026
5b75fc4
style: pre-commit fixes
pre-commit-ci[bot] May 18, 2026
2d7b6b8
Add functions for indexing and repeating arrays
ianna May 18, 2026
972a456
style: pre-commit fixes
pre-commit-ci[bot] May 18, 2026
ac3bb21
return unary_transform call for segment_ids
maxymnaumchyk May 18, 2026
9bd7682
style: pre-commit fixes
pre-commit-ci[bot] May 18, 2026
8d85968
update the `awkward_IndexedArray_reduce_next_64` to work with offsets
maxymnaumchyk May 18, 2026
1193083
style: pre-commit fixes
pre-commit-ci[bot] May 18, 2026
a7ac8a7
Merge branch 'awkward3' into maxymnaumchyk/3978-awkward_indexedarray_…
ianna May 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions dev/generate-kernel-signatures.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@
"awkward_ListArray_min_range",
"awkward_ListArray_validity",
"awkward_BitMaskedArray_to_ByteMaskedArray",
"awkward_ListArray_broadcast_tooffsets",
"awkward_ListArray_compact_offsets",
# "awkward_ListArray_broadcast_tooffsets",
# "awkward_ListArray_compact_offsets",
"awkward_ListOffsetArray_flatten_offsets",
"awkward_IndexedArray_overlay_mask",
"awkward_ByteMaskedArray_numnull",
# "awkward_IndexedArray_overlay_mask",
# "awkward_ByteMaskedArray_numnull",
"awkward_IndexedArray_numnull",
"awkward_IndexedArray_numnull_parents",
"awkward_IndexedArray_numnull_unique_64",
Expand Down Expand Up @@ -51,9 +51,9 @@
"awkward_RegularArray_reduce_local_nextparents_64",
"awkward_RegularArray_reduce_nonlocal_preparenext_64",
# "awkward_missing_repeat",
"awkward_RegularArray_getitem_jagged_expand",
"awkward_ListArray_combinations_length",
"awkward_ListArray_combinations",
# "awkward_RegularArray_getitem_jagged_expand",
# "awkward_ListArray_combinations_length",
# "awkward_ListArray_combinations",
"awkward_RegularArray_combinations_64",
"awkward_ListArray_getitem_jagged_apply",
"awkward_ListArray_getitem_jagged_carrylen",
Expand All @@ -72,14 +72,14 @@
"awkward_UnionArray_regular_index",
"awkward_ListOffsetArray_reduce_nonlocal_nextstarts_64",
"awkward_ListArray_getitem_next_range_spreadadvanced",
"awkward_ListArray_localindex",
# "awkward_ListArray_localindex",
"awkward_NumpyArray_pad_zero_to_length",
"awkward_NumpyArray_reduce_adjust_starts_64",
"awkward_NumpyArray_rearrange_shifted",
"awkward_NumpyArray_reduce_adjust_starts_shifts_64",
"awkward_RegularArray_getitem_next_at",
"awkward_BitMaskedArray_to_IndexedOptionArray",
"awkward_ByteMaskedArray_getitem_nextcarry",
# "awkward_ByteMaskedArray_getitem_nextcarry",
"awkward_ByteMaskedArray_getitem_nextcarry_outindex",
"awkward_ByteMaskedArray_reduce_next_64",
"awkward_ByteMaskedArray_reduce_next_nonlocal_nextshifts_64",
Expand All @@ -97,8 +97,8 @@
"awkward_IndexedArray_local_preparenext_64",
"awkward_IndexedArray_ranges_next_64",
"awkward_IndexedArray_ranges_carry_next_64",
"awkward_IndexedArray_reduce_next_64",
"awkward_IndexedArray_reduce_next_nonlocal_nextshifts_64",
# "awkward_IndexedArray_reduce_next_64",
# "awkward_IndexedArray_reduce_next_nonlocal_nextshifts_64",
"awkward_IndexedArray_reduce_next_nonlocal_nextshifts_fromshifts_64",
"awkward_IndexedOptionArray_rpad_and_clip_mask_axis1",
"awkward_ListOffsetArray_local_preparenext_64",
Expand All @@ -118,7 +118,7 @@
"awkward_UnionArray_nestedfill_tags_index",
"awkward_UnionArray_regular_index_getsize",
"awkward_UnionArray_simplify",
"awkward_UnionArray_simplify_one",
# "awkward_UnionArray_simplify_one",
"awkward_RecordArray_reduce_nonlocal_outoffsets_64",
# "awkward_reduce_count_64",
# "awkward_reduce_max",
Expand Down
43 changes: 32 additions & 11 deletions dev/generate-tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -1567,19 +1567,40 @@ def gencudaunittests(specdict):
count += 1
else:
args += ", " + arg.name
f.write(" " * 4 + "funcC(" + args + ")\n")
# Determine if this is a cuda.compute kernel (raises errors eagerly)
# or compiled CUDA kernel (raises errors after `ak_cu.synchronize_cuda()`)
CUDA_COPUTE_KERNELS = {
"awkward_ListArray_compact_offsets",
"awkward_ListArray_broadcast_tooffsets",
}

raises_error_eagerly = (
spec.templatized_kernel_name in CUDA_COPUTE_KERNELS
)

if test["error"]:
f.write(
f"""
error_message = re.escape("{test["message"]} in compiled CUDA code ({spec.templatized_kernel_name})")
"""
)
f.write(
""" with pytest.raises(ValueError, match=rf"{error_message}"):
ak_cu.synchronize_cuda()
"""
)
error_message_line = f' error_message = re.escape("{test["message"]} in compiled CUDA code ({spec.templatized_kernel_name})")\n'
if raises_error_eagerly:
# call a kernel directly inside `pytest.raises()`
f.write(
"\n"
+ error_message_line
+ ' with pytest.raises(ValueError, match=rf"{error_message}"):\n'
+ " " * 8
+ "funcC("
+ args
+ ")\n"
)
else:
f.write(" " * 4 + "funcC(" + args + ")\n")
f.write(
"\n"
+ error_message_line
+ ' with pytest.raises(ValueError, match=rf"{error_message}"):\n'
" ak_cu.synchronize_cuda()\n"
)
else:
f.write(" " * 4 + "funcC(" + args + ")\n")
f.write(
"""
try:
Expand Down
24 changes: 24 additions & 0 deletions src/awkward/_backends/cupy.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,18 @@ def _supports_cuda_compute(self, kernel_name: str) -> bool:
"awkward_reduce_argmin_complex",
"awkward_reduce_count_64",
"awkward_reduce_countnonzero",
"awkward_IndexedArray_overlay_mask",
"awkward_IndexedArray_reduce_next_64",
"awkward_IndexedArray_reduce_next_nonlocal_nextshifts_64",
"awkward_ByteMaskedArray_getitem_nextcarry",
"awkward_ByteMaskedArray_numnull",
"awkward_RegularArray_getitem_jagged_expand",
"awkward_UnionArray_simplify_one",
"awkward_ListArray_broadcast_tooffsets",
"awkward_ListArray_localindex",
"awkward_ListArray_compact_offsets",
"awkward_ListArray_combinations_length",
"awkward_ListArray_combinations",
"awkward_reduce_countnonzero_complex",
# indexing / structure
"awkward_missing_repeat",
Expand Down Expand Up @@ -128,6 +140,18 @@ def _get_cuda_compute_impl(self, kernel_name: str):
"awkward_missing_repeat": cuda_compute.awkward_missing_repeat,
"awkward_index_rpad_and_clip_axis0": cuda_compute.awkward_index_rpad_and_clip_axis0,
"awkward_index_rpad_and_clip_axis1": cuda_compute.awkward_index_rpad_and_clip_axis1,
"awkward_IndexedArray_overlay_mask": cuda_compute.awkward_IndexedArray_overlay_mask,
"awkward_IndexedArray_reduce_next_64": cuda_compute.awkward_IndexedArray_reduce_next_64,
"awkward_IndexedArray_reduce_next_nonlocal_nextshifts_64": cuda_compute.awkward_IndexedArray_reduce_next_nonlocal_nextshifts_64,
"awkward_ByteMaskedArray_getitem_nextcarry": cuda_compute.awkward_ByteMaskedArray_getitem_nextcarry,
"awkward_ByteMaskedArray_numnull": cuda_compute.awkward_ByteMaskedArray_numnull,
"awkward_RegularArray_getitem_jagged_expand": cuda_compute.awkward_RegularArray_getitem_jagged_expand,
"awkward_UnionArray_simplify_one": cuda_compute.awkward_UnionArray_simplify_one,
"awkward_ListArray_broadcast_tooffsets": cuda_compute.awkward_ListArray_broadcast_tooffsets,
"awkward_ListArray_localindex": cuda_compute.awkward_ListArray_localindex,
"awkward_ListArray_compact_offsets": cuda_compute.awkward_ListArray_compact_offsets,
"awkward_ListArray_combinations_length": cuda_compute.awkward_ListArray_combinations_length,
"awkward_ListArray_combinations": cuda_compute.awkward_ListArray_combinations,
}.get(kernel_name)

def prepare_reducer(self, reducer: ak._reducers.Reducer) -> ak._reducers.Reducer:
Expand Down
Loading
Loading