Performance and Speedups#
Zero-code-change acceleration with cuml.accel delivers an
approximately 5.8× median speedup across training benchmark cases
completed on both CPU and GPU, measured on NVIDIA RTX Pro 6000. Training
performance varies with the estimator, dataset size and shape, and
hyperparameters, but most measured workloads are faster on GPU, with the
largest gains appearing on wider or larger datasets.
Speedup by operation and workload#
Rows are ranked by the median exact speedup. Green indicates a measured gain, gray is centered at 1×, and warm colors indicate a slowdown. Hatching marks CPU-timeout lower bounds and unavailable results.
A timeout indicates that the complete isolated CPU benchmark case—not a
single estimator call—exceeded its wall-clock limit. When the GPU
run completed, the displayed value is a conservative lower bound (≥), not
an exact speedup.
Training and combined operations#
PCA performance depends strongly on the requested component rank. The table
below holds the input at 61,035 rows by 4,096
features and varies only n_components. The timings show an approximate
crossover from
transfer-dominated low-rank work to positive speedup at higher ranks.
See the detailed PCA results for the remaining workloads.
Components |
PCA CPU / GPU / result |
|---|---|
128 |
1.42 s / 2.97 s / 0.48× |
256 |
2.15 s / 2.91 s / 0.74× |
512 |
3.34 s / 2.98 s / 1.12× |
1,024 |
8.14 s / 3.1 s / 2.62× |
Inference and transforms#
The heatmap shows the 10 operations with the highest median exact speedup. Detailed estimator tables retain every inference and transform result, including short operations where dispatch and data-conversion overhead dominate.
Detailed benchmark results#
Use the workload guide to interpret the heatmaps, then open an estimator for
exact shapes, throughput or wall times, slowdowns, and timeouts. Detailed
results express inference and transform operations as throughput in samples
per second, abbreviated as M/s, k/s, or /s, with one input row
counted as one sample. The wall time used to calculate throughput is shown
below it. Training and combined-operation rows show wall time only.
Five relative workload categories, from transfer-bound to compute-heavy#
Every operation uses the same five relative workload categories, ordered from smaller or more transfer-sensitive cases to larger or more compute-intensive cases. Concrete shapes follow operation-family policies, with workload sizes chosen to complete within reasonable runtime and resource limits. These sizes are illustrative examples across several workload regimes, not scaling limits or maximum supported sizes. The same category can therefore represent different rows, features, and input sizes across operations; exact values appear in the estimator tables.
Label |
Rows |
Features |
Input |
|---|---|---|---|
|
2,000–781,250 |
32–1,024 |
0.256 MB–205 MB |
|
8,000–15,625,000 |
8–128 |
0.256 MB–500 MB |
|
8,000–3,906,250 |
32–1,024 |
1.02 MB–2 GB |
|
8,000–976,563 |
128–4,096 |
8.19 MB–2 GB |
|
32,000–15,625,000 |
32–1,024 |
4.1 MB–10 GB |
Results by estimator#
Open an estimator for every workload, throughput or wall time, slowdown, timeout, and actual shape.
Linear models
ElasticNet
Operation |
Workload |
Rows |
Features |
Input |
CPU |
GPU |
Result |
|---|---|---|---|---|---|---|---|
|
|
50,000 |
128 |
25.6 MB |
24.4 ms |
16.2 ms |
1.51× |
|
|
1,562,500 |
16 |
100 MB |
216.7 ms |
47.7 ms |
4.55× |
|
|
500,000 |
128 |
256 MB |
388.4 ms |
314.8 ms |
1.23× |
|
|
244,140 |
1,024 |
1,000 MB |
2.66 s |
2.47 s |
1.08× |
|
|
5,000,000 |
128 |
2.56 GB |
3.67 s |
3.2 s |
1.15× |
|
|
195,313 |
128 |
100 MB |
32.1M/s 6.1 ms |
23.4M/s 8.3 ms |
0.73× |
|
|
7,812,500 |
16 |
500 MB |
251M/s 31.2 ms |
176M/s 44.3 ms |
0.70× |
|
|
976,563 |
128 |
500 MB |
32.6M/s 29.9 ms |
23.8M/s 41.1 ms |
0.73× |
|
|
488,281 |
1,024 |
2 GB |
4.74M/s 103.0 ms |
3.05M/s 160.0 ms |
0.64× |
|
|
5,000,000 |
128 |
2.56 GB |
41.1M/s 121.6 ms |
24.1M/s 207.2 ms |
0.59× |
Lasso
Operation |
Workload |
Rows |
Features |
Input |
CPU |
GPU |
Result |
|---|---|---|---|---|---|---|---|
|
|
50,000 |
128 |
25.6 MB |
22.6 ms |
16.7 ms |
1.35× |
|
|
1,562,500 |
16 |
100 MB |
130.2 ms |
46.7 ms |
2.79× |
|
|
500,000 |
128 |
256 MB |
398.2 ms |
322.9 ms |
1.23× |
|
|
244,140 |
1,024 |
1,000 MB |
2.62 s |
2.45 s |
1.07× |
|
|
5,000,000 |
128 |
2.56 GB |
3.75 s |
3.19 s |
1.17× |
|
|
195,313 |
128 |
100 MB |
35M/s 5.6 ms |
23.5M/s 8.3 ms |
0.67× |
|
|
7,812,500 |
16 |
500 MB |
247M/s 31.6 ms |
176M/s 44.3 ms |
0.71× |
|
|
976,563 |
128 |
500 MB |
34.4M/s 28.4 ms |
23.8M/s 41.1 ms |
0.69× |
|
|
488,281 |
1,024 |
2 GB |
4.9M/s 99.6 ms |
3.04M/s 160.5 ms |
0.62× |
|
|
5,000,000 |
128 |
2.56 GB |
41.1M/s 121.6 ms |
24M/s 208.0 ms |
0.58× |
LinearRegression
Operation |
Workload |
Rows |
Features |
Input |
CPU |
GPU |
Result |
|---|---|---|---|---|---|---|---|
|
|
50,000 |
128 |
25.6 MB |
54.9 ms |
7.3 ms |
7.50× |
|
|
1,562,500 |
16 |
100 MB |
223.0 ms |
17.0 ms |
13.1× |
|
|
500,000 |
128 |
256 MB |
805.3 ms |
46.3 ms |
17.4× |
|
|
244,140 |
1,024 |
1,000 MB |
4.99 s |
113.0 ms |
44.2× |
|
|
5,000,000 |
128 |
2.56 GB |
10.6 s |
1.04 s |
10.2× |
|
|
195,313 |
128 |
100 MB |
22.7M/s 8.6 ms |
23M/s 8.5 ms |
1.01× |
|
|
7,812,500 |
16 |
500 MB |
248M/s 31.5 ms |
178M/s 43.9 ms |
0.72× |
|
|
976,563 |
128 |
500 MB |
32.6M/s 30.0 ms |
23.8M/s 41.0 ms |
0.73× |
|
|
488,281 |
1,024 |
2 GB |
4.87M/s 100.2 ms |
3.05M/s 160.3 ms |
0.63× |
|
|
5,000,000 |
128 |
2.56 GB |
41M/s 121.9 ms |
24.1M/s 207.2 ms |
0.59× |
LogisticRegression
Operation |
Workload |
Rows |
Features |
Input |
CPU |
GPU |
Result |
|---|---|---|---|---|---|---|---|
|
|
50,000 |
128 |
25.6 MB |
29.4 ms |
6.3 ms |
4.64× |
|
|
1,562,500 |
16 |
100 MB |
683.6 ms |
18.0 ms |
38.0× |
|
|
500,000 |
128 |
256 MB |
369.5 ms |
29.6 ms |
12.5× |
|
|
244,140 |
1,024 |
1,000 MB |
533.0 ms |
96.6 ms |
5.52× |
|
|
5,000,000 |
128 |
2.56 GB |
3.32 s |
266.2 ms |
12.5× |
|
|
195,313 |
128 |
100 MB |
39.2M/s 5.0 ms |
23.2M/s 8.4 ms |
0.59× |
|
|
7,812,500 |
16 |
500 MB |
188M/s 41.6 ms |
180M/s 43.4 ms |
0.96× |
|
|
976,563 |
128 |
500 MB |
31.7M/s 30.8 ms |
23.8M/s 41.0 ms |
0.75× |
|
|
488,281 |
1,024 |
2 GB |
3.82M/s 127.9 ms |
3.04M/s 160.7 ms |
0.80× |
|
|
5,000,000 |
128 |
2.56 GB |
38.6M/s 129.5 ms |
24.1M/s 207.4 ms |
0.62× |
Ridge
Operation |
Workload |
Rows |
Features |
Input |
CPU |
GPU |
Result |
|---|---|---|---|---|---|---|---|
|
|
50,000 |
128 |
25.6 MB |
27.6 ms |
7.1 ms |
3.86× |
|
|
1,562,500 |
16 |
100 MB |
106.0 ms |
18.4 ms |
5.75× |
|
|
500,000 |
128 |
256 MB |
221.4 ms |
49.8 ms |
4.44× |
|
|
244,140 |
1,024 |
1,000 MB |
537.9 ms |
129.7 ms |
4.15× |
|
|
5,000,000 |
128 |
2.56 GB |
1.54 s |
490.0 ms |
3.15× |
|
|
195,313 |
128 |
100 MB |
35.1M/s 5.6 ms |
23.6M/s 8.3 ms |
0.67× |
|
|
7,812,500 |
16 |
500 MB |
253M/s 30.9 ms |
178M/s 43.8 ms |
0.71× |
|
|
976,563 |
128 |
500 MB |
34.1M/s 28.7 ms |
23.8M/s 41.1 ms |
0.70× |
|
|
488,281 |
1,024 |
2 GB |
4.93M/s 99.0 ms |
3.04M/s 160.5 ms |
0.62× |
|
|
5,000,000 |
128 |
2.56 GB |
40M/s 125.1 ms |
24.2M/s 206.7 ms |
0.61× |
Clustering and manifold learning
DBSCAN
Operation |
Workload |
Rows |
Features |
Input |
CPU |
GPU |
Result |
|---|---|---|---|---|---|---|---|
|
|
2,000 |
32 |
0.256 MB |
5.7 ms |
1.1 ms |
5.00× |
|
|
8,000 |
8 |
0.256 MB |
70.5 ms |
2.0 ms |
35.1× |
|
|
8,000 |
32 |
1.02 MB |
19.5 ms |
1.9 ms |
10.3× |
|
|
8,000 |
256 |
8.19 MB |
62.4 ms |
3.1 ms |
19.9× |
|
|
32,000 |
32 |
4.1 MB |
168.5 ms |
13.9 ms |
12.2× |
HDBSCAN
Operation |
Workload |
Rows |
Features |
Input |
CPU |
GPU |
Result |
|---|---|---|---|---|---|---|---|
|
|
2,000 |
32 |
0.256 MB |
40.3 ms |
7.4 ms |
5.46× |
|
|
8,000 |
8 |
0.256 MB |
105.0 ms |
10.2 ms |
10.3× |
|
|
8,000 |
32 |
1.02 MB |
211.2 ms |
10.6 ms |
19.9× |
|
|
8,000 |
256 |
8.19 MB |
4.76 s |
14.7 ms |
325× |
|
|
32,000 |
32 |
4.1 MB |
1.09 s |
34.3 ms |
31.7× |
KMeans
Operation |
Workload |
Rows |
Features |
Input |
CPU |
GPU |
Result |
|---|---|---|---|---|---|---|---|
|
|
50,000 |
128 |
25.6 MB |
66.5 ms |
24.1 ms |
2.77× |
|
|
1,562,500 |
16 |
100 MB |
492.9 ms |
81.8 ms |
6.02× |
|
|
500,000 |
128 |
256 MB |
526.2 ms |
143.4 ms |
3.67× |
|
|
244,140 |
1,024 |
1,000 MB |
6.8 s |
477.5 ms |
14.2× |
|
|
5,000,000 |
128 |
2.56 GB |
13.5 s |
1.3 s |
10.4× |
|
|
195,313 |
128 |
100 MB |
36.1M/s 5.4 ms |
21.4M/s 9.1 ms |
0.59× |
|
|
7,812,500 |
16 |
500 MB |
107M/s 72.7 ms |
150M/s 51.9 ms |
1.40× |
|
|
976,563 |
128 |
500 MB |
32.9M/s 29.7 ms |
22.9M/s 42.6 ms |
0.70× |
|
|
488,281 |
1,024 |
2 GB |
5.76M/s 84.8 ms |
3M/s 162.5 ms |
0.52× |
|
|
5,000,000 |
128 |
2.56 GB |
37M/s 135.3 ms |
23.4M/s 213.8 ms |
0.63× |
t-SNE
Operation |
Workload |
Rows |
Features |
Input |
CPU |
GPU |
Result |
|---|---|---|---|---|---|---|---|
|
|
2,000 |
64 |
0.512 MB |
1.62 s |
397.6 ms |
4.07× |
|
|
10,000 |
8 |
0.32 MB |
8.88 s |
468.1 ms |
19.0× |
|
|
10,000 |
64 |
2.56 MB |
8.71 s |
581.8 ms |
15.0× |
|
|
10,000 |
512 |
20.5 MB |
9.26 s |
614.1 ms |
15.1× |
|
|
50,000 |
64 |
12.8 MB |
44.2 s |
904.7 ms |
48.9× |
UMAP
Operation |
Workload |
Rows |
Features |
Input |
CPU |
GPU |
Result |
|---|---|---|---|---|---|---|---|
|
|
2,000 |
64 |
0.512 MB |
2.43 s |
112.2 ms |
21.7× |
|
|
10,000 |
8 |
0.32 MB |
5.27 s |
108.8 ms |
48.4× |
|
|
10,000 |
64 |
2.56 MB |
5.88 s |
264.8 ms |
22.2× |
|
|
10,000 |
512 |
20.5 MB |
6.29 s |
325.4 ms |
19.3× |
|
|
50,000 |
64 |
12.8 MB |
13.4 s |
252.0 ms |
53.0× |
|
|
390,625 |
64 |
100 MB |
Timeout at 70 s |
2.97M/s 131.3 ms |
≥529× |
|
|
15,625,000 |
8 |
500 MB |
Timeout at 100 s |
8.76M/s 1.78 s |
≥57.0× |
|
|
1,953,125 |
64 |
500 MB |
Timeout at 100 s |
2.64M/s 739.3 ms |
≥138× |
|
|
244,141 |
512 |
500 MB |
Timeout at 100 s |
369k/s 661.1 ms |
≥154× |
|
|
7,812,500 |
64 |
2 GB |
Timeout at 14 min |
1.47M/s 5.32 s |
≥160× |
Neighbors and density estimation
KNeighborsClassifier
Operation |
Workload |
Rows |
Features |
Input |
CPU |
GPU |
Result |
|---|---|---|---|---|---|---|---|
|
|
2,000 |
128 |
1.02 MB |
146k/s 13.7 ms |
2.09M/s 0.96 ms |
14.3× |
|
|
8,000 |
16 |
0.512 MB |
310k/s 25.8 ms |
8.35M/s 0.96 ms |
26.9× |
|
|
8,000 |
128 |
4.1 MB |
177k/s 45.1 ms |
3.64M/s 2.2 ms |
20.5× |
|
|
8,000 |
1,024 |
32.8 MB |
32.7k/s 244.5 ms |
707k/s 11.3 ms |
21.6× |
|
|
32,000 |
128 |
16.4 MB |
82.2k/s 389.5 ms |
1.8M/s 17.8 ms |
21.9× |
KNeighborsRegressor
Operation |
Workload |
Rows |
Features |
Input |
CPU |
GPU |
Result |
|---|---|---|---|---|---|---|---|
|
|
2,000 |
128 |
1.02 MB |
149k/s 13.4 ms |
2.74M/s 0.73 ms |
18.4× |
|
|
8,000 |
16 |
0.512 MB |
226k/s 35.4 ms |
12.2M/s 0.66 ms |
54.0× |
|
|
8,000 |
128 |
4.1 MB |
187k/s 42.8 ms |
4.13M/s 1.9 ms |
22.1× |
|
|
8,000 |
1,024 |
32.8 MB |
34k/s 235.6 ms |
730k/s 11.0 ms |
21.5× |
|
|
32,000 |
128 |
16.4 MB |
89.6k/s 357.2 ms |
1.88M/s 17.0 ms |
21.0× |
KernelDensity
Operation |
Workload |
Rows |
Features |
Input |
CPU |
GPU |
Result |
|---|---|---|---|---|---|---|---|
|
|
2,000 |
128 |
1.02 MB |
3.29k/s 608.7 ms |
1.97M/s 1.0 ms |
599× |
|
|
8,000 |
16 |
0.512 MB |
3.1k/s 2.58 s |
13.5M/s 0.59 ms |
4372× |
|
|
8,000 |
128 |
4.1 MB |
831/s 9.62 s |
4.11M/s 1.9 ms |
4942× |
|
|
8,000 |
1,024 |
32.8 MB |
Timeout at 100 s |
741k/s 10.8 ms |
≥9426× |
|
|
32,000 |
128 |
16.4 MB |
168/s 190 s |
2.18M/s 14.7 ms |
12969× |
NearestNeighbors
Operation |
Workload |
Rows |
Features |
Input |
CPU |
GPU |
Result |
|---|---|---|---|---|---|---|---|
|
|
2,000 |
128 |
1.02 MB |
135k/s 14.9 ms |
2.98M/s 0.67 ms |
22.2× |
|
|
8,000 |
16 |
0.512 MB |
282k/s 28.4 ms |
12M/s 0.67 ms |
42.4× |
|
|
8,000 |
128 |
4.1 MB |
207k/s 38.6 ms |
3.72M/s 2.2 ms |
17.9× |
|
|
8,000 |
1,024 |
32.8 MB |
33.2k/s 241.2 ms |
721k/s 11.1 ms |
21.7× |
|
|
32,000 |
128 |
16.4 MB |
88k/s 363.7 ms |
1.85M/s 17.3 ms |
21.0× |
Decomposition
PCA
Operation |
Workload |
Rows |
Features |
Input |
CPU |
GPU |
Result |
|---|---|---|---|---|---|---|---|
|
|
10,000 |
1,024 |
41 MB |
347.9 ms |
114.6 ms |
3.04× |
|
|
195,313 |
128 |
100 MB |
115.6 ms |
256.0 ms |
0.45× |
|
|
100,000 |
1,024 |
410 MB |
2.19 s |
1.67 s |
1.31× |
|
|
61,035 |
4,096 |
1,000 MB |
1.42 s |
2.97 s |
0.48× |
|
|
61,035 |
4,096 |
1,000 MB |
2.15 s |
2.91 s |
0.74× |
|
|
61,035 |
4,096 |
1,000 MB |
3.34 s |
2.98 s |
1.12× |
|
|
61,035 |
4,096 |
1,000 MB |
8.14 s |
3.1 s |
2.62× |
|
|
1,000,000 |
1,024 |
4.1 GB |
16.7 s |
20 s |
0.83× |
|
|
50,000 |
1,024 |
205 MB |
1.71M/s 29.3 ms |
173k/s 289.5 ms |
0.10× |
|
|
976,563 |
128 |
500 MB |
14M/s 69.6 ms |
1.39M/s 700.9 ms |
0.10× |
|
|
488,281 |
1,024 |
2 GB |
2.05M/s 237.9 ms |
89.7k/s 5.44 s |
0.04× |
|
|
122,070 |
4,096 |
2 GB |
280k/s 436.5 ms |
23.2k/s 5.27 s |
0.08× |
|
|
2,441,406 |
1,024 |
10 GB |
2.49M/s 982.0 ms |
91k/s 26.8 s |
0.04× |
PCA performance depends strongly on both input feature width and the number of retained components; results can vary substantially across these dimensions.
Ensembles
RandomForestClassifier
Operation |
Workload |
Rows |
Features |
Input |
CPU |
GPU |
Result |
|---|---|---|---|---|---|---|---|
|
|
50,000 |
128 |
25.6 MB |
439.4 ms |
140.3 ms |
3.13× |
|
|
1,562,500 |
16 |
100 MB |
7.81 s |
778.6 ms |
10.0× |
|
|
250,000 |
128 |
128 MB |
2.25 s |
284.9 ms |
7.90× |
|
|
244,140 |
1,024 |
1,000 MB |
7.95 s |
791.2 ms |
10.0× |
|
|
1,953,125 |
128 |
1 GB |
28.6 s |
1.12 s |
25.6× |
|
|
195,313 |
128 |
100 MB |
6.67M/s 29.3 ms |
15.8M/s 12.4 ms |
2.37× |
|
|
7,812,500 |
16 |
500 MB |
8.79M/s 888.6 ms |
106M/s 74.0 ms |
12.0× |
|
|
976,563 |
128 |
500 MB |
6.91M/s 141.3 ms |
16.5M/s 59.3 ms |
2.38× |
|
|
488,281 |
1,024 |
2 GB |
2.36M/s 206.8 ms |
2.13M/s 229.1 ms |
0.90× |
|
|
5,000,000 |
128 |
2.56 GB |
6.21M/s 804.8 ms |
16.8M/s 297.9 ms |
2.70× |
RandomForestRegressor
Operation |
Workload |
Rows |
Features |
Input |
CPU |
GPU |
Result |
|---|---|---|---|---|---|---|---|
|
|
50,000 |
128 |
25.6 MB |
2.95 s |
716.6 ms |
4.12× |
|
|
1,562,500 |
16 |
100 MB |
19.8 s |
1.63 s |
12.2× |
|
|
250,000 |
128 |
128 MB |
17.7 s |
1.8 s |
9.80× |
|
|
244,140 |
1,024 |
1,000 MB |
Timeout at 100 s |
10.6 s |
≥9.59× |
|
|
1,953,125 |
128 |
1 GB |
208 s |
7.6 s |
27.4× |
|
|
195,313 |
128 |
100 MB |
5.07M/s 38.5 ms |
16.4M/s 11.9 ms |
3.23× |
|
|
7,812,500 |
16 |
500 MB |
7.15M/s 1.09 s |
111M/s 70.3 ms |
15.5× |
|
|
976,563 |
128 |
500 MB |
5.04M/s 193.9 ms |
16.6M/s 58.7 ms |
3.30× |
|
|
488,281 |
1,024 |
2 GB |
2.17M/s 224.7 ms |
2.13M/s 229.2 ms |
0.98× |
|
|
5,000,000 |
128 |
2.56 GB |
3.91M/s 1.28 s |
17M/s 293.5 ms |
4.36× |
Preprocessing
StandardScaler
Operation |
Workload |
Rows |
Features |
Input |
CPU |
GPU |
Result |
|---|---|---|---|---|---|---|---|
|
|
50,000 |
128 |
25.6 MB |
21.7 ms |
11.6 ms |
1.87× |
|
|
1,562,500 |
16 |
100 MB |
142.0 ms |
76.8 ms |
1.85× |
|
|
500,000 |
128 |
256 MB |
218.2 ms |
101.0 ms |
2.16× |
|
|
244,140 |
1,024 |
1,000 MB |
788.0 ms |
232.5 ms |
3.39× |
|
|
5,000,000 |
128 |
2.56 GB |
2.1 s |
958.2 ms |
2.20× |
|
|
195,313 |
128 |
100 MB |
8.73M/s 22.4 ms |
11M/s 17.8 ms |
1.25× |
|
|
7,812,500 |
16 |
500 MB |
54.6M/s 143.1 ms |
92.8M/s 84.2 ms |
1.70× |
|
|
976,563 |
128 |
500 MB |
8.67M/s 112.6 ms |
11.6M/s 83.9 ms |
1.34× |
|
|
488,281 |
1,024 |
2 GB |
1.14M/s 428.8 ms |
1.47M/s 331.6 ms |
1.29× |
|
|
5,000,000 |
128 |
2.56 GB |
8.83M/s 566.3 ms |
11.8M/s 423.1 ms |
1.34× |
TargetEncoder
Operation |
Workload |
Rows |
Features |
Input |
CPU |
GPU |
Result |
|---|---|---|---|---|---|---|---|
|
|
195,313 |
32 |
25 MB |
541.1 ms |
5.35 s |
0.10× |
|
|
3,125,000 |
8 |
100 MB |
1.76 s |
1.49 s |
1.18× |
|
|
781,250 |
32 |
100 MB |
2.53 s |
5.81 s |
0.43× |
|
|
250,000 |
128 |
128 MB |
3.27 s |
24 s |
0.14× |
|
|
7,812,500 |
32 |
1 GB |
25.6 s |
8.14 s |
3.15× |
|
|
781,250 |
32 |
100 MB |
679k/s 1.15 s |
1.15M/s 679.1 ms |
1.70× |
|
|
15,625,000 |
8 |
500 MB |
4.29M/s 3.64 s |
27.5M/s 568.2 ms |
6.41× |
|
|
3,906,250 |
32 |
500 MB |
673k/s 5.81 s |
2.23M/s 1.75 s |
3.31× |
|
|
976,563 |
128 |
500 MB |
158k/s 6.2 s |
130k/s 7.52 s |
0.82× |
|
|
15,625,000 |
32 |
2 GB |
662k/s 23.6 s |
2.69M/s 5.82 s |
4.06× |
Kernel methods
SVC
Operation |
Workload |
Rows |
Features |
Input |
CPU |
GPU |
Result |
|---|---|---|---|---|---|---|---|
|
|
2,000 |
64 |
0.512 MB |
46.4 ms |
19.6 ms |
2.37× |
|
|
8,000 |
8 |
0.256 MB |
145.4 ms |
21.6 ms |
6.75× |
|
|
8,000 |
64 |
2.05 MB |
502.6 ms |
32.0 ms |
15.7× |
|
|
8,000 |
512 |
16.4 MB |
3.42 s |
60.5 ms |
56.6× |
|
|
32,000 |
64 |
8.19 MB |
8.59 s |
76.8 ms |
112× |
|
|
2,000 |
64 |
0.512 MB |
26.8k/s 74.6 ms |
2.33M/s 0.86 ms |
87.0× |
|
|
8,000 |
8 |
0.256 MB |
32.6k/s 245.2 ms |
6.12M/s 1.3 ms |
188× |
|
|
8,000 |
64 |
2.05 MB |
10.7k/s 750.6 ms |
2.86M/s 2.8 ms |
268× |
|
|
8,000 |
512 |
16.4 MB |
1.26k/s 6.36 s |
425k/s 18.8 ms |
338× |
|
|
32,000 |
64 |
8.19 MB |
3.97k/s 8.06 s |
1.59M/s 20.2 ms |
399× |
What determines GPU speedup#
cuml.accel benefits when each estimator call has enough parallel work
to outweigh dispatch and compatibility overhead. Training and
compute-intensive operations usually accelerate more than short
prediction or transformation calls in practice.
Performance depends on feature width, operation, and estimator parameters, not just total workload size. Similar-sized datasets can produce different speedups when shapes or configurations differ. We selected workloads to illustrate these differences.
cuml.accel typically ingests and returns NumPy arrays, converting data
for GPU execution and scikit-learn compatibility. Native cuML can reduce
this overhead with GPU-resident arrays, especially when pipelines perform
repeated estimator operations.
Methodology and reproducibility#
These benchmarks compare the corresponding CPU implementations with
cuml.accel on NVIDIA RTX Pro 6000 across five relative workload categories.
CPU measurements use the corresponding scikit-learn estimators, except for
UMAP, which uses umap.UMAP from umap-learn, and HDBSCAN, which uses
hdbscan.HDBSCAN from hdbscan. Each isolated case used one warmup, the
median of three measured repetitions, operation-appropriate correctness
validation, and a complete-case timeout.
Test system, validation, and timing policy
System. NVIDIA RTX PRO 6000 Blackwell Workstation Edition (102.0 GB), AMD Ryzen Threadripper PRO 7975WX 32-Cores, and 134.1 GB of system memory.
Timing. One warmup followed by three measured repetitions; tables use
the median end-to-end wall time. Speedup is CPU median wall time divided by
accelerated median wall time. For predict, transform,
score_samples, and kneighbors, throughput is input rows divided by
the same median wall time, with one row counted as one sample.
Scale and timeout policy. Algorithm-family-calibrated small, medium, and large shapes. Each backend ran every case in a separate worker with a wall-clock limit. The limit covered process startup, data preparation, estimator setup, one warmup, three measured repetitions, and correctness validation.
Execution and correctness. Successful accelerated measurements were instrumented to verify GPU-only execution. The benchmark runner applied each case’s operation-appropriate parity check. A timeout means validation could not complete.
Packages. cuml 26.10.0a69, hdbscan 0.8.44, scikit-learn 1.9.0, umap-learn 0.5.12.
Interpretation. These measurements describe the tested cases on this system; results for other workloads and systems will vary.
Continue with cuml.accel#
Installation and zero-code-change usage.
Supported estimators and parameter behavior.
Find GPU execution and fallback behavior.