Repository navigation
Proposal: data-shape-aware fast paths and AArch64 vectorization guidance #7389
GENG-CHOVYYYY
started this conversation in
Ideas
Replies: 2 comments 2 replies
|
Hi @GENG-CHOVYYYY, thanks for opening this up. This is something we've been thinking about for a while, so its great that you brought it up.
|
2 replies
|
Hi @srilman — following up on your guidance in #7389. The scoped implementation is now available in #7430. It keeps the change limited to a guarded dense-integer Could you please confirm whether #7422 is approved for this narrow scope, or let me know what design changes or additional evidence would be needed before review? I will keep the work limited to this path. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Summary
I use Daft on AArch64 servers for multimodal data-engineering workloads. Profiling has exposed a few narrow, data-shape-dependent hot paths in sort, join, and take. I would like to contribute guarded fast paths for those cases and get guidance on evaluating portable vectorization and AArch64 affinity tuning without introducing CPU-family-specific behavior.
Candidate work
Boolean and dense integer
argsortDense integer join probe
When integer build keys occupy a compact, bounded range, a direct-index structure can avoid a general hash lookup on the probe side. This seems related to #7076, so I would prefer maintainer advice on whether to continue the discussion there before opening another issue.
Identity and range
takeDetect identity indices and contiguous ranges, then use clone or slice semantics instead of a materializing gather. Arbitrary indices would continue through the generic gather path.
Vectorization and affinity on AArch64
For primitive loops used by comparisons, hashing, filters, and gather-like access, I would investigate the following order:
For scheduling, I am looking for a supported way to experiment with opt-in parallelism or affinity settings. I do not want to change Daft's global defaults based on one server family.
Validation
Before opening a PR, I would provide a small public fixture, a Rust microbenchmark covering both the fast-path trigger and fallback, semantic tests, and an end-to-end check. I would report AArch64 and x86 results separately. The work can be reproduced without upstreaming proprietary data.
Questions
All reactions