Describe the bug
cuml.cluster.SpectralClustering causes a segmentation fault when using affinity="precomputed" with a small dense NumPy float32 affinity matrix.
The equivalent sklearn.cluster.SpectralClustering code runs successfully and returns:
However, cuML terminates the Python process with:
Segmentation fault (core dumped)
Steps/Code to reproduce bug
cuML reproducer:
import numpy as np
from cuml.cluster import SpectralClustering
a = np.array([
[1.0, 0.9, 0.0],
[0.9, 1.0, 0.0],
[0.0, 0.0, 1.0],
], dtype=np.float32)
print(
SpectralClustering(
n_clusters=2,
affinity="precomputed",
random_state=0,
).fit_predict(a)
)
Output:
Segmentation fault (core dumped)
For comparison, the equivalent scikit-learn code:
import numpy as np
from sklearn.cluster import SpectralClustering
a = np.array([
[1.0, 0.9, 0.0],
[0.9, 1.0, 0.0],
[0.0, 0.0, 1.0],
], dtype=np.float32)
print(
SpectralClustering(
n_clusters=2,
affinity="precomputed",
random_state=0,
).fit_predict(a)
)
Output:
Expected behavior
cuml.cluster.SpectralClustering should not terminate the Python process with a segmentation fault.
For this input, it should either return valid cluster labels or raise an appropriate Python exception.
Environment details (please complete the following information):
- Environment location: Docker
- Linux Distro/Architecture: Ubuntu 24.04 / x86_64
- GPU Model/Driver: NVIDIA GeForce RTX 4090 / 595.71.05
- CUDA: 13.2
- Method of cuDF & cuML install: conda
conda list:
# Name Version Build Channel
python 3.14.6 h242f9ac_102_cp314 conda-forge
numpy 2.4.6 py314h2b28147_0 conda-forge
scipy 1.16.3 py314hf07bd8e_2 conda-forge
scikit-learn 1.9.0 np2py314hf09ca88_0 conda-forge
rapids 26.08.00 cuda13_260806_c2656556 rapidsai
cuml 26.08.00 cuda13_cp311_abi3_260805_265b9da6 rapidsai
libcuml 26.08.00 cuda13_260805_265b9da6 rapidsai
cudf 26.08.00 cuda13_cp311_abi3_260805_ff5b362d rapidsai
libraft 26.08.00 cuda13_260805_ebf92684 rapidsai
libraft-headers 26.08.00 cuda13_260805_ebf92684 rapidsai
pylibraft 26.08.00 cuda13_cp311_abi3_260805_ebf92684 rapidsai
cuvs 26.08.01 cuda13_cp311_abi3_260806_25b1be43 rapidsai
libcuvs 26.08.01 cuda13_260806_25b1be43 rapidsai
cupy 14.1.1 py314hdea9c46_0 conda-forge
cupy-core 14.1.1 py314hcd3b49b_0 conda-forge
numba 0.64.0 py314h8169c2f_0 conda-forge
numba-cuda 0.30.4 py314h42812f9_0 conda-forge
rmm 26.08.00 cuda13_cp311_abi3_260805_42d059f1 rapidsai
librmm 26.08.00 cuda13_260805_42d059f1 rapidsai
cuda-version 13.3 hcbadf70_3 conda-forge
cuda-bindings 13.3.1 py314h42812f9_1 conda-forge
cuda-cudart 13.3.29 hecca717_0 conda-forge
cuda-nvrtc 13.3.33 hecca717_0 conda-forge
libcublas 13.6.0.2 h676940d_0 conda-forge
libcusolver 12.2.6.9 h676940d_0 conda-forge
libcusparse 12.8.2.51 hecca717_0 conda-forge
libcurand 10.4.3.29 h676940d_0 conda-forge
Describe the bug
cuml.cluster.SpectralClusteringcauses a segmentation fault when usingaffinity="precomputed"with a small dense NumPyfloat32affinity matrix.The equivalent
sklearn.cluster.SpectralClusteringcode runs successfully and returns:However, cuML terminates the Python process with:
Steps/Code to reproduce bug
cuML reproducer:
Output:
For comparison, the equivalent scikit-learn code:
Output:
Expected behavior
cuml.cluster.SpectralClusteringshould not terminate the Python process with a segmentation fault.For this input, it should either return valid cluster labels or raise an appropriate Python exception.
Environment details (please complete the following information):
conda list: