HistGradientBoostingClassifier/Regressor 15x slowdown on small data problems compared to disabled OpenMP threading

This problem was first described as part of #14306, but I think it might make sense to open a dedicated issue for the particular problem of small data shapes.

The fundamental problem seems to be that the OpenMP threadpool overhead is frequently detrimental to performance on. Note that OpenMP threading is enabled by default in general in scikit-learn.

Here are the relative durations of running cross-validation on this model on data with various size with and without enabling threads:

![Image](https://github.com/user-attachments/assets/8f0c6da7-2c68-4f8c-9cdc-75058626c46b)

![Image](https://github.com/user-attachments/assets/804aab12-dc15-4c43-986a-ad05f07b7663)

![Image](https://github.com/user-attachments/assets/8768faa3-9fd4-4217-9006-ad1b6708ca4b)

Speed-up are measured in relative improvement in fit speed compared to a sequential fit (multi-threading disabled). 

This was collected on an Apple M1 CPU with 4 performance cores and 4 efficiency cores with llvm-opemp `libomp` installed from conda-forge.

<details>

```
System:
    python: 3.12.8 | packaged by conda-forge | (main, Dec  5 2024, 14:19:53) [Clang 18.1.8 ]
executable: /Users/ogrisel/miniforge3/envs/dev/bin/python
   machine: macOS-15.2-arm64-arm-64bit

Python dependencies:
      sklearn: 1.7.dev0
          pip: 24.3.1
   setuptools: 75.6.0
        numpy: 2.0.2
        scipy: 1.14.1
       Cython: 3.0.11
       pandas: 2.2.3
   matplotlib: 3.10.0
       joblib: 1.4.2
threadpoolctl: 3.5.0

Built with OpenMP: True

threadpoolctl info:
       user_api: openmp
   internal_api: openmp
    num_threads: 8
         prefix: libomp
       filepath: /Users/ogrisel/miniforge3/envs/dev/lib/libomp.dylib
        version: None
```

</details>

Here are my conclusions:

- Using threads can cause a huge slowdown on the smallest problems (15x slower than when running with the threads disabled);
- OpenMP threading becomes benefitial only with large datasets (more than 100k data points with hundreds of dimensions);
- Using the 4 efficiency cores is almost always detrimental. For Intel/AMD x86 CPUs we already disable SMT/HyperThreading for a similar reason (see #26082). But I don't know how to do something similar for efficiency cores in platform-agnostic way;
- We should probably disable multi-threading, or at least reduce the number of threads with a heuristic that depends on the data shape such as:
  ```python
  n_threads = min(
      min(
          max(n_samples * n_features // int(1e5), 1),
          n_features // 2,  # to avoid stragglers
      ),
      joblib.cpu_count(only_physical_cores=True)
  )
  ```
- Implementing [sample-wise parallelism](https://github.com/scikit-learn/scikit-learn/issues/14306#issuecomment-688377677) could probably help a bit on some case (`n_features << max(n_cores, n_samples)`, but I still think OpenMP threading should be disabled on the smallest problems.
- Results will probably also be impacted if we merge #27168.

## Benchmark result data

[bench_num_threads.parquet](https://drive.google.com/file/d/1sRCKpqrOFUMi4xs2g6SDfErJoN9CqrzG/view?usp=sharing)

## Benchmark code

<details>

```python
# %%
from time import perf_counter

from sklearn.ensemble import HistGradientBoostingRegressor
from sklearn.datasets import make_regression
from sklearn.model_selection import cross_val_score, ShuffleSplit
from threadpoolctl import threadpool_limits
import pandas as pd
import pyarrow
import fastparquet

# %%

records = []
data_shapes = [
    # n_features == 10
    (100, 10),
    (1_000, 10),
    (10_000, 10),
    (100_000, 10),
    (1_000_000, 10),
    # n_features == 100
    (100, 100),
    (1_000, 100),
    (10_000, 100),
    (100_000, 100),
    (1_000_000, 100),
    # n_features == 1000
    (100, 1_000),
    (1_000, 1_000),
]
# all_max_num_threads = [1, 2, 4, 8, None]  # None means using all available threads
all_max_num_threads = [1, 2, 4, 8]


for max_num_threads in all_max_num_threads:
    for n_samples, n_features in data_shapes:
        X, y = make_regression(
            n_samples=n_samples, n_features=n_features, random_state=0
        )
        with threadpool_limits(limits=max_num_threads):
            # Make sure we do enough CV splits to have non-trivial runtimes on
            # smaller problems.
            n_splits = max(int(1e5) // (n_samples * n_features), 5)
            start = perf_counter()
            scores = cross_val_score(
                HistGradientBoostingRegressor(),
                X,
                y,
                cv=ShuffleSplit(n_splits=n_splits, test_size=0.2, random_state=0),
            )
            end = perf_counter()
        record = {
            "n_samples": n_samples,
            "n_features": n_features,
            "n_splits": n_splits,
            "max_num_threads": max_num_threads,
            "duration": end - start,
        }
        print(record)
        records.append(record)

records = pd.DataFrame(records)
records.to_parquet("bench_num_threads.parquet")
```

</details>

## Plotting code

<details>

```python
# %%
import matplotlib.pyplot as plt
import pandas as pd

records = pd.read_parquet("bench_num_threads.parquet")
# %%
# For each (n_samples, n_features, n_splits) group, we compute the relative speed up
# with respect to running on a single thread. We append the result as a new "speedup" column
# to the records DataFrame.
# %%
speedups = []
for (n_samples, n_features, n_splits), group in records.groupby(
    ["n_samples", "n_features", "n_splits"]
):
    ref_duration = group[group["max_num_threads"] == 1]["duration"].values[0]
    group["speedup"] = (ref_duration / group["duration"]).round(2)
    speedups.append(group)

speedups = pd.concat(speedups)
speedups["slowdown"] = (1 / speedups["speedup"]).round(2)

# %%
speedups.sort_values("speedup", ascending=False).head(10)

# %%
speedups.sort_values("slowdown", ascending=False).head(10)


# %%
# We can now plot the speedup as a function of the number of threads used.
# %%
def plot_speed_curves(speedups, n_features=100):
    fig, ax = plt.subplots()
    for (n_samples, n_features, n_splits), group in speedups.query(
        "n_features == @n_features"
    ).groupby(["n_samples", "n_features", "n_splits"]):
        group.plot(
            x="max_num_threads",
            y="speedup",
            ax=ax,
            label=f"X.shape=({n_samples}, {n_features}))",
        )
    ax.hlines(1, 0.95, 8.5, linestyles="--", color="gray")
    ax.set(
        xscale="log",
        xlabel="Number of threads",
        xticks=[1, 4, 8],
        xticklabels=["1", "4", "8"],
        yscale="log",
        ylabel="Speedup",
        yticks=[0.1, 0.2, 0.5, 1, 2, 5, 10],
        yticklabels=["0.1x", "0.2x", "0.5x", "1x", "2x", "5x", "10x"],
        title=f"Impact of threading on fit time (n_features={n_features})",
    )


plot_speed_curves(speedups, n_features=10)
plot_speed_curves(speedups, n_features=100)
plot_speed_curves(speedups, n_features=1000)
```

</details>

COMMENT:
p-state: power saver

Output

<details>

```py
{'n_samples': 100, 'n_features': 10, 'n_splits': 100, 'max_num_threads': 1, 'duration': 1.2235197949994472}
{'n_samples': 1000, 'n_features': 10, 'n_splits': 10, 'max_num_threads': 1, 'duration': 1.0032359580000048}
{'n_samples': 10000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 1, 'duration': 0.9306225459986308}
{'n_samples': 100000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 1, 'duration': 3.9306875459988078}
{'n_samples': 1000000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 1, 'duration': 32.38274657000147}
{'n_samples': 100, 'n_features': 100, 'n_splits': 10, 'max_num_threads': 1, 'duration': 0.23923745600041002}
{'n_samples': 1000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 1, 'duration': 2.376336817997071}
{'n_samples': 10000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 1, 'duration': 5.904868492998503}
{'n_samples': 100000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 1, 'duration': 22.14264605900098}
{'n_samples': 1000000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 1, 'duration': 303.11097497899755}
{'n_samples': 100, 'n_features': 1000, 'n_splits': 5, 'max_num_threads': 1, 'duration': 0.7127765549994365}
{'n_samples': 1000, 'n_features': 1000, 'n_splits': 5, 'max_num_threads': 1, 'duration': 32.426925440999185}
{'n_samples': 100, 'n_features': 10, 'n_splits': 100, 'max_num_threads': 2, 'duration': 2.4615362550030113}
{'n_samples': 1000, 'n_features': 10, 'n_splits': 10, 'max_num_threads': 2, 'duration': 0.9892114299982495}
{'n_samples': 10000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 2, 'duration': 0.7762397830010741}
{'n_samples': 100000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 2, 'duration': 2.2490929340019647}
{'n_samples': 1000000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 2, 'duration': 19.661922819999745}
{'n_samples': 100, 'n_features': 100, 'n_splits': 10, 'max_num_threads': 2, 'duration': 0.30566067099789507}
{'n_samples': 1000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 2, 'duration': 1.509200486998452}
{'n_samples': 10000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 2, 'duration': 3.385510476997297}
{'n_samples': 100000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 2, 'duration': 11.697154211997258}
{'n_samples': 1000000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 2, 'duration': 173.2734863600017}
{'n_samples': 100, 'n_features': 1000, 'n_splits': 5, 'max_num_threads': 2, 'duration': 0.6258520869996573}
{'n_samples': 1000, 'n_features': 1000, 'n_splits': 5, 'max_num_threads': 2, 'duration': 21.050181632999738}
{'n_samples': 100, 'n_features': 10, 'n_splits': 100, 'max_num_threads': 4, 'duration': 2.5266927880002186}
{'n_samples': 1000, 'n_features': 10, 'n_splits': 10, 'max_num_threads': 4, 'duration': 0.9697170850013208}
{'n_samples': 10000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 4, 'duration': 0.6860870840027928}
{'n_samples': 100000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 4, 'duration': 1.581301935002557}
{'n_samples': 1000000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 4, 'duration': 13.337096402003226}
{'n_samples': 100, 'n_features': 100, 'n_splits': 10, 'max_num_threads': 4, 'duration': 0.2887850730003265}
{'n_samples': 1000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 4, 'duration': 1.0754341450010543}
{'n_samples': 10000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 4, 'duration': 2.109291463999398}
{'n_samples': 100000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 4, 'duration': 7.128967477998231}
{'n_samples': 1000000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 4, 'duration': 114.85433963700052}
{'n_samples': 100, 'n_features': 1000, 'n_splits': 5, 'max_num_threads': 4, 'duration': 0.4798744239997177}
{'n_samples': 1000, 'n_features': 1000, 'n_splits': 5, 'max_num_threads': 4, 'duration': 15.61376267399828}
{'n_samples': 100, 'n_features': 10, 'n_splits': 100, 'max_num_threads': 8, 'duration': 2.7549153180007124}
{'n_samples': 1000, 'n_features': 10, 'n_splits': 10, 'max_num_threads': 8, 'duration': 1.2030834869983664}
{'n_samples': 10000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 8, 'duration': 0.7932010519980395}
{'n_samples': 100000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 8, 'duration': 1.560769536998123}
{'n_samples': 1000000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 8, 'duration': 10.863318101000914}
{'n_samples': 100, 'n_features': 100, 'n_splits': 10, 'max_num_threads': 8, 'duration': 0.30670014200222795}
{'n_samples': 1000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 8, 'duration': 1.0762463130013202}
{'n_samples': 10000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 8, 'duration': 1.848111761999462}
{'n_samples': 100000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 8, 'duration': 5.683336021000287}
{'n_samples': 1000000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 8, 'duration': 97.94975079899814}
{'n_samples': 100, 'n_features': 1000, 'n_splits': 5, 'max_num_threads': 8, 'duration': 0.5398816680026357}
{'n_samples': 1000, 'n_features': 1000, 'n_splits': 5, 'max_num_threads': 8, 'duration': 14.278457967000577}
```
</details>

![Image](https://github.com/user-attachments/assets/bb695a32-619c-4ce2-8e3b-d9d3e34e496a)
![Image](https://github.com/user-attachments/assets/5a78e178-9e4b-407b-a174-329ba4be08e5)
![Image](https://github.com/user-attachments/assets/6e10f7d1-a341-40a4-ba91-38dfc9668c58)

p-state: performance

Output
<details>

```py
{'n_samples': 100, 'n_features': 10, 'n_splits': 100, 'max_num_threads': 1, 'duration': 0.8702442760004487}
{'n_samples': 1000, 'n_features': 10, 'n_splits': 10, 'max_num_threads': 1, 'duration': 0.7496537070001068}
{'n_samples': 10000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 1, 'duration': 0.6960009829999763}
{'n_samples': 100000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 1, 'duration': 2.5875525529991137}
{'n_samples': 1000000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 1, 'duration': 20.407674755999324}
{'n_samples': 100, 'n_features': 100, 'n_splits': 10, 'max_num_threads': 1, 'duration': 0.19070158500107937}
{'n_samples': 1000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 1, 'duration': 1.7824342210005852}
{'n_samples': 10000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 1, 'duration': 4.160567058999732}
{'n_samples': 100000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 1, 'duration': 16.109402843998396}
{'n_samples': 1000000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 1, 'duration': 135.47753163900052}
{'n_samples': 100, 'n_features': 1000, 'n_splits': 5, 'max_num_threads': 1, 'duration': 0.6791847450003843}
{'n_samples': 1000, 'n_features': 1000, 'n_splits': 5, 'max_num_threads': 1, 'duration': 21.932347314999788}
{'n_samples': 100, 'n_features': 10, 'n_splits': 100, 'max_num_threads': 2, 'duration': 2.182193349002773}
{'n_samples': 1000, 'n_features': 10, 'n_splits': 10, 'max_num_threads': 2, 'duration': 0.8268142209999496}
{'n_samples': 10000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 2, 'duration': 0.62468416000047}
{'n_samples': 100000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 2, 'duration': 1.7239931560034165}
{'n_samples': 1000000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 2, 'duration': 12.651404404001369}
{'n_samples': 100, 'n_features': 100, 'n_splits': 10, 'max_num_threads': 2, 'duration': 0.26368795999951544}
{'n_samples': 1000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 2, 'duration': 1.2172052309979335}
{'n_samples': 10000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 2, 'duration': 2.6358259670014377}
{'n_samples': 100000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 2, 'duration': 9.242192492998583}
{'n_samples': 1000000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 2, 'duration': 73.98735750000196}
{'n_samples': 100, 'n_features': 1000, 'n_splits': 5, 'max_num_threads': 2, 'duration': 0.5302060840003833}
{'n_samples': 1000, 'n_features': 1000, 'n_splits': 5, 'max_num_threads': 2, 'duration': 11.958215552000183}
{'n_samples': 100, 'n_features': 10, 'n_splits': 100, 'max_num_threads': 4, 'duration': 2.197839356998884}
{'n_samples': 1000, 'n_features': 10, 'n_splits': 10, 'max_num_threads': 4, 'duration': 0.7902206379985728}
{'n_samples': 10000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 4, 'duration': 0.5534847790004278}
{'n_samples': 100000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 4, 'duration': 1.1661606720008422}
{'n_samples': 1000000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 4, 'duration': 7.32669518700277}
{'n_samples': 100, 'n_features': 100, 'n_splits': 10, 'max_num_threads': 4, 'duration': 0.2411722649994772}
{'n_samples': 1000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 4, 'duration': 0.8515549619987723}
{'n_samples': 10000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 4, 'duration': 1.5362254259998736}
{'n_samples': 100000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 4, 'duration': 4.882054713001708}
{'n_samples': 1000000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 4, 'duration': 45.43870402599714}
{'n_samples': 100, 'n_features': 1000, 'n_splits': 5, 'max_num_threads': 4, 'duration': 0.3888086150000163}
{'n_samples': 1000, 'n_features': 1000, 'n_splits': 5, 'max_num_threads': 4, 'duration': 7.900324690999696}
{'n_samples': 100, 'n_features': 10, 'n_splits': 100, 'max_num_threads': 8, 'duration': 2.3149999140005093}
{'n_samples': 1000, 'n_features': 10, 'n_splits': 10, 'max_num_threads': 8, 'duration': 0.8425366440023936}
{'n_samples': 10000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 8, 'duration': 0.5546896080013539}
{'n_samples': 100000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 8, 'duration': 0.9921274469998025}
{'n_samples': 1000000, 'n_features': 10, 'n_splits': 5, 'max_num_threads': 8, 'duration': 5.283315529999527}
{'n_samples': 100, 'n_features': 100, 'n_splits': 10, 'max_num_threads': 8, 'duration': 0.24690069500138634}
{'n_samples': 1000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 8, 'duration': 0.7428547349991277}
{'n_samples': 10000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 8, 'duration': 1.2440537069996935}
{'n_samples': 100000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 8, 'duration': 3.3158026689998223}
{'n_samples': 1000000, 'n_features': 100, 'n_splits': 5, 'max_num_threads': 8, 'duration': 35.183389413999976}
{'n_samples': 100, 'n_features': 1000, 'n_splits': 5, 'max_num_threads': 8, 'duration': 0.35002900999825215}
{'n_samples': 1000, 'n_features': 1000, 'n_splits': 5, 'max_num_threads': 8, 'duration': 6.323826675001328}
```
</details>

![Image](https://github.com/user-attachments/assets/67f7cd48-ee54-4227-a3c2-187a70e5c18e)
![Image](https://github.com/user-attachments/assets/46b8c4b1-5dc7-4d2d-81af-d7352f6954b8)
![Image](https://github.com/user-attachments/assets/6ddfd874-4ccb-4e12-b013-2550ea875442)

CPU info

<details>

```sh
$ cat /proc/cpuinfo 
processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 25
model		: 116
model name	: AMD Ryzen 9 PRO 7940HS w/ Radeon 780M Graphics
stepping	: 1
microcode	: 0xa704107
cpu MHz		: 3749.385
cache size	: 1024 KB
physical id	: 0
siblings	: 16
core id		: 0
cpu cores	: 8
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 16
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good amd_lbr_v2 nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local user_shstk avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d amd_lbr_pmc_freeze
bugs		: sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass srso
bogomips	: 7988.72
TLB size	: 3584 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 48 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14] [15]

processor	: 1
vendor_id	: AuthenticAMD
cpu family	: 25
model		: 116
model name	: AMD Ryzen 9 PRO 7940HS w/ Radeon 780M Graphics
stepping	: 1
microcode	: 0xa704107
cpu MHz		: 1097.000
cache size	: 1024 KB
physical id	: 0
siblings	: 16
core id		: 0
cpu cores	: 8
apicid		: 1
initial apicid	: 1
fpu		: yes
fpu_exception	: yes
cpuid level	: 16
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good amd_lbr_v2 nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local user_shstk avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d amd_lbr_pmc_freeze
bugs		: sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass srso
bogomips	: 7988.72
TLB size	: 3584 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 48 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14] [15]

processor	: 2
vendor_id	: AuthenticAMD
cpu family	: 25
model		: 116
model name	: AMD Ryzen 9 PRO 7940HS w/ Radeon 780M Graphics
stepping	: 1
microcode	: 0xa704107
cpu MHz		: 1097.000
cache size	: 1024 KB
physical id	: 0
siblings	: 16
core id		: 1
cpu cores	: 8
apicid		: 2
initial apicid	: 2
fpu		: yes
fpu_exception	: yes
cpuid level	: 16
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good amd_lbr_v2 nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local user_shstk avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d amd_lbr_pmc_freeze
bugs		: sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass srso
bogomips	: 7988.72
TLB size	: 3584 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 48 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14] [15]

processor	: 3
vendor_id	: AuthenticAMD
cpu family	: 25
model		: 116
model name	: AMD Ryzen 9 PRO 7940HS w/ Radeon 780M Graphics
stepping	: 1
microcode	: 0xa704107
cpu MHz		: 1097.000
cache size	: 1024 KB
physical id	: 0
siblings	: 16
core id		: 1
cpu cores	: 8
apicid		: 3
initial apicid	: 3
fpu		: yes
fpu_exception	: yes
cpuid level	: 16
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good amd_lbr_v2 nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local user_shstk avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d amd_lbr_pmc_freeze
bugs		: sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass srso
bogomips	: 7988.72
TLB size	: 3584 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 48 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14] [15]

processor	: 4
vendor_id	: AuthenticAMD
cpu family	: 25
model		: 116
model name	: AMD Ryzen 9 PRO 7940HS w/ Radeon 780M Graphics
stepping	: 1
microcode	: 0xa704107
cpu MHz		: 3426.767
cache size	: 1024 KB
physical id	: 0
siblings	: 16
core id		: 2
cpu cores	: 8
apicid		: 4
initial apicid	: 4
fpu		: yes
fpu_exception	: yes
cpuid level	: 16
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good amd_lbr_v2 nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local user_shstk avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d amd_lbr_pmc_freeze
bugs		: sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass srso
bogomips	: 7988.72
TLB size	: 3584 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 48 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14] [15]

processor	: 5
vendor_id	: AuthenticAMD
cpu family	: 25
model		: 116
model name	: AMD Ryzen 9 PRO 7940HS w/ Radeon 780M Graphics
stepping	: 1
microcode	: 0xa704107
cpu MHz		: 1097.000
cache size	: 1024 KB
physical id	: 0
siblings	: 16
core id		: 2
cpu cores	: 8
apicid		: 5
initial apicid	: 5
fpu		: yes
fpu_exception	: yes
cpuid level	: 16
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good amd_lbr_v2 nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local user_shstk avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d amd_lbr_pmc_freeze
bugs		: sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass srso
bogomips	: 7988.72
TLB size	: 3584 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 48 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14] [15]

processor	: 6
vendor_id	: AuthenticAMD
cpu family	: 25
model		: 116
model name	: AMD Ryzen 9 PRO 7940HS w/ Radeon 780M Graphics
stepping	: 1
microcode	: 0xa704107
cpu MHz		: 3616.497
cache size	: 1024 KB
physical id	: 0
siblings	: 16
core id		: 3
cpu cores	: 8
apicid		: 6
initial apicid	: 6
fpu		: yes
fpu_exception	: yes
cpuid level	: 16
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good amd_lbr_v2 nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local user_shstk avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d amd_lbr_pmc_freeze
bugs		: sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass srso
bogomips	: 7988.72
TLB size	: 3584 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 48 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14] [15]

processor	: 7
vendor_id	: AuthenticAMD
cpu family	: 25
model		: 116
model name	: AMD Ryzen 9 PRO 7940HS w/ Radeon 780M Graphics
stepping	: 1
microcode	: 0xa704107
cpu MHz		: 1097.000
cache size	: 1024 KB
physical id	: 0
siblings	: 16
core id		: 3
cpu cores	: 8
apicid		: 7
initial apicid	: 7
fpu		: yes
fpu_exception	: yes
cpuid level	: 16
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good amd_lbr_v2 nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local user_shstk avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d amd_lbr_pmc_freeze
bugs		: sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass srso
bogomips	: 7988.72
TLB size	: 3584 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 48 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14] [15]

processor	: 8
vendor_id	: AuthenticAMD
cpu family	: 25
model		: 116
model name	: AMD Ryzen 9 PRO 7940HS w/ Radeon 780M Graphics
stepping	: 1
microcode	: 0xa704107
cpu MHz		: 1097.000
cache size	: 1024 KB
physical id	: 0
siblings	: 16
core id		: 4
cpu cores	: 8
apicid		: 8
initial apicid	: 8
fpu		: yes
fpu_exception	: yes
cpuid level	: 16
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good amd_lbr_v2 nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local user_shstk avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d amd_lbr_pmc_freeze
bugs		: sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass srso
bogomips	: 7988.72
TLB size	: 3584 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 48 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14] [15]

processor	: 9
vendor_id	: AuthenticAMD
cpu family	: 25
model		: 116
model name	: AMD Ryzen 9 PRO 7940HS w/ Radeon 780M Graphics
stepping	: 1
microcode	: 0xa704107
cpu MHz		: 1097.000
cache size	: 1024 KB
physical id	: 0
siblings	: 16
core id		: 4
cpu cores	: 8
apicid		: 9
initial apicid	: 9
fpu		: yes
fpu_exception	: yes
cpuid level	: 16
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good amd_lbr_v2 nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local user_shstk avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d amd_lbr_pmc_freeze
bugs		: sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass srso
bogomips	: 7988.72
TLB size	: 3584 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 48 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14] [15]

processor	: 10
vendor_id	: AuthenticAMD
cpu family	: 25
model		: 116
model name	: AMD Ryzen 9 PRO 7940HS w/ Radeon 780M Graphics
stepping	: 1
microcode	: 0xa704107
cpu MHz		: 4404.866
cache size	: 1024 KB
physical id	: 0
siblings	: 16
core id		: 5
cpu cores	: 8
apicid		: 10
initial apicid	: 10
fpu		: yes
fpu_exception	: yes
cpuid level	: 16
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good amd_lbr_v2 nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local user_shstk avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d amd_lbr_pmc_freeze
bugs		: sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass srso
bogomips	: 7988.72
TLB size	: 3584 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 48 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14] [15]

processor	: 11
vendor_id	: AuthenticAMD
cpu family	: 25
model		: 116
model name	: AMD Ryzen 9 PRO 7940HS w/ Radeon 780M Graphics
stepping	: 1
microcode	: 0xa704107
cpu MHz		: 4718.994
cache size	: 1024 KB
physical id	: 0
siblings	: 16
core id		: 5
cpu cores	: 8
apicid		: 11
initial apicid	: 11
fpu		: yes
fpu_exception	: yes
cpuid level	: 16
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good amd_lbr_v2 nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local user_shstk avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d amd_lbr_pmc_freeze
bugs		: sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass srso
bogomips	: 7988.72
TLB size	: 3584 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 48 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14] [15]

processor	: 12
vendor_id	: AuthenticAMD
cpu family	: 25
model		: 116
model name	: AMD Ryzen 9 PRO 7940HS w/ Radeon 780M Graphics
stepping	: 1
microcode	: 0xa704107
cpu MHz		: 1097.000
cache size	: 1024 KB
physical id	: 0
siblings	: 16
core id		: 6
cpu cores	: 8
apicid		: 12
initial apicid	: 12
fpu		: yes
fpu_exception	: yes
cpuid level	: 16
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good amd_lbr_v2 nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local user_shstk avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d amd_lbr_pmc_freeze
bugs		: sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass srso
bogomips	: 7988.72
TLB size	: 3584 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 48 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14] [15]

processor	: 13
vendor_id	: AuthenticAMD
cpu family	: 25
model		: 116
model name	: AMD Ryzen 9 PRO 7940HS w/ Radeon 780M Graphics
stepping	: 1
microcode	: 0xa704107
cpu MHz		: 1097.000
cache size	: 1024 KB
physical id	: 0
siblings	: 16
core id		: 6
cpu cores	: 8
apicid		: 13
initial apicid	: 13
fpu		: yes
fpu_exception	: yes
cpuid level	: 16
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good amd_lbr_v2 nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local user_shstk avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d amd_lbr_pmc_freeze
bugs		: sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass srso
bogomips	: 7988.72
TLB size	: 3584 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 48 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14] [15]

processor	: 14
vendor_id	: AuthenticAMD
cpu family	: 25
model		: 116
model name	: AMD Ryzen 9 PRO 7940HS w/ Radeon 780M Graphics
stepping	: 1
microcode	: 0xa704107
cpu MHz		: 1597.929
cache size	: 1024 KB
physical id	: 0
siblings	: 16
core id		: 7
cpu cores	: 8
apicid		: 14
initial apicid	: 14
fpu		: yes
fpu_exception	: yes
cpuid level	: 16
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good amd_lbr_v2 nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local user_shstk avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d amd_lbr_pmc_freeze
bugs		: sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass srso
bogomips	: 7988.72
TLB size	: 3584 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 48 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14] [15]

processor	: 15
vendor_id	: AuthenticAMD
cpu family	: 25
model		: 116
model name	: AMD Ryzen 9 PRO 7940HS w/ Radeon 780M Graphics
stepping	: 1
microcode	: 0xa704107
cpu MHz		: 3688.115
cache size	: 1024 KB
physical id	: 0
siblings	: 16
core id		: 7
cpu cores	: 8
apicid		: 15
initial apicid	: 15
fpu		: yes
fpu_exception	: yes
cpuid level	: 16
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good amd_lbr_v2 nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local user_shstk avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid overflow_recov succor smca fsrm flush_l1d amd_lbr_pmc_freeze
bugs		: sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass srso
bogomips	: 7988.72
TLB size	: 3584 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 48 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14] [15]
```

</details>

env info

<details>

```sh
$ mmamba list
List of packages in environment: "/home/adrin/micromamba/envs/sklearn"

  Name                       Version       Build                  Channel    
───────────────────────────────────────────────────────────────────────────────
  Sphinx                     7.3.7         pypi_0                 pypi       
  _libgcc_mutex              0.1           conda_forge            conda-forge
  _openmp_mutex              4.5           2_kmp_llvm             conda-forge
  alsa-lib                   1.2.11        hd590300_1             conda-forge
  array_api_compat           1.8           pypi_0                 pypi       
  array_api_strict           2.0.1         pypi_0                 pypi       
  asttokens                  2.4.1         pyhd8ed1ab_0           conda-forge
  atk-1.0                    2.38.0        h04ea711_2             conda-forge
  attr                       2.5.1         h166bdaf_1             conda-forge
  black                      24.3.0        py312h7900ff3_0        conda-forge
  blas                       1.0           mkl                    conda-forge
  brotli                     1.1.0         hd590300_1             conda-forge
  brotli-bin                 1.1.0         hd590300_1             conda-forge
  bzip2                      1.0.8         hd590300_5             conda-forge
  ca-certificates            2024.2.2      hbcca054_0             conda-forge
  cairo                      1.18.0        h3faef2a_0             conda-forge
  catboost                   1.2.5         py312h7900ff3_0        conda-forge
  certifi                    2024.2.2      pyhd8ed1ab_0           conda-forge
  cffi                       1.16.0        py312hf06ca03_0        conda-forge
  cfgv                       3.3.1         pyhd8ed1ab_0           conda-forge
  click                      8.1.7         unix_pyh707e725_0      conda-forge
  colorama                   0.4.6         pyhd8ed1ab_0           conda-forge
  contourpy                  1.2.1         py312h8572e83_0        conda-forge
  cpuonly                    2.0           0                      pytorch    
  cramjam                    2.8.4rc3      py312h78ba408_2        conda-forge
  cycler                     0.12.1        pyhd8ed1ab_0           conda-forge
  cython                     3.0.10        py312h30efb56_0        conda-forge
  dbus                       1.13.6        h5008d03_3             conda-forge
  decorator                  5.1.1         pyhd8ed1ab_0           conda-forge
  distlib                    0.3.8         pyhd8ed1ab_0           conda-forge
  exceptiongroup             1.2.0         pyhd8ed1ab_2           conda-forge
  execnet                    2.1.1         pyhd8ed1ab_0           conda-forge
  executing                  2.0.1         pyhd8ed1ab_0           conda-forge
  expat                      2.6.2         h59595ed_0             conda-forge
  fastparquet                2024.11.0     py312hc0a28a1_0        conda-forge
  filelock                   3.14.0        pyhd8ed1ab_0           conda-forge
  font-ttf-dejavu-sans-mono  2.37          hab24e00_0             conda-forge
  font-ttf-inconsolata       3.000         h77eed37_0             conda-forge
  font-ttf-source-code-pro   2.038         h77eed37_0             conda-forge
  font-ttf-ubuntu            0.83          h77eed37_2             conda-forge
  fontconfig                 2.14.2        h14ed4e7_0             conda-forge
  fonts-conda-ecosystem      1             0                      conda-forge
  fonts-conda-forge          1             0                      conda-forge
  fonttools                  4.51.0        py312h98912ed_0        conda-forge
  freetype                   2.12.1        h267a509_2             conda-forge
  fribidi                    1.0.10        h36c2ea0_0             conda-forge
  fsspec                     2024.12.0     pyhd8ed1ab_0           conda-forge
  gdk-pixbuf                 2.42.11       hb9ae30d_0             conda-forge
  gettext                    0.22.5        h59595ed_2             conda-forge
  gettext-tools              0.22.5        h59595ed_2             conda-forge
  giflib                     5.2.2         hd590300_0             conda-forge
  glib                       2.80.0        hf2295e7_6             conda-forge
  glib-tools                 2.80.0        hde27a5a_6             conda-forge
  gmp                        6.3.0         hac33072_2             conda-forge
  gmpy2                      2.1.5         py312h1d5cde6_1        conda-forge
  graphite2                  1.3.13        h59595ed_1003          conda-forge
  graphviz                   9.0.0         h78e8752_1             conda-forge
  gst-plugins-base           1.24.3        h9ad1361_0             conda-forge
  gstreamer                  1.24.3        haf2f30d_0             conda-forge
  gtk2                       2.24.33       h280cfa0_4             conda-forge
  gts                        0.7.6         h977cf35_4             conda-forge
  harfbuzz                   8.4.0         h3d44ed6_0             conda-forge
  icu                        73.2          h59595ed_0             conda-forge
  identify                   2.5.36        pyhd8ed1ab_0           conda-forge
  iniconfig                  2.0.0         pyhd8ed1ab_0           conda-forge
  ipython                    8.22.2        pyh707e725_0           conda-forge
  jedi                       0.19.1        pyhd8ed1ab_0           conda-forge
  jinja2                     3.1.4         pyhd8ed1ab_0           conda-forge
  joblib                     1.4.2         pyhd8ed1ab_0           conda-forge
  jupyterlite-sphinx         0.15.0        pypi_0                 pypi       
  keyutils                   1.6.1         h166bdaf_0             conda-forge
  kiwisolver                 1.4.5         py312h8572e83_1        conda-forge
  krb5                       1.21.2        h659d440_0             conda-forge
  lame                       3.100         h166bdaf_1003          conda-forge
  lcms2                      2.16          hb7c19ff_0             conda-forge
  ld_impl_linux-64           2.40          h55db66e_0             conda-forge
  lerc                       4.0.0         h27087fc_0             conda-forge
  libasprintf                0.22.5        h661eb56_2             conda-forge
  libasprintf-devel          0.22.5        h661eb56_2             conda-forge
  libblas                    3.9.0         16_linux64_mkl         conda-forge
  libbrotlicommon            1.1.0         hd590300_1             conda-forge
  libbrotlidec               1.1.0         hd590300_1             conda-forge
  libbrotlienc               1.1.0         hd590300_1             conda-forge
  libcap                     2.69          h0f662aa_0             conda-forge
  libcblas                   3.9.0         16_linux64_mkl         conda-forge
  libclang-cpp15             15.0.7        default_h127d8a8_5     conda-forge
  libclang13                 18.1.5        default_h5d6823c_0     conda-forge
  libcups                    2.3.3         h4637d8d_4             conda-forge
  libdeflate                 1.20          hd590300_0             conda-forge
  libedit                    3.1.20191231  he28a2e2_2             conda-forge
  libevent                   2.1.12        hf998b51_1             conda-forge
  libexpat                   2.6.2         h59595ed_0             conda-forge
  libffi                     3.4.2         h7f98852_5             conda-forge
  libflac                    1.4.3         h59595ed_0             conda-forge
  libgcc                     14.2.0        h77fa898_1             conda-forge
  libgcc-ng                  14.2.0        h69a702a_1             conda-forge
  libgcrypt                  1.10.3        hd590300_0             conda-forge
  libgd                      2.3.3         h119a65a_9             conda-forge
  libgettextpo               0.22.5        h59595ed_2             conda-forge
  libgettextpo-devel         0.22.5        h59595ed_2             conda-forge
  libgfortran-ng             13.2.0        h69a702a_6             conda-forge
  libgfortran5               13.2.0        h43f5ff8_6             conda-forge
  libglib                    2.80.0        hf2295e7_6             conda-forge
  libgomp                    14.2.0        h77fa898_1             conda-forge
  libgpg-error               1.49          h4f305b6_0             conda-forge
  libhwloc                   2.10.0        default_h2fb2949_1000  conda-forge
  libiconv                   1.17          hd590300_2             conda-forge
  libjpeg-turbo              3.0.0         hd590300_1             conda-forge
  liblapack                  3.9.0         16_linux64_mkl         conda-forge
  libllvm15                  15.0.7        hb3ce162_4             conda-forge
  libllvm18                  18.1.5        hb77312f_0             conda-forge
  libnsl                     2.0.1         hd590300_0             conda-forge
  libogg                     1.3.4         h7f98852_1             conda-forge
  libopenblas                0.3.27        pthreads_h413a1c8_0    conda-forge
  libopus                    1.3.1         h7f98852_1             conda-forge
  libpng                     1.6.43        h2797004_0             conda-forge
  libpq                      16.2          h33b98f1_1             conda-forge
  librsvg                    2.58.0        hadf69e7_1             conda-forge
  libsndfile                 1.2.2         hc60ed4a_1             conda-forge
  libsqlite                  3.45.3        h2797004_0             conda-forge
  libstdcxx                  14.2.0        hc0a3c3a_1             conda-forge
  libstdcxx-ng               13.2.0        hc0a3c3a_6             conda-forge
  libsystemd0                255           h3516f8a_1             conda-forge
  libtiff                    4.6.0         h1dd3fc0_3             conda-forge
  libuuid                    2.38.1        h0b41bf4_0             conda-forge
  libvorbis                  1.3.7         h9c3ff4c_0             conda-forge
  libwebp                    1.4.0         h2c329e2_0             conda-forge
  libwebp-base               1.4.0         hd590300_0             conda-forge
  libxcb                     1.15          h0b41bf4_0             conda-forge
  libxcrypt                  4.4.36        hd590300_1             conda-forge
  libxkbcommon               1.7.0         h662e7e4_0             conda-forge
  libxml2                    2.12.6        h232c23b_2             conda-forge
  libzlib                    1.2.13        hd590300_5             conda-forge
  lightgbm                   4.3.0         py312h30efb56_0        conda-forge
  llvm-openmp                15.0.7        h0cdce71_0             conda-forge
  lz4-c                      1.9.4         hcb278e6_0             conda-forge
  markupsafe                 2.1.5         py312h98912ed_0        conda-forge
  matplotlib                 3.8.4         py312h7900ff3_0        conda-forge
  matplotlib-base            3.8.4         py312h20ab3a6_2        conda-forge
  matplotlib-inline          0.1.7         pyhd8ed1ab_0           conda-forge
  meson                      1.4.0         pyhd8ed1ab_0           conda-forge
  meson-python               0.16.0        pyh0c530f3_0           conda-forge
  mkl                        2022.2.1      h84fe81f_16997         conda-forge
  mpc                        1.3.1         hfe3b2da_0             conda-forge
  mpfr                       4.2.1         h9458935_1             conda-forge
  mpg123                     1.32.6        h59595ed_0             conda-forge
  mpmath                     1.3.0         pyhd8ed1ab_0           conda-forge
  munkres                    1.1.4         pyh9f0ad1d_0           conda-forge
  mypy                       1.11.1        pypi_0                 pypi       
  mypy_extensions            1.0.0         pyha770c72_0           conda-forge
  mysql-common               8.3.0         hf1915f5_4             conda-forge
  mysql-libs                 8.3.0         hca2cd23_4             conda-forge
  ncurses                    6.4.20240210  h59595ed_0             conda-forge
  networkx                   3.3           pyhd8ed1ab_1           conda-forge
  ninja                      1.12.0        h00ab1b0_0             conda-forge
  nodeenv                    1.8.0         pyhd8ed1ab_0           conda-forge
  nspr                       4.35          h27087fc_0             conda-forge
  nss                        3.98          h1d7d5a4_0             conda-forge
  numpy                      2.0.1         py312h1103770_0        conda-forge
  numpydoc                   1.7.0         pypi_0                 pypi       
  openjpeg                   2.5.2         h488ebb8_0             conda-forge
  openssl                    3.3.0         hd590300_0             conda-forge
  packaging                  24.0          pyhd8ed1ab_0           conda-forge
  pandas                     2.2.2         py312h1d6d2e6_1        conda-forge
  pango                      1.52.2        ha41ecd1_0             conda-forge
  parso                      0.8.4         pyhd8ed1ab_0           conda-forge
  pathspec                   0.12.1        pyhd8ed1ab_0           conda-forge
  pcre2                      10.43         hcad00b1_0             conda-forge
  pexpect                    4.9.0         pyhd8ed1ab_0           conda-forge
  pickleshare                0.7.5         py_1003                conda-forge
  pillow                     10.3.0        py312hdcec9eb_0        conda-forge
  pip                        24.0          pyhd8ed1ab_0           conda-forge
  pixman                     0.43.2        h59595ed_0             conda-forge
  platformdirs               4.2.1         pyhd8ed1ab_0           conda-forge
  plotly                     5.22.0        pyhd8ed1ab_0           conda-forge
  pluggy                     1.5.0         pyhd8ed1ab_0           conda-forge
  ply                        3.11          pyhd8ed1ab_2           conda-forge
  polars                     0.20.31       py312hc7f843c_0        conda-forge
  pooch                      1.8.1         pypi_0                 pypi       
  pre-commit                 3.7.0         pyha770c72_0           conda-forge
  prompt-toolkit             3.0.42        pyha770c72_0           conda-forge
  pthread-stubs              0.4           h36c2ea0_1001          conda-forge
  ptyprocess                 0.7.0         pyhd3deb0d_0           conda-forge
  pulseaudio-client          17.0          hb77b528_0             conda-forge
  pure_eval                  0.2.2         pyhd8ed1ab_0           conda-forge
  pycparser                  2.22          pyhd8ed1ab_0           conda-forge
  pydata-sphinx-theme        0.15.3        pypi_0                 pypi       
  pygments                   2.18.0        pyhd8ed1ab_0           conda-forge
  pyparsing                  3.1.2         pyhd8ed1ab_0           conda-forge
  pyproject-metadata         0.8.0         pyhd8ed1ab_0           conda-forge
  pyqt                       5.15.9        py312h949fe66_5        conda-forge
  pyqt5-sip                  12.12.2       py312h30efb56_5        conda-forge
  pytest                     8.3.3         pyhd8ed1ab_0           conda-forge
  pytest-xdist               3.6.1         pyhd8ed1ab_0           conda-forge
  python                     3.12.3        hab00c5b_0_cpython     conda-forge
  python-dateutil            2.9.0         pyhd8ed1ab_0           conda-forge
  python-graphviz            0.20.3        pyh717bed2_0           conda-forge
  python-tzdata              2024.1        pyhd8ed1ab_0           conda-forge
  python_abi                 3.12          4_cp312                conda-forge
  pytorch                    2.3.1         py3.12_cpu_0           pytorch    
  pytorch-mutex              1.0           cpu                    pytorch    
  pytz                       2024.1        pyhd8ed1ab_0           conda-forge
  pyyaml                     6.0.1         py312h98912ed_1        conda-forge
  qt-main                    5.15.8        hc9dc06e_21            conda-forge
  readline                   8.2           h8228510_1             conda-forge
  ruff                       0.2.1         py312h9118e91_0        conda-forge
  scikit-image               0.23.2        pypi_0                 pypi       
  scikit-learn               1.7.dev0      pypi_0                 pypi       
  scipy                      1.14.0        py312hc2bc53b_1        conda-forge
  seaborn                    0.13.2        pypi_0                 pypi       
  setuptools                 69.5.1        pyhd8ed1ab_0           conda-forge
  sip                        6.7.12        py312h30efb56_0        conda-forge
  six                        1.16.0        pyh6c4a22f_0           conda-forge
  snakeviz                   2.2.0         pypi_0                 pypi       
  sphinx-copybutton          0.5.2         pypi_0                 pypi       
  sphinx-gallery             0.16.0        pypi_0                 pypi       
  sphinx-prompt              1.8.0         pypi_0                 pypi       
  sphinx-remove-toctrees     1.0.0.post1   pypi_0                 pypi       
  sphinx_design              0.6.0         pypi_0                 pypi       
  sphinxcontrib-sass         0.3.4         pypi_0                 pypi       
  sphinxext-opengraph        0.9.1         pypi_0                 pypi       
  spin                       0.11          pypi_0                 pypi       
  stack_data                 0.6.2         pyhd8ed1ab_0           conda-forge
  sympy                      1.12.1        pypyh2585a3b_103       conda-forge
  tbb                        2021.12.0     h297d8ca_1             conda-forge
  tenacity                   8.2.3         pyhd8ed1ab_0           conda-forge
  tk                         8.6.13        noxft_h4845f30_101     conda-forge
  toml                       0.10.2        pyhd8ed1ab_0           conda-forge
  tomli                      2.0.1         pyhd8ed1ab_0           conda-forge
  tornado                    6.4           py312h98912ed_0        conda-forge
  traitlets                  5.14.3        pyhd8ed1ab_0           conda-forge
  typing_extensions          4.11.0        pyha770c72_0           conda-forge
  tzdata                     2024a         h0c530f3_0             conda-forge
  ukkonen                    1.0.1         py312h8572e83_4        conda-forge
  virtualenv                 20.26.1       pyhd8ed1ab_0           conda-forge
  wcwidth                    0.2.13        pyhd8ed1ab_0           conda-forge
  wheel                      0.43.0        pyhd8ed1ab_1           conda-forge
  xcb-util                   0.4.0         hd590300_1             conda-forge
  xcb-util-image             0.4.0         h8ee46fc_1             conda-forge
  xcb-util-keysyms           0.4.0         h8ee46fc_1             conda-forge
  xcb-util-renderutil        0.3.9         hd590300_1             conda-forge
  xcb-util-wm                0.4.1         h8ee46fc_1             conda-forge
  xgboost                    2.1.3         pypi_0                 pypi       
  xkeyboard-config           2.41          hd590300_0             conda-forge
  xorg-kbproto               1.0.7         h7f98852_1002          conda-forge
  xorg-libice                1.1.1         hd590300_0             conda-forge
  xorg-libsm                 1.2.4         h7391055_0             conda-forge
  xorg-libx11                1.8.9         h8ee46fc_0             conda-forge
  xorg-libxau                1.0.11        hd590300_0             conda-forge
  xorg-libxdmcp              1.1.3         h7f98852_0             conda-forge
  xorg-libxext               1.3.4         h0b41bf4_2             conda-forge
  xorg-libxrender            0.9.11        hd590300_0             conda-forge
  xorg-renderproto           0.11.1        h7f98852_1002          conda-forge
  xorg-xextproto             7.3.0         h0b41bf4_1003          conda-forge
  xorg-xf86vidmodeproto      2.3.1         h7f98852_1002          conda-forge
  xorg-xproto                7.0.31        h7f98852_1007          conda-forge
  xz                         5.2.6         h166bdaf_0             conda-forge
  yaml                       0.2.5         h7f98852_2             conda-forge
  zlib                       1.2.13        hd590300_5             conda-forge
  zstd                       1.5.6         ha6fb4c9_0             conda-forge
```

</details>

```sh
$ python -c "import sklearn; sklearn.show_versions()"
```

<details>

```
System:
    python: 3.12.3 | packaged by conda-forge | (main, Apr 15 2024, 18:38:13) [GCC 12.3.0]
executable: /home/adrin/micromamba/envs/sklearn/bin/python
   machine: Linux-6.12.10-arch1-1-x86_64-with-glibc2.40

Python dependencies:
      sklearn: 1.7.dev0
          pip: 24.0
   setuptools: 69.5.1
        numpy: 2.0.1
        scipy: 1.14.0
       Cython: 3.0.10
       pandas: 2.2.2
   matplotlib: 3.8.4
       joblib: 1.4.2
threadpoolctl: 3.5.0

Built with OpenMP: True

threadpoolctl info:
       user_api: blas
   internal_api: mkl
    num_threads: 8
         prefix: libmkl_rt
       filepath: /home/adrin/micromamba/envs/sklearn/lib/libmkl_rt.so.2
        version: 2022.2-Product
threading_layer: intel

       user_api: openmp
   internal_api: openmp
    num_threads: 16
         prefix: libomp
       filepath: /home/adrin/micromamba/envs/sklearn/lib/libomp.so
        version: None
(sklearn) 

</details>

Labels: Performance, High Priority, module:ensemble