This dashboard compares implementationsCode that runs a given estimator: stock scikit-learn, scikit-learn-intelex or an Array API backend. on the same machine: stock scikit-learn, scikit-learn-intelex and Array APIStandard API shared by array libraries (NumPy, PyTorch, CuPy, dpnp). With it, some scikit-learn estimators run directly on these libraries' arrays, including on GPU. backends (PyTorchDeep learning library. scikit-learn can take its tensors as Array API inputs, on CPU or GPU. More, dpnpIntel's NumPy-like array library, running on Intel GPUs and CPUs. More, CuPyNumPy-like array library running on NVIDIA GPUs. More). Since the hardware is fixed, a speed-upBaseline time divided by the compared time: 2x is twice as fast as the baseline, 0.5x twice as slow. comes from the software: faster algorithms, better use of the CPU (vectorizationUsing CPU instructions that process several numbers at once (SIMD)., threadingUnits of execution that share the memory of their process. Each one can run on its own CPU core.), or offloading to the GPU.

How to read

Pick a machine tab. The top of the tab describes the machine and each software environmentOne Pixi environment of this repository: a fixed set of package versions and builds. (versions, BLASBasic Linear Algebra Subprograms: the library that runs the matrix and vector products of NumPy and SciPy. OpenBLAS and MKL are two implementations of it. and OpenMPStandard for running the loops of compiled code on several threads. scikit-learn's Cython code (HistGradientBoosting, KMeans, ...) uses it. libraries). The baselineThe reference that speed-ups are computed against. defaults to stock scikit-learn from PyPIThe Python Package Index, where pip installs packages from. Its scikit-learn wheels bundle their own OpenMP runtime, and NumPy and SciPy bundle OpenBLAS.. To change it, open another software tab and click "Pick as baseline". The conda-forgeCommunity-maintained channel of conda packages. Its scikit-learn can be installed with different BLAS and OpenMP libraries. MKLIntel's Math Kernel Library (oneMKL): a BLAS implementation tuned for Intel CPUs, available as a conda-forge build option. build (sklearn-cf-mkl) can be picked as a baseline too, but isn't plotted otherwise.

The plots are arranged in a grid: one row per estimator category (linear, tree-based, clustering) and one column for fitTraining a model on data. More in the scikit-learn glossary and one for predictMaking predictions with a fitted model. More in the scikit-learn glossary. In each plot:

  • the x-axis lists the estimators, with one color per implementation. An implementation keeps its color on every machine and for every baseline;
  • each point is one benchmark case (dataset and hyperparametersParameters set before fit that control how an estimator learns, such as max_depth or the regularization strength. More in the scikit-learn glossary);
  • the y-axis is the speed-up over the baseline, in log scale. Points above the dashed 1x line are faster than the baseline.

The marker shape flags cases to double check:

  • circle (●): metricsScores of the fitted model on held-out data (ROC AUC, R2 score). They check that the compared implementations learn equivalent models. More in the scikit-learn glossary and setup match the baseline;
  • square (■): metrics match but the setup differs, for instance a different solverThe optimization algorithm used by fit, for instance lbfgs or newton-cholesky for LogisticRegression. or number of iterations, or scikit-learn-intelex using histogram-based splitsSplits chosen among bin edges instead of among every distinct feature value. Faster, and usually as accurate. where scikit-learn uses exact onesSplits chosen among every distinct value of the feature.;
  • open diamond (◇): the metrics differ;
  • grey point (●): scikit-learn-intelex fell backscikit-learn-intelex ran the stock scikit-learn code, because it doesn't support this case's parameters or data. to scikit-learn;
  • cross (✕): failed run.

The notes under each plot count these cases.

Hover a point to see its case. Click it to find its row in "Detailed results", the table below each row, which has the exact timings and metrics and can be filtered by column.

Findings

On the benchmarked cases:

  • sklearnex-cpu is the most consistently fast option. Linear models gain less than tree-based models and KMeans.
  • sklearnex tree-based models are fast, but don't behave exactly like scikit-learn:
    • By default, sklearnex random forests and extra trees bin featuresMapping each feature to a small number of integer bins (a few hundred at most) before building trees. (max_bins=256Maximum number of bins per feature for histogram-based splits.), which scikit-learn doesn't implement yet. Binning roughly doubles or triples the fit speed-up. Cases run with exact splitsSplits chosen among every distinct value of the feature. (max_bins=n_samples) are on the left of each implementation in the tree-based plots.
    • Two oneDALoneAPI Data Analytics Library: Intel's C++ library that implements the algorithms of scikit-learn-intelex. bugs make some fits worse: oneDAL#3648 (ExtraTreesRegressor) and oneDAL#3771 (max_leaf_nodesTree parameter capping the number of leaves. With it, trees grow best-first: the most promising node is split first.).
  • sklearnex KMeans fits ~3x faster and is never slower than scikit-learn.
  • Array APIStandard API shared by array libraries (NumPy, PyTorch, CuPy, dpnp). With it, some scikit-learn estimators run directly on these libraries' arrays, including on GPU. backends are mixed. Only LogisticRegression and Ridge are benchmarked for now:
    • LogisticRegression on GPU is fairly fast.
    • Ridge uses the SVDSingular value decomposition: a stable but costly way to solve Ridge's least squares problem. solver instead of CholeskyMatrix factorization used to solve Ridge's normal equations. Faster than SVD. under Array API, which makes it slower (scikit-learn#35060).
    • PyTorchDeep learning library. scikit-learn can take its tensors as Array API inputs, on CPU or GPU. More on CPU parallelizes every operation, including small vector operations. That's why LogisticRegression is slower than scikit-learn with NumPy.

Hardware

CPU

Intel(R) Core(TM) Ultra X7 358H

X86_64, 16 physical cores, 16 logical CPUs

31 GB RAM

$1,299, released 2026

GPU(s)

  • level_zero:gpu:0: Intel(R) Arc(TM) B390 GPU (29 GB, integrated, priced with the CPU)

sklearn-pypi

Python 3.12.14

Packages

  • scikit-learn 1.9.1 (pypi)
  • numpy 2.5.3 (pypi)
  • scipy 1.18.1 (pypi)
  • pandas 2.3.3 (pypi)

Threadpools

  • libscipy_openblas 0.3.31.dev (16 threads)
  • libscipy_openblas 0.3.34.106.0 (16 threads)
  • libgomp (16 threads)

OpenMP

  • GNU libgomp (OpenMP 4.5)
  • GOMP_SPINCOUNT: 300000

Full environment

view pixi env JSON

sklearn-cf-mkl

Python 3.12.14

Packages

  • scikit-learn 1.9.1 (conda-forge)
  • numpy 2.5.3 (conda-forge)
  • scipy 1.18.0 (conda-forge)
  • pandas 2.3.3 (conda-forge)

Threadpools

  • libmkl_rt 2026.1-Product (16 threads)
  • libomp (16 threads)

OpenMP

  • Intel/LLVM OpenMP (spec 201611)
  • KMP_BLOCKTIME: 0ms

Full environment

view pixi env JSON

sklearnex-cpu

Python 3.12.14

Packages

  • scikit-learn 1.8.0 (conda-forge)
  • scikit_learn_intelex 2026.1.0 (pypi)
  • daal 2026.1.0 (pypi)

Threadpools

  • libopenblas 0.3.34 (16 threads)
  • libgomp (16 threads)

OpenMP

  • GNU libgomp (OpenMP 5.2)
  • GOMP_SPINCOUNT: 1

Full environment

view pixi env JSON

sklearnex-gpu

Python 3.12.14

Packages

  • scikit-learn 1.8.0 (conda-forge)
  • scikit_learn_intelex 2026.1.0 (pypi)
  • scikit_learn_intelex_gpu 2026.1.0 (pypi)
  • dpnp 0.20.0 (pypi)
  • daal 2026.1.0 (pypi)

Threadpools

  • libopenblas 0.3.34 (16 threads)
  • libgomp (16 threads)

OpenMP

  • GNU libgomp (OpenMP 5.2)
  • GOMP_SPINCOUNT: 1

Full environment

view pixi env JSON

sklearn-dpnp-gpu

Python 3.12.14

Array API active

Packages

  • scikit-learn 1.9.1 (pypi)
  • dpnp 0.20.0 (pypi)

Threadpools

  • libscipy_openblas 0.3.31.dev (16 threads)
  • libscipy_openblas 0.3.34.106.0 (16 threads)
  • libgomp (16 threads)

OpenMP

  • GNU libgomp (OpenMP 4.5)
  • GOMP_SPINCOUNT: 300000

Full environment

view pixi env JSON

sklearn-torch-cpu

Python 3.12.14

Array API active

Packages

  • scikit-learn 1.9.1 (pypi)
  • torch 2.14.0+cpu (pypi)

Threadpools

  • libscipy_openblas 0.3.31.dev (16 threads)
  • libscipy_openblas 0.3.34.106.0 (16 threads)
  • libgomp (16 threads)

OpenMP

  • GNU libgomp (OpenMP 4.5)
  • GOMP_SPINCOUNT: 300000

Full environment

view pixi env JSON

sklearn-torch-xpu

Python 3.12.14

Array API active

Packages

  • scikit-learn 1.9.1 (pypi)
  • torch 2.14.0+xpu (pypi)

Threadpools

  • libscipy_openblas 0.3.31.dev (16 threads)
  • libscipy_openblas 0.3.34.106.0 (16 threads)
  • libgomp (16 threads)

OpenMP

  • GNU libgomp (OpenMP 4.5)
  • GOMP_SPINCOUNT: 300000

Full environment

view pixi env JSON

linear - fit time - 37 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
◇ Metrics differ from the baseline (8 points)
✕ Benchmark run failed, shown at the bottom of its column (3 points)

linear - predict time - 37 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
✕ Benchmark run failed, shown at the bottom of its column (3 points)
Detailed results

Tree-based plots: within each implementation, cases without binningMapping each feature to a small number of integer bins (a few hundred at most) before building trees. (exact splitsSplits chosen among every distinct value of the feature.) are on the left, cases with binning (histogram-based splitsSplits chosen among bin edges instead of among every distinct feature value. Faster, and usually as accurate.) on the right.

tree-based - fit time - 83 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
◇ Metrics differ from the baseline (72 points)
● Ran via sklearnex but fell back to stock scikit-learn, no oneDAL acceleration (3 points)
✕ Benchmark run failed, shown at the bottom of its column (2 points)

tree-based - predict time - 83 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
● Ran via sklearnex but fell back to stock scikit-learn, no oneDAL acceleration (3 points)
✕ Benchmark run failed, shown at the bottom of its column (2 points)
Detailed results

clustering - fit time - 8 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ

clustering - predict time - 8 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
Detailed results

linear - fit time - 9 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
◇ Metrics differ from the baseline (3 points)
✕ Benchmark run failed, shown at the bottom of its column (1 point)

linear - predict time - 9 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
✕ Benchmark run failed, shown at the bottom of its column (1 point)
Detailed results

Tree-based plots: within each implementation, cases without binningMapping each feature to a small number of integer bins (a few hundred at most) before building trees. (exact splitsSplits chosen among every distinct value of the feature.) are on the left, cases with binning (histogram-based splitsSplits chosen among bin edges instead of among every distinct feature value. Faster, and usually as accurate.) on the right.

tree-based - fit time - 11 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
◇ Metrics differ from the baseline (2 points)
● Ran via sklearnex but fell back to stock scikit-learn, no oneDAL acceleration (3 points)
✕ Benchmark run failed, shown at the bottom of its column (2 points)

tree-based - predict time - 11 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
● Ran via sklearnex but fell back to stock scikit-learn, no oneDAL acceleration (3 points)
✕ Benchmark run failed, shown at the bottom of its column (2 points)
Detailed results

clustering - fit time - 8 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ

clustering - predict time - 8 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
Detailed results

linear - fit time - 44 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
◇ Metrics differ from the baseline (10 points)
✕ Benchmark run failed, shown at the bottom of its column (3 points)

linear - predict time - 44 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
✕ Benchmark run failed, shown at the bottom of its column (3 points)
Detailed results

Tree-based plots: within each implementation, cases without binningMapping each feature to a small number of integer bins (a few hundred at most) before building trees. (exact splitsSplits chosen among every distinct value of the feature.) are on the left, cases with binning (histogram-based splitsSplits chosen among bin edges instead of among every distinct feature value. Faster, and usually as accurate.) on the right.

tree-based - fit time - 94 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
◇ Metrics differ from the baseline (72 points)
● Ran via sklearnex but fell back to stock scikit-learn, no oneDAL acceleration (3 points)
✕ Benchmark run failed, shown at the bottom of its column (2 points)

tree-based - predict time - 94 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
● Ran via sklearnex but fell back to stock scikit-learn, no oneDAL acceleration (3 points)
✕ Benchmark run failed, shown at the bottom of its column (2 points)
Detailed results

clustering - fit time - 8 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ

clustering - predict time - 8 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
Detailed results

linear - fit time - 12 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
◇ Metrics differ from the baseline (3 points)
✕ Benchmark run failed, shown at the bottom of its column (1 point)

linear - predict time - 12 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
✕ Benchmark run failed, shown at the bottom of its column (1 point)
Detailed results

Tree-based plots: within each implementation, cases without binningMapping each feature to a small number of integer bins (a few hundred at most) before building trees. (exact splitsSplits chosen among every distinct value of the feature.) are on the left, cases with binning (histogram-based splitsSplits chosen among bin edges instead of among every distinct feature value. Faster, and usually as accurate.) on the right.

tree-based - fit time - 22 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
◇ Metrics differ from the baseline (2 points)
● Ran via sklearnex but fell back to stock scikit-learn, no oneDAL acceleration (3 points)
✕ Benchmark run failed, shown at the bottom of its column (2 points)

tree-based - predict time - 22 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
● Ran via sklearnex but fell back to stock scikit-learn, no oneDAL acceleration (3 points)
✕ Benchmark run failed, shown at the bottom of its column (2 points)
Detailed results

clustering - fit time - 8 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ

clustering - predict time - 8 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
Detailed results

linear - fit time - 35 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
  • ↩ Some operations fell back to CPU according to benchmark logs
◇ Metrics differ from the baseline (18 points)
✕ Benchmark run failed, shown at the bottom of its column (2 points)

linear - predict time - 35 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
✕ Benchmark run failed, shown at the bottom of its column (2 points)
Detailed results

Tree-based plots: within each implementation, cases without binningMapping each feature to a small number of integer bins (a few hundred at most) before building trees. (exact splitsSplits chosen among every distinct value of the feature.) are on the left, cases with binning (histogram-based splitsSplits chosen among bin edges instead of among every distinct feature value. Faster, and usually as accurate.) on the right.

tree-based - fit time - 81 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
◇ Metrics differ from the baseline (69 points)

tree-based - predict time - 81 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
Detailed results

clustering - fit time - 8 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ

clustering - predict time - 8 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
Detailed results

linear - fit time - 12 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
  • ↩ Some operations fell back to CPU according to benchmark logs
◇ Metrics differ from the baseline (9 points)
✕ Benchmark run failed, shown at the bottom of its column (1 point)

linear - predict time - 12 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
✕ Benchmark run failed, shown at the bottom of its column (1 point)
Detailed results

Tree-based plots: within each implementation, cases without binningMapping each feature to a small number of integer bins (a few hundred at most) before building trees. (exact splitsSplits chosen among every distinct value of the feature.) are on the left, cases with binning (histogram-based splitsSplits chosen among bin edges instead of among every distinct feature value. Faster, and usually as accurate.) on the right.

tree-based - fit time - 9 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
◇ Metrics differ from the baseline (2 points)

tree-based - predict time - 9 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
Detailed results

clustering - fit time - 8 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ

clustering - predict time - 8 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
Detailed results

linear - fit time - 9 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
  • ↩ Some operations fell back to CPU according to benchmark logs
◇ Metrics differ from the baseline (1 point)
✕ Benchmark run failed, shown at the bottom of its column (1 point)

linear - predict time - 9 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
  • ↩ Some operations fell back to CPU according to benchmark logs
✕ Benchmark run failed, shown at the bottom of its column (1 point)
Detailed results
No data
No data
Detailed results
No data
No data

linear - fit time - 4 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧮 Solver differs
  • ↩ Some operations fell back to CPU according to benchmark logs
◇ Metrics differ from the baseline (1 point)

linear - predict time - 4 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧮 Solver differs
  • ↩ Some operations fell back to CPU according to benchmark logs
Detailed results
No data
No data
Detailed results
No data
No data

linear - fit time - 30 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
◇ Metrics differ from the baseline (9 points)
✕ Benchmark run failed, shown at the bottom of its column (3 points)

linear - predict time - 30 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
✕ Benchmark run failed, shown at the bottom of its column (3 points)
Detailed results
No data
No data
Detailed results
No data
No data

linear - fit time - 12 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
◇ Metrics differ from the baseline (7 points)
✕ Benchmark run failed, shown at the bottom of its column (1 point)

linear - predict time - 12 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
✕ Benchmark run failed, shown at the bottom of its column (1 point)
Detailed results
No data
No data
Detailed results
No data
No data

linear - fit time - 30 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
◇ Metrics differ from the baseline (7 points)
✕ Benchmark run failed, shown at the bottom of its column (3 points)

linear - predict time - 30 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
✕ Benchmark run failed, shown at the bottom of its column (3 points)
Detailed results
No data
No data
Detailed results
No data
No data

linear - fit time - 12 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
◇ Metrics differ from the baseline (3 points)
✕ Benchmark run failed, shown at the bottom of its column (1 point)

linear - predict time - 12 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
✕ Benchmark run failed, shown at the bottom of its column (1 point)
Detailed results
No data
No data
Detailed results
No data
No data

linear - fit time - 29 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
◇ Metrics differ from the baseline (8 points)
✕ Benchmark run failed, shown at the bottom of its column (3 points)

linear - predict time - 29 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
✕ Benchmark run failed, shown at the bottom of its column (3 points)
Detailed results
No data
No data
Detailed results
No data
No data

linear - fit time - 12 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
◇ Metrics differ from the baseline (3 points)
✕ Benchmark run failed, shown at the bottom of its column (1 point)

linear - predict time - 12 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
✕ Benchmark run failed, shown at the bottom of its column (1 point)
Detailed results
No data
No data
Detailed results
No data
No data

Hardware

CPU

Intel(R) Xeon(R) 6787P

X86_64, 172 physical cores, 344 logical CPUs

499 GB RAM

$11,648, released 2025

GPU(s)

No GPU detected.

sklearn-pypi

Python 3.12.14

Packages

  • scikit-learn 1.9.1 (pypi)
  • numpy 2.5.3 (pypi)
  • scipy 1.18.1 (pypi)
  • pandas 2.3.3 (pypi)

Threadpools

  • libscipy_openblas 0.3.31.dev (64 threads)
  • libscipy_openblas 0.3.34.106.0 (64 threads)
  • libgomp (344 threads)

OpenMP

  • GNU libgomp (OpenMP 4.5)
  • GOMP_SPINCOUNT: 300000

Full environment

view pixi env JSON

sklearn-cf-mkl

Python 3.12.14

Packages

  • scikit-learn 1.9.1 (conda-forge)
  • numpy 2.5.3 (conda-forge)
  • scipy 1.18.0 (conda-forge)
  • pandas 2.3.3 (conda-forge)

Threadpools

  • libmkl_rt 2026.1-Product (172 threads)
  • libomp (344 threads)

OpenMP

  • Intel/LLVM OpenMP (spec 201611)
  • KMP_BLOCKTIME: 200ms

Full environment

view pixi env JSON

sklearnex-cpu

Python 3.12.14

Packages

  • scikit-learn 1.8.0 (conda-forge)
  • scikit_learn_intelex 2026.1.0 (pypi)
  • daal 2026.1.0 (pypi)

Threadpools

  • libopenblas 0.3.34 (128 threads)
  • libgomp (344 threads)

OpenMP

  • GNU libgomp (OpenMP 5.2)
  • GOMP_SPINCOUNT: 300000

Full environment

view pixi env JSON

sklearn-torch-cpu

Python 3.12.14

Array API active

Packages

  • scikit-learn 1.9.1 (pypi)
  • torch 2.14.0+cpu (pypi)

Threadpools

  • libscipy_openblas 0.3.31.dev (64 threads)
  • libscipy_openblas 0.3.34.106.0 (64 threads)
  • libgomp (344 threads)

OpenMP

  • GNU libgomp (OpenMP 4.5)
  • GOMP_SPINCOUNT: 300000

Full environment

view pixi env JSON

linear - fit time - 33 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
◇ Metrics differ from the baseline (3 points)
✕ Benchmark run failed, shown at the bottom of its column (3 points)

linear - predict time - 33 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
✕ Benchmark run failed, shown at the bottom of its column (3 points)
Detailed results

Tree-based plots: within each implementation, cases without binningMapping each feature to a small number of integer bins (a few hundred at most) before building trees. (exact splitsSplits chosen among every distinct value of the feature.) are on the left, cases with binning (histogram-based splitsSplits chosen among bin edges instead of among every distinct feature value. Faster, and usually as accurate.) on the right.

tree-based - fit time - 83 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
◇ Metrics differ from the baseline (72 points)
● Ran via sklearnex but fell back to stock scikit-learn, no oneDAL acceleration (3 points)
✕ Benchmark run failed, shown at the bottom of its column (2 points)

tree-based - predict time - 83 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
● Ran via sklearnex but fell back to stock scikit-learn, no oneDAL acceleration (3 points)
✕ Benchmark run failed, shown at the bottom of its column (2 points)
Detailed results

clustering - fit time - 8 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ

clustering - predict time - 8 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
Detailed results

linear - fit time - 9 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
◇ Metrics differ from the baseline (1 point)

linear - predict time - 9 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
Detailed results

Tree-based plots: within each implementation, cases without binningMapping each feature to a small number of integer bins (a few hundred at most) before building trees. (exact splitsSplits chosen among every distinct value of the feature.) are on the left, cases with binning (histogram-based splitsSplits chosen among bin edges instead of among every distinct feature value. Faster, and usually as accurate.) on the right.

tree-based - fit time - 11 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
◇ Metrics differ from the baseline (2 points)
● Ran via sklearnex but fell back to stock scikit-learn, no oneDAL acceleration (3 points)
✕ Benchmark run failed, shown at the bottom of its column (2 points)

tree-based - predict time - 11 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
● Ran via sklearnex but fell back to stock scikit-learn, no oneDAL acceleration (3 points)
✕ Benchmark run failed, shown at the bottom of its column (2 points)
Detailed results

clustering - fit time - 8 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ

clustering - predict time - 8 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
Detailed results

linear - fit time - 44 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
◇ Metrics differ from the baseline (3 points)
✕ Benchmark run failed, shown at the bottom of its column (3 points)

linear - predict time - 44 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
✕ Benchmark run failed, shown at the bottom of its column (3 points)
Detailed results

Tree-based plots: within each implementation, cases without binningMapping each feature to a small number of integer bins (a few hundred at most) before building trees. (exact splitsSplits chosen among every distinct value of the feature.) are on the left, cases with binning (histogram-based splitsSplits chosen among bin edges instead of among every distinct feature value. Faster, and usually as accurate.) on the right.

tree-based - fit time - 94 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
◇ Metrics differ from the baseline (72 points)
● Ran via sklearnex but fell back to stock scikit-learn, no oneDAL acceleration (3 points)
✕ Benchmark run failed, shown at the bottom of its column (2 points)

tree-based - predict time - 94 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
● Ran via sklearnex but fell back to stock scikit-learn, no oneDAL acceleration (3 points)
✕ Benchmark run failed, shown at the bottom of its column (2 points)
Detailed results

clustering - fit time - 24 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
✕ Benchmark run failed, shown at the bottom of its column (8 points)

clustering - predict time - 24 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
✕ Benchmark run failed, shown at the bottom of its column (8 points)
Detailed results

linear - fit time - 12 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
◇ Metrics differ from the baseline (1 point)

linear - predict time - 12 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
Detailed results

Tree-based plots: within each implementation, cases without binningMapping each feature to a small number of integer bins (a few hundred at most) before building trees. (exact splitsSplits chosen among every distinct value of the feature.) are on the left, cases with binning (histogram-based splitsSplits chosen among bin edges instead of among every distinct feature value. Faster, and usually as accurate.) on the right.

tree-based - fit time - 22 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
◇ Metrics differ from the baseline (2 points)
● Ran via sklearnex but fell back to stock scikit-learn, no oneDAL acceleration (3 points)
✕ Benchmark run failed, shown at the bottom of its column (2 points)

tree-based - predict time - 22 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
● Ran via sklearnex but fell back to stock scikit-learn, no oneDAL acceleration (3 points)
✕ Benchmark run failed, shown at the bottom of its column (2 points)
Detailed results

clustering - fit time - 24 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
✕ Benchmark run failed, shown at the bottom of its column (8 points)

clustering - predict time - 24 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
✕ Benchmark run failed, shown at the bottom of its column (8 points)
Detailed results

linear - fit time - 33 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
◇ Metrics differ from the baseline (6 points)
✕ Benchmark run failed, shown at the bottom of its column (1 point)

linear - predict time - 33 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
✕ Benchmark run failed, shown at the bottom of its column (1 point)
Detailed results

Tree-based plots: within each implementation, cases without binningMapping each feature to a small number of integer bins (a few hundred at most) before building trees. (exact splitsSplits chosen among every distinct value of the feature.) are on the left, cases with binning (histogram-based splitsSplits chosen among bin edges instead of among every distinct feature value. Faster, and usually as accurate.) on the right.

tree-based - fit time - 81 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
◇ Metrics differ from the baseline (72 points)

tree-based - predict time - 81 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
Detailed results

clustering - fit time - 16 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
✕ Benchmark run failed, shown at the bottom of its column (8 points)

clustering - predict time - 16 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
✕ Benchmark run failed, shown at the bottom of its column (8 points)
Detailed results

linear - fit time - 12 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
◇ Metrics differ from the baseline (2 points)

linear - predict time - 12 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
Detailed results

Tree-based plots: within each implementation, cases without binningMapping each feature to a small number of integer bins (a few hundred at most) before building trees. (exact splitsSplits chosen among every distinct value of the feature.) are on the left, cases with binning (histogram-based splitsSplits chosen among bin edges instead of among every distinct feature value. Faster, and usually as accurate.) on the right.

tree-based - fit time - 9 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
◇ Metrics differ from the baseline (2 points)

tree-based - predict time - 9 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🧺 Scikit-learn intelex uses binning & histogram-based splits while scikit-learn doesn't
Detailed results

clustering - fit time - 16 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
✕ Benchmark run failed, shown at the bottom of its column (8 points)

clustering - predict time - 16 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
✕ Benchmark run failed, shown at the bottom of its column (8 points)
Detailed results

linear - fit time - 29 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
◇ Metrics differ from the baseline (3 points)
✕ Benchmark run failed, shown at the bottom of its column (2 points)

linear - predict time - 29 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
✕ Benchmark run failed, shown at the bottom of its column (2 points)
Detailed results
No data
No data
Detailed results
No data
No data
Detailed results

linear - fit time - 12 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
◇ Metrics differ from the baseline (1 point)

linear - predict time - 12 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
Detailed results
No data
No data
Detailed results
No data
No data
Detailed results

Hardware

CPU

Apple M4

ARM_8, 10 physical cores, 10 logical CPUs

32 GB RAM

$1,599, released 2024

GPU(s)

  • mps: Apple M4 GPU (32 GB, integrated, priced with the CPU)

sklearn-pypi

Python 3.12.14

Packages

  • scikit-learn 1.9.1 (pypi)
  • numpy 2.5.3 (pypi)
  • scipy 1.18.1 (pypi)
  • pandas 2.3.3 (pypi)

Threadpools

  • libscipy_openblas 0.3.31.dev (10 threads)
  • libscipy_openblas 0.3.34.106.0 (10 threads)
  • libomp (10 threads)

OpenMP

  • Intel/LLVM OpenMP (spec 201611)
  • KMP_BLOCKTIME: 200

Full environment

view pixi env JSON

sklearn-torch-mps

Python 3.12.14

Array API active

Packages

  • scikit-learn 1.9.1 (pypi)
  • torch 2.11.0 (pypi)

Threadpools

  • libscipy_openblas 0.3.31.dev (10 threads)
  • libscipy_openblas 0.3.34.106.0 (10 threads)
  • libomp (10 threads)
  • libomp (4 threads)

OpenMP

  • Intel/LLVM OpenMP (spec 201611)
  • KMP_BLOCKTIME: 200

Full environment

view pixi env JSON

linear - fit time - 25 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
◇ Metrics differ from the baseline (1 point)

linear - predict time - 25 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
Detailed results

Tree-based plots: within each implementation, cases without binningMapping each feature to a small number of integer bins (a few hundred at most) before building trees. (exact splitsSplits chosen among every distinct value of the feature.) are on the left, cases with binning (histogram-based splitsSplits chosen among bin edges instead of among every distinct feature value. Faster, and usually as accurate.) on the right.

tree-based - fit time - 0 cases

No matches for this group.

tree-based - predict time - 0 cases

No matches for this group.

clustering - fit time - 0 cases

No matches for this group.

clustering - predict time - 0 cases

No matches for this group.

linear - fit time - 9 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs

linear - predict time - 9 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
Detailed results

Tree-based plots: within each implementation, cases without binningMapping each feature to a small number of integer bins (a few hundred at most) before building trees. (exact splitsSplits chosen among every distinct value of the feature.) are on the left, cases with binning (histogram-based splitsSplits chosen among bin edges instead of among every distinct feature value. Faster, and usually as accurate.) on the right.

tree-based - fit time - 0 cases

No matches for this group.

tree-based - predict time - 0 cases

No matches for this group.

clustering - fit time - 0 cases

No matches for this group.

clustering - predict time - 0 cases

No matches for this group.

linear - fit time - 25 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
◇ Metrics differ from the baseline (1 point)

linear - predict time - 25 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
Detailed results
No data
No data
No data
No data

linear - fit time - 9 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs

linear - predict time - 9 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • ↩ Some operations fell back to CPU according to benchmark logs
  • 🧮 Solver differs
Detailed results
No data
No data
No data
No data

Hardware

CPU

AMD EPYC 7R13 Processor

X86_64, 2 physical cores, 4 logical CPUs

15 GB RAM

~$1/h (cloud VM), released 2024

GPU(s)

  • cuda:0: NVIDIA L4 (22 GB, priced with the CPU)

sklearn-pypi

Python 3.12.14

Packages

  • scikit-learn 1.9.1 (pypi)
  • numpy 2.5.3 (pypi)
  • scipy 1.18.1 (pypi)
  • pandas 2.3.3 (pypi)

Threadpools

  • libscipy_openblas 0.3.31.dev (4 threads)
  • libscipy_openblas 0.3.34.106.0 (4 threads)
  • libgomp (4 threads)

OpenMP

  • GNU libgomp (OpenMP 4.5)
  • GOMP_SPINCOUNT: 300000

Full environment

view pixi env JSON

sklearn-cupy-cuda

Python 3.12.14

Array API active

Packages

  • scikit-learn 1.9.1 (pypi)
  • cupy 14.2.0 (conda-forge)

Threadpools

  • libscipy_openblas 0.3.31.dev (4 threads)
  • libopenblas 0.3.34 (4 threads)
  • libgomp (4 threads)

OpenMP

  • GNU libgomp (OpenMP 4.5)
  • GOMP_SPINCOUNT: 300000

Full environment

view pixi env JSON

sklearn-torch-cuda

Python 3.12.14

Array API active

Packages

  • scikit-learn 1.9.1 (pypi)
  • torch 2.13.0+cu129 (pypi)

Threadpools

  • libscipy_openblas 0.3.31.dev (4 threads)
  • libopenblas 0.3.34 (4 threads)
  • libgomp (4 threads)

OpenMP

  • GNU libgomp (OpenMP 4.5)
  • GOMP_SPINCOUNT: 300000

Full environment

view pixi env JSON

linear - fit time - 18 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs

linear - predict time - 18 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
Detailed results

Tree-based plots: within each implementation, cases without binningMapping each feature to a small number of integer bins (a few hundred at most) before building trees. (exact splitsSplits chosen among every distinct value of the feature.) are on the left, cases with binning (histogram-based splitsSplits chosen among bin edges instead of among every distinct feature value. Faster, and usually as accurate.) on the right.

tree-based - fit time - 0 cases

No matches for this group.

tree-based - predict time - 0 cases

No matches for this group.
Detailed results

clustering - fit time - 0 cases

No matches for this group.

clustering - predict time - 0 cases

No matches for this group.

linear - fit time - 8 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs

linear - predict time - 8 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
Detailed results

Tree-based plots: within each implementation, cases without binningMapping each feature to a small number of integer bins (a few hundred at most) before building trees. (exact splitsSplits chosen among every distinct value of the feature.) are on the left, cases with binning (histogram-based splitsSplits chosen among bin edges instead of among every distinct feature value. Faster, and usually as accurate.) on the right.

tree-based - fit time - 0 cases

No matches for this group.

tree-based - predict time - 0 cases

No matches for this group.
Detailed results

clustering - fit time - 0 cases

No matches for this group.

clustering - predict time - 0 cases

No matches for this group.

linear - fit time - 21 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs

linear - predict time - 21 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
Detailed results
No data
No data
Detailed results
No data
No data

linear - fit time - 11 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs

linear - predict time - 11 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
Detailed results
No data
No data
Detailed results
No data
No data

linear - fit time - 21 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs

linear - predict time - 21 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
Detailed results
No data
No data
Detailed results
No data
No data

linear - fit time - 11 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs

linear - predict time - 11 cases

● Metrics and benchmark setup match the baseline
■ Metrics match the baseline, but some comparison details are worth reporting:
  • 🔁 Number of iteration differs: this might mean algorithms differ
  • 🧮 Solver differs
Detailed results
No data
No data
Detailed results
No data
No data