Final stretch of standardizing Butina - #241
Conversation
Signed-off-by: Matthew Neba <mattneba4343@gmail.com>
|
| Filename | Overview |
|---|---|
| src/butina.cu | Implements deterministic higher-index tie-breaking, coordinated cluster/centroid remapping, and internal centroid storage when centroid output is omitted; no actionable defect identified. |
| src/butina_common.cuh | Adds shared helpers for decoding packed Butina candidates while preserving inactive-candidate handling. |
| src/fused_butina.cu | Updates fused centroid selection to use the renamed shared candidate-decoding helper without changing behavior. |
Reviews (1): Last reviewed commit: "Final stretch of standardizing Butina" | Re-trigger Greptile
| //! Uses CUB's DeviceReduce::ArgMax when available (CCCL >= 2.8.0), otherwise falls back to custom kernel. | ||
| class ArgMaxRunner { | ||
| public: | ||
| ArgMaxRunner([[maybe_unused]] size_t num_items, cudaStream_t stream) |
There was a problem hiding this comment.
This backup path was here because older versions of CCCL ship with olders versions of CUDA. The first CUDA that natively ships sufficient CCCL is 12.9 https://docs.nvidia.com/cuda/archive/12.9.1/cuda-toolkit-release-notes/index.html#cuda-toolkit-major-components
I'm hoping to support 12.5 for a few more release cycles due to some users being stuck on older AWS instances. Can you check on this?
EDIT: I see your replacement is in-kernel cubmax, not devicemax - so it may be this concern is invalid. If you can quickly double-check the API is supported in older cccl, this is probably good to go. Thanks!
|
Yeah, I just double checked it on 12.5, it works. Since the O(n^2) distance thresholding step dominates the runtime anyways (>60%), and some added complexity would'hv been needed to make the new changes work with DeviceReduce (which would'hv improved runtime by 1.5% at 30k fingerprints), decided to go for the in kernel cubmax. |
Summary