scikit-learn-intelex 2025.4.0__py313-none-win_amd64.whl → 2025.6.0__py313-none-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of scikit-learn-intelex might be problematic. Click here for more details.
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/__main__.py +1 -1
- scikit_learn_intelex-2025.6.0.data/data/Lib/site-packages/daal4py/_daal4py.cp313-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.6.0.data/data/Lib/site-packages/daal4py/mb/__init__.py +83 -0
- scikit_learn_intelex-2025.6.0.data/data/Lib/site-packages/daal4py/mb/gbt_convertors.py +922 -0
- scikit_learn_intelex-2025.6.0.data/data/Lib/site-packages/daal4py/mb/logistic_regression_builders.py +217 -0
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/mb/model_builders.py → scikit_learn_intelex-2025.6.0.data/data/Lib/site-packages/daal4py/mb/tree_based_builders.py +129 -106
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/mpi_transceiver.cp313-win_amd64.pyd +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +6 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/_utils.py +1 -1
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +2 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +6 -38
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +12 -8
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +2 -6
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +3 -7
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +41 -153
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +13 -15
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +7 -10
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +22 -57
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +3 -4
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +8 -3
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +30 -7
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +3 -3
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +6 -16
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +4 -7
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +3 -5
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +4 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/base.py +8 -3
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +82 -5
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/__init__.py +125 -83
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/_config.py +27 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/_device_offload.py +86 -82
- scikit_learn_intelex-2025.6.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp313-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.6.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp313-win_amd64.pyd +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +21 -17
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +44 -39
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/cluster/dbscan.py +35 -42
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/cluster/kmeans.py +83 -74
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/cluster/kmeans_init.py +57 -24
- scikit_learn_intelex-2025.6.0.data/data/Lib/site-packages/onedal/common/_backend.py +233 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/common/hyperparameters.py +4 -4
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/common/tests/test_sycl.py +27 -12
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/covariance/covariance.py +27 -19
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +35 -32
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +6 -10
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +179 -78
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +39 -25
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/decomposition/pca.py +28 -16
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +2 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/ensemble/forest.py +130 -93
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +76 -57
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/linear_model/linear_model.py +63 -37
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +96 -68
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/neighbors/neighbors.py +156 -119
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/primitives/get_tree.py +5 -3
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/primitives/kernel_functions.py +21 -18
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +4 -4
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/svm/svm.py +80 -32
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +10 -9
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +10 -10
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +8 -8
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/svm/tests/test_svc.py +5 -5
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/svm/tests/test_svr.py +10 -10
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +3 -13
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/utils/_array_api.py +14 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/utils/_dpep_helpers.py +16 -1
- scikit_learn_intelex-2025.6.0.data/data/Lib/site-packages/onedal/utils/_sycl_queue_manager.py +161 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/utils/tests/test_validation.py +3 -3
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/utils/validation.py +47 -16
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/__init__.py +3 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/__main__.py +2 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/_config.py +48 -6
- scikit_learn_intelex-2025.6.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +194 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/_utils.py +36 -43
- scikit_learn_intelex-2025.6.0.data/data/Lib/site-packages/sklearnex/base.py +109 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +14 -20
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +31 -40
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +10 -11
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/cluster/k_means.py +20 -19
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +49 -62
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/decomposition/pca.py +9 -20
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +4 -4
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +207 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +111 -366
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +1 -1
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +1 -1
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +18 -6
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +41 -126
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +37 -85
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/linear_model/linear.py +52 -47
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +45 -84
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +17 -20
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +60 -1
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +2 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +8 -6
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +1 -3
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +1 -1
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +1 -3
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/neighbors/_lof.py +7 -54
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +6 -5
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +31 -73
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +30 -70
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +5 -13
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +6 -19
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +45 -62
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +10 -3
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +8 -4
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +13 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +10 -3
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +7 -4
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +13 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +9 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +7 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +25 -8
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +6 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +12 -3
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +12 -5
- {scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/mb → scikit_learn_intelex-2025.6.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors}/__init__.py +2 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +27 -5
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/svm/_common.py +15 -28
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +36 -129
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +10 -22
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +34 -127
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +10 -22
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/tests/test_common.py +51 -11
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/tests/test_config.py +62 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +18 -24
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +4 -4
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/tests/test_patching.py +89 -60
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +7 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/tests/utils/base.py +2 -2
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +8 -22
- {scikit_learn_intelex-2025.4.0.dist-info → scikit_learn_intelex-2025.6.0.dist-info}/METADATA +2 -3
- scikit_learn_intelex-2025.6.0.dist-info/RECORD +257 -0
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/_daal4py.cp313-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/doc/third-party-programs.txt +0 -424
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp313-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp313-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/_base.py +0 -38
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/_policy.py +0 -55
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/_spmd_policy.py +0 -30
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/tests/test_policy.py +0 -76
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/utils/__init__.py +0 -49
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +0 -126
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -19
- scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +0 -25
- scikit_learn_intelex-2025.4.0.dist-info/RECORD +0 -259
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/manifold/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/_models_info.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_patching.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/basic_statistics/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/utils.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/common/_estimator_checks.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/common/_mixin.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/datatypes/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/datatypes/tests/common.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/primitives/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/svm/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/tests/test_common.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/conftest.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_ridge.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/utils/_array_api.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -0
- {scikit_learn_intelex-2025.4.0.data → scikit_learn_intelex-2025.6.0.data}/data/Lib/site-packages/sklearnex/utils/tests/test_validation.py +0 -0
- {scikit_learn_intelex-2025.4.0.dist-info → scikit_learn_intelex-2025.6.0.dist-info}/LICENSE.txt +0 -0
- {scikit_learn_intelex-2025.4.0.dist-info → scikit_learn_intelex-2025.6.0.dist-info}/WHEEL +0 -0
- {scikit_learn_intelex-2025.4.0.dist-info → scikit_learn_intelex-2025.6.0.dist-info}/top_level.txt +0 -0
|
@@ -15,18 +15,52 @@
|
|
|
15
15
|
# ==============================================================================
|
|
16
16
|
|
|
17
17
|
import numpy as np
|
|
18
|
-
from scipy.sparse import issparse
|
|
19
18
|
from sklearn.utils import check_random_state
|
|
20
19
|
|
|
21
|
-
from daal4py.sklearn._utils import daal_check_version
|
|
20
|
+
from daal4py.sklearn._utils import daal_check_version
|
|
21
|
+
from onedal._device_offload import supports_queue
|
|
22
|
+
from onedal.common._backend import bind_default_backend
|
|
23
|
+
from onedal.utils import _sycl_queue_manager as QM
|
|
24
|
+
from sklearnex._config import config_context, get_config
|
|
22
25
|
|
|
23
|
-
from ..common._base import BaseEstimator as onedal_BaseEstimator
|
|
24
26
|
from ..datatypes import from_table, to_table
|
|
25
|
-
from ..utils import _check_array
|
|
27
|
+
from ..utils.validation import _check_array
|
|
26
28
|
|
|
27
29
|
if daal_check_version((2023, "P", 200)):
|
|
28
30
|
|
|
29
|
-
|
|
31
|
+
def force_host_if_csr(func):
|
|
32
|
+
"""
|
|
33
|
+
Decorator to force computation on the host if the input data is in CSR format.
|
|
34
|
+
|
|
35
|
+
CSR (Compressed Sparse Row) format is not supported on GPU. This decorator ensures that
|
|
36
|
+
the computation is performed on the host (CPU) when the input data is in CSR format.
|
|
37
|
+
It is necessary that `self.is_csr` is to the correct value (True or False) before calling.
|
|
38
|
+
It temporarily modifies the configuration to target the CPU and removes the global SYCL queue
|
|
39
|
+
to ensure the computation is executed on the host. The original configuration is restored upon exit.
|
|
40
|
+
|
|
41
|
+
Parameters:
|
|
42
|
+
func (function): The function to be decorated.
|
|
43
|
+
|
|
44
|
+
Returns:
|
|
45
|
+
function: The wrapped function with the modified configuration if the input data is in CSR format.
|
|
46
|
+
"""
|
|
47
|
+
config = get_config()
|
|
48
|
+
# `auto` rather than `cpu` is necessary in order to force host when a SYCL cpu target is unavailable
|
|
49
|
+
config["target_offload"] = "auto"
|
|
50
|
+
|
|
51
|
+
def wrapper(self, *args, **kwargs):
|
|
52
|
+
if self.is_csr:
|
|
53
|
+
with (
|
|
54
|
+
config_context(**config),
|
|
55
|
+
QM.manage_global_queue(None, None),
|
|
56
|
+
):
|
|
57
|
+
return func(self, *args, **kwargs)
|
|
58
|
+
else:
|
|
59
|
+
return func(self, *args, **kwargs)
|
|
60
|
+
|
|
61
|
+
return wrapper
|
|
62
|
+
|
|
63
|
+
class KMeansInit:
|
|
30
64
|
"""
|
|
31
65
|
KMeansInit oneDAL implementation.
|
|
32
66
|
"""
|
|
@@ -37,17 +71,22 @@ if daal_check_version((2023, "P", 200)):
|
|
|
37
71
|
seed=777,
|
|
38
72
|
local_trials_count=None,
|
|
39
73
|
algorithm="plus_plus_dense",
|
|
74
|
+
is_csr=False,
|
|
40
75
|
):
|
|
41
76
|
self.cluster_count = cluster_count
|
|
42
77
|
self.seed = seed
|
|
43
78
|
self.local_trials_count = local_trials_count
|
|
44
79
|
self.algorithm = algorithm
|
|
80
|
+
self.is_csr = is_csr
|
|
45
81
|
|
|
46
82
|
if local_trials_count is None:
|
|
47
83
|
self.local_trials_count = 2 + int(np.log(cluster_count))
|
|
48
84
|
else:
|
|
49
85
|
self.local_trials_count = local_trials_count
|
|
50
86
|
|
|
87
|
+
@bind_default_backend("kmeans_init.init", lookup_name="compute")
|
|
88
|
+
def backend_compute(self, params, X_table): ...
|
|
89
|
+
|
|
51
90
|
def _get_onedal_params(self, dtype=np.float32):
|
|
52
91
|
return {
|
|
53
92
|
"fptype": dtype,
|
|
@@ -68,31 +107,25 @@ if daal_check_version((2023, "P", 200)):
|
|
|
68
107
|
params = self._get_onedal_params(X.dtype)
|
|
69
108
|
return (params, X, X.dtype)
|
|
70
109
|
|
|
71
|
-
def _compute_raw(self, X_table,
|
|
110
|
+
def _compute_raw(self, X_table, dtype=np.float32):
|
|
72
111
|
params = self._get_onedal_params(dtype)
|
|
73
|
-
|
|
74
|
-
result = module.compute(policy, params, X_table)
|
|
75
|
-
|
|
112
|
+
result = self.backend_compute(params, X_table)
|
|
76
113
|
return result.centroids
|
|
77
114
|
|
|
78
|
-
def _compute(self, X
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
if issparse(X):
|
|
82
|
-
policy = self._get_policy(None, None)
|
|
83
|
-
_, X_table, dtype = self._get_params_and_input(X, queue)
|
|
84
|
-
|
|
85
|
-
centroids = self._compute_raw(X_table, module, policy, dtype)
|
|
86
|
-
|
|
115
|
+
def _compute(self, X):
|
|
116
|
+
_, X_table, dtype = self._get_params_and_input(X, queue=QM.get_global_queue())
|
|
117
|
+
centroids = self._compute_raw(X_table, dtype)
|
|
87
118
|
return from_table(centroids)
|
|
88
119
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
)
|
|
120
|
+
@force_host_if_csr
|
|
121
|
+
def compute_raw(self, X_table, dtype=np.float32, queue=None):
|
|
122
|
+
# no @supports_queue decorator here, because we only accept X_table that has no queue information
|
|
123
|
+
return self._compute_raw(X_table, dtype)
|
|
93
124
|
|
|
125
|
+
@force_host_if_csr
|
|
126
|
+
@supports_queue
|
|
94
127
|
def compute(self, X, queue=None):
|
|
95
|
-
return self._compute(X
|
|
128
|
+
return self._compute(X)
|
|
96
129
|
|
|
97
130
|
def kmeans_plusplus(
|
|
98
131
|
X,
|
|
@@ -107,6 +140,6 @@ if daal_check_version((2023, "P", 200)):
|
|
|
107
140
|
return (
|
|
108
141
|
KMeansInit(
|
|
109
142
|
n_clusters, seed=random_seed, local_trials_count=n_local_trials
|
|
110
|
-
).compute(X, queue),
|
|
143
|
+
).compute(X, queue=queue),
|
|
111
144
|
np.full(n_clusters, -1),
|
|
112
145
|
)
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# Copyright 2024 Intel Corporation
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
# ==============================================================================
|
|
16
|
+
|
|
17
|
+
import logging
|
|
18
|
+
from typing import Any, Callable, Literal, Optional
|
|
19
|
+
|
|
20
|
+
from onedal import Backend, _default_backend, _spmd_backend
|
|
21
|
+
from onedal.utils import _sycl_queue_manager as QM
|
|
22
|
+
|
|
23
|
+
logger = logging.getLogger("sklearnex")
|
|
24
|
+
|
|
25
|
+
# define types for backend functions: default, dpc, spmd
|
|
26
|
+
BackendType = Literal["none", "host", "dpc", "spmd"]
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class BackendManager:
|
|
30
|
+
def __init__(self, backend_module):
|
|
31
|
+
self.backend = backend_module
|
|
32
|
+
|
|
33
|
+
def get_backend_type(self) -> BackendType:
|
|
34
|
+
if self.backend is None:
|
|
35
|
+
return "none"
|
|
36
|
+
if self.backend.is_spmd:
|
|
37
|
+
return "spmd"
|
|
38
|
+
if self.backend.is_dpc:
|
|
39
|
+
return "dpc"
|
|
40
|
+
return "host"
|
|
41
|
+
|
|
42
|
+
def get_backend_component(self, module_name: str, component_name: str):
|
|
43
|
+
"""Get a component of the backend module.
|
|
44
|
+
|
|
45
|
+
Args:
|
|
46
|
+
module(str): The module to get the component from.
|
|
47
|
+
component: The component to get from the module.
|
|
48
|
+
|
|
49
|
+
Returns:
|
|
50
|
+
The component of the module.
|
|
51
|
+
"""
|
|
52
|
+
submodules = module_name.split(".")
|
|
53
|
+
module = getattr(self.backend, submodules[0])
|
|
54
|
+
for submodule in submodules[1:]:
|
|
55
|
+
module = getattr(module, submodule)
|
|
56
|
+
|
|
57
|
+
# component can be provided like submodule.method, there can be arbitrary number of submodules
|
|
58
|
+
# and methods
|
|
59
|
+
result = module
|
|
60
|
+
for part in component_name.split("."):
|
|
61
|
+
result = getattr(result, part)
|
|
62
|
+
|
|
63
|
+
return result
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
default_manager = BackendManager(_default_backend)
|
|
67
|
+
spmd_manager = BackendManager(_spmd_backend)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class BackendFunction:
|
|
71
|
+
"""Wrapper around backend function to allow setting auxiliary information"""
|
|
72
|
+
|
|
73
|
+
def __init__(
|
|
74
|
+
self,
|
|
75
|
+
method: Callable[..., Any],
|
|
76
|
+
backend: Backend,
|
|
77
|
+
name: str,
|
|
78
|
+
no_policy: bool,
|
|
79
|
+
):
|
|
80
|
+
self.method = method
|
|
81
|
+
self.name = name
|
|
82
|
+
self.backend = backend
|
|
83
|
+
self.no_policy = no_policy
|
|
84
|
+
|
|
85
|
+
def __call__(self, *args: Any, **kwargs: Any) -> Any:
|
|
86
|
+
"""Dispatch to backend function with the appropriate policy which is determined from the global queue"""
|
|
87
|
+
if not args and not kwargs:
|
|
88
|
+
# immediate dispatching without any arguments, in particular no policy
|
|
89
|
+
return self.method()
|
|
90
|
+
|
|
91
|
+
if self.no_policy:
|
|
92
|
+
return self.method(*args, **kwargs)
|
|
93
|
+
|
|
94
|
+
# use globally configured queue (from `target_offload` configuration or provided data)
|
|
95
|
+
queue = QM.get_global_queue()
|
|
96
|
+
|
|
97
|
+
if queue is not None and not (self.backend.is_dpc or self.backend.is_spmd):
|
|
98
|
+
raise RuntimeError("Operations using queues require the DPC/SPMD backend")
|
|
99
|
+
|
|
100
|
+
if self.backend.is_spmd and queue is None:
|
|
101
|
+
raise RuntimeError("Executing functions from SPMD backend requires a queue")
|
|
102
|
+
|
|
103
|
+
# craft the correct policy including the device queue
|
|
104
|
+
if queue is None:
|
|
105
|
+
policy = self.backend.host_policy()
|
|
106
|
+
elif self.backend.is_spmd:
|
|
107
|
+
policy = self.backend.spmd_data_parallel_policy(queue)
|
|
108
|
+
elif self.backend.is_dpc:
|
|
109
|
+
policy = self.backend.data_parallel_policy(queue)
|
|
110
|
+
else:
|
|
111
|
+
policy = self.backend.host_policy()
|
|
112
|
+
|
|
113
|
+
logger.debug(
|
|
114
|
+
f"Dispatching function '{self.name}' with policy {policy} to {self.backend}"
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
# dispatch to backend function
|
|
118
|
+
return self.method(policy, *args, **kwargs)
|
|
119
|
+
|
|
120
|
+
def __repr__(self) -> str:
|
|
121
|
+
return f"BackendFunction({self.backend}.{self.name})"
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
def __decorator(
|
|
125
|
+
method: Callable[..., Any],
|
|
126
|
+
backend_manager: BackendManager,
|
|
127
|
+
module_name: str,
|
|
128
|
+
lookup_name: Optional[str],
|
|
129
|
+
no_policy: bool,
|
|
130
|
+
) -> Callable[..., Any]:
|
|
131
|
+
"""Decorator to bind a method to the specified backend"""
|
|
132
|
+
if lookup_name is None:
|
|
133
|
+
lookup_name = method.__name__
|
|
134
|
+
|
|
135
|
+
if backend_manager.get_backend_type() == "none":
|
|
136
|
+
raise RuntimeError("Internal __decorator() should not be called with no backend")
|
|
137
|
+
|
|
138
|
+
backend_method = backend_manager.get_backend_component(module_name, lookup_name)
|
|
139
|
+
wrapped_method = BackendFunction(
|
|
140
|
+
backend_method,
|
|
141
|
+
backend_manager.backend,
|
|
142
|
+
name=f"{module_name}.{method.__name__}",
|
|
143
|
+
no_policy=no_policy,
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
backend_type = backend_manager.get_backend_type()
|
|
147
|
+
logger.debug(
|
|
148
|
+
f"Assigned method '<{backend_type}_backend>.{module_name}.{lookup_name}' to '{method.__qualname__}'"
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
return wrapped_method
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
def bind_default_backend(
|
|
155
|
+
module_name: str, lookup_name: Optional[str] = None, no_policy=False
|
|
156
|
+
):
|
|
157
|
+
"""
|
|
158
|
+
Decorator to bind a method from the default backend to a class.
|
|
159
|
+
|
|
160
|
+
This decorator binds a method implementation from the default backend (host/dpc).
|
|
161
|
+
If the default backend is unavailable, the method is returned without modification.
|
|
162
|
+
|
|
163
|
+
Parameters:
|
|
164
|
+
----------
|
|
165
|
+
module_name : str
|
|
166
|
+
The name of the module where the target function is located (e.g. `covariance`).
|
|
167
|
+
lookup_name : Optional[str], optional
|
|
168
|
+
The name of the method to look up in the backend module. If not provided,
|
|
169
|
+
the name of the decorated method is used.
|
|
170
|
+
no_policy : bool, optional
|
|
171
|
+
If True, the method will be decorated without a policy. Default is False.
|
|
172
|
+
|
|
173
|
+
Returns:
|
|
174
|
+
-------
|
|
175
|
+
Callable[..., Any]
|
|
176
|
+
The decorated method bound to the implementation in default backend, or the original
|
|
177
|
+
method if the default backend is unavailable.
|
|
178
|
+
"""
|
|
179
|
+
|
|
180
|
+
def decorator(method: Callable[..., Any]):
|
|
181
|
+
# grab the lookup_name from outer scope
|
|
182
|
+
nonlocal lookup_name
|
|
183
|
+
|
|
184
|
+
if _default_backend is None:
|
|
185
|
+
logger.debug(
|
|
186
|
+
f"Default backend unavailable, skipping decoration for '{method.__name__}'"
|
|
187
|
+
)
|
|
188
|
+
return method
|
|
189
|
+
|
|
190
|
+
return __decorator(method, default_manager, module_name, lookup_name, no_policy)
|
|
191
|
+
|
|
192
|
+
return decorator
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
def bind_spmd_backend(
|
|
196
|
+
module_name: str, lookup_name: Optional[str] = None, no_policy=False
|
|
197
|
+
):
|
|
198
|
+
"""
|
|
199
|
+
Decorator to bind a method from the SPMD backend to a class.
|
|
200
|
+
|
|
201
|
+
This decorator binds a method implementation from the SPMD backend.
|
|
202
|
+
If the SPMD backend is unavailable, the method is returned without modification.
|
|
203
|
+
|
|
204
|
+
Parameters:
|
|
205
|
+
----------
|
|
206
|
+
module_name : str
|
|
207
|
+
The name of the module where the target function is located (e.g. `covariance`).
|
|
208
|
+
lookup_name : Optional[str], optional
|
|
209
|
+
The name of the method to look up in the backend module. If not provided,
|
|
210
|
+
the name of the decorated method is used.
|
|
211
|
+
no_policy : bool, optional
|
|
212
|
+
If True, the method will be decorated without a policy. Default is False.
|
|
213
|
+
|
|
214
|
+
Returns:
|
|
215
|
+
-------
|
|
216
|
+
Callable[..., Any]
|
|
217
|
+
The decorated method bound to the implementation in SPMD backend, or the original
|
|
218
|
+
method if the SPMD backend is unavailable.
|
|
219
|
+
"""
|
|
220
|
+
|
|
221
|
+
def decorator(method: Callable[..., Any]):
|
|
222
|
+
# grab the lookup_name from outer scope
|
|
223
|
+
nonlocal lookup_name
|
|
224
|
+
|
|
225
|
+
if _spmd_backend is None:
|
|
226
|
+
logger.debug(
|
|
227
|
+
f"SPMD backend unavailable, skipping decoration for '{method.__name__}'"
|
|
228
|
+
)
|
|
229
|
+
return method
|
|
230
|
+
|
|
231
|
+
return __decorator(method, spmd_manager, module_name, lookup_name, no_policy)
|
|
232
|
+
|
|
233
|
+
return decorator
|
|
@@ -19,7 +19,7 @@ from typing import Any, Dict, Tuple
|
|
|
19
19
|
from warnings import warn
|
|
20
20
|
|
|
21
21
|
from daal4py.sklearn._utils import daal_check_version
|
|
22
|
-
from onedal import
|
|
22
|
+
from onedal import _default_backend as backend
|
|
23
23
|
|
|
24
24
|
if not daal_check_version((2024, "P", 0)):
|
|
25
25
|
warn("Hyperparameters are supported in oneDAL starting from 2024.0.0 version.")
|
|
@@ -98,11 +98,11 @@ else:
|
|
|
98
98
|
(
|
|
99
99
|
"linear_regression",
|
|
100
100
|
"train",
|
|
101
|
-
):
|
|
102
|
-
("covariance", "compute"):
|
|
101
|
+
): backend.linear_model.regression.train_hyperparameters(),
|
|
102
|
+
("covariance", "compute"): backend.covariance.compute_hyperparameters(),
|
|
103
103
|
}
|
|
104
104
|
if daal_check_version((2024, "P", 300)):
|
|
105
|
-
df_infer_hp =
|
|
105
|
+
df_infer_hp = backend.decision_forest.infer_hyperparameters
|
|
106
106
|
hyperparameters_backend[("decision_forest", "infer")] = df_infer_hp()
|
|
107
107
|
hyperparameters_map = {}
|
|
108
108
|
|
|
@@ -14,16 +14,15 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
# ==============================================================================
|
|
16
16
|
|
|
17
|
-
import numpy as np
|
|
18
17
|
import pytest
|
|
19
18
|
|
|
20
|
-
from onedal import
|
|
19
|
+
from onedal import _default_backend as backend
|
|
21
20
|
from onedal.tests.utils._device_selection import get_queues
|
|
22
21
|
from onedal.utils._dpep_helpers import dpctl_available
|
|
23
22
|
|
|
24
23
|
|
|
25
24
|
@pytest.mark.skipif(
|
|
26
|
-
not
|
|
25
|
+
not backend.is_dpc or not dpctl_available, reason="requires dpc backend and dpctl"
|
|
27
26
|
)
|
|
28
27
|
@pytest.mark.parametrize("device_type", ["cpu", "gpu"])
|
|
29
28
|
@pytest.mark.parametrize("device_number", [None, 0, 1, 2, 3])
|
|
@@ -32,7 +31,7 @@ def test_sycl_queue_string_creation(device_type, device_number):
|
|
|
32
31
|
from dpctl import SyclQueue
|
|
33
32
|
from dpctl._sycl_queue import SyclQueueCreationError
|
|
34
33
|
|
|
35
|
-
onedal_SyclQueue =
|
|
34
|
+
onedal_SyclQueue = backend.SyclQueue
|
|
36
35
|
|
|
37
36
|
device = (
|
|
38
37
|
":".join([device_type, str(device_number)])
|
|
@@ -63,14 +62,14 @@ def test_sycl_queue_string_creation(device_type, device_number):
|
|
|
63
62
|
|
|
64
63
|
|
|
65
64
|
@pytest.mark.skipif(
|
|
66
|
-
not
|
|
65
|
+
not backend.is_dpc or not dpctl_available, reason="requires dpc backend and dpctl"
|
|
67
66
|
)
|
|
68
67
|
@pytest.mark.parametrize("queue", get_queues())
|
|
69
68
|
def test_sycl_queue_conversion(queue):
|
|
70
69
|
if queue is None:
|
|
71
70
|
pytest.skip("Not a dpctl queue")
|
|
72
71
|
SyclQueue = queue.__class__
|
|
73
|
-
onedal_SyclQueue =
|
|
72
|
+
onedal_SyclQueue = backend.SyclQueue
|
|
74
73
|
|
|
75
74
|
q = onedal_SyclQueue(queue)
|
|
76
75
|
|
|
@@ -83,7 +82,7 @@ def test_sycl_queue_conversion(queue):
|
|
|
83
82
|
|
|
84
83
|
|
|
85
84
|
@pytest.mark.skipif(
|
|
86
|
-
not
|
|
85
|
+
not backend.is_dpc or not dpctl_available, reason="requires dpc backend and dpctl"
|
|
87
86
|
)
|
|
88
87
|
@pytest.mark.parametrize("queue", get_queues())
|
|
89
88
|
def test_sycl_device_attributes(queue):
|
|
@@ -91,7 +90,7 @@ def test_sycl_device_attributes(queue):
|
|
|
91
90
|
|
|
92
91
|
if queue is None:
|
|
93
92
|
pytest.skip("Not a dpctl queue")
|
|
94
|
-
onedal_SyclQueue =
|
|
93
|
+
onedal_SyclQueue = backend.SyclQueue
|
|
95
94
|
|
|
96
95
|
onedal_queue = onedal_SyclQueue(queue)
|
|
97
96
|
|
|
@@ -107,17 +106,17 @@ def test_sycl_device_attributes(queue):
|
|
|
107
106
|
assert onedal_queue.sycl_device.filter_string in queue.sycl_device.filter_string
|
|
108
107
|
|
|
109
108
|
|
|
110
|
-
@pytest.mark.skipif(not
|
|
109
|
+
@pytest.mark.skipif(not backend.is_dpc, reason="requires dpc backend")
|
|
111
110
|
def test_backend_queue():
|
|
112
111
|
try:
|
|
113
|
-
q =
|
|
112
|
+
q = backend.SyclQueue("cpu")
|
|
114
113
|
except RuntimeError:
|
|
115
114
|
pytest.skip("OpenCL CPU runtime not installed")
|
|
116
115
|
|
|
117
116
|
# verify copying via a py capsule object is functional
|
|
118
|
-
q2 =
|
|
117
|
+
q2 = backend.SyclQueue(q._get_capsule())
|
|
119
118
|
# verify copying via the _get_capsule attribute
|
|
120
|
-
q3 =
|
|
119
|
+
q3 = backend.SyclQueue(q)
|
|
121
120
|
|
|
122
121
|
q_array = [q, q2, q3]
|
|
123
122
|
|
|
@@ -126,3 +125,19 @@ def test_backend_queue():
|
|
|
126
125
|
assert all([queue.sycl_device.is_cpu for queue in q_array])
|
|
127
126
|
assert all([not queue.sycl_device.is_gpu for queue in q_array])
|
|
128
127
|
assert all(["cpu" in queue.sycl_device.filter_string for queue in q_array])
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
@pytest.mark.skipif(
|
|
131
|
+
not backend.is_dpc or not dpctl_available, reason="requires dpc backend and dpctl"
|
|
132
|
+
)
|
|
133
|
+
def test_backend_device_id():
|
|
134
|
+
"""verify dpctl device id matches our internal device id"""
|
|
135
|
+
import dpctl
|
|
136
|
+
|
|
137
|
+
for i in range(dpctl.get_num_devices()):
|
|
138
|
+
device = dpctl.SyclDevice(str(i))
|
|
139
|
+
if device.is_gpu or device.is_cpu:
|
|
140
|
+
backend_device = backend.SyclDevice(i)
|
|
141
|
+
assert (
|
|
142
|
+
i == backend_device.get_device_id()
|
|
143
|
+
), f"backend id does not match device_id: {i}"
|
|
@@ -17,20 +17,27 @@ from abc import ABCMeta
|
|
|
17
17
|
|
|
18
18
|
import numpy as np
|
|
19
19
|
|
|
20
|
-
from daal4py.sklearn._utils import daal_check_version
|
|
21
|
-
from onedal.
|
|
20
|
+
from daal4py.sklearn._utils import daal_check_version
|
|
21
|
+
from onedal._device_offload import supports_queue
|
|
22
|
+
from onedal.common._backend import bind_default_backend
|
|
23
|
+
from onedal.utils.validation import _check_array
|
|
22
24
|
|
|
23
|
-
from ..
|
|
25
|
+
from .._config import _get_config
|
|
24
26
|
from ..common.hyperparameters import get_hyperparameters
|
|
25
27
|
from ..datatypes import from_table, to_table
|
|
28
|
+
from ..utils._array_api import _get_sycl_namespace
|
|
29
|
+
from ..utils.validation import _check_array
|
|
26
30
|
|
|
27
31
|
|
|
28
|
-
class BaseEmpiricalCovariance(
|
|
32
|
+
class BaseEmpiricalCovariance(metaclass=ABCMeta):
|
|
29
33
|
def __init__(self, method="dense", bias=False, assume_centered=False):
|
|
30
34
|
self.method = method
|
|
31
35
|
self.bias = bias
|
|
32
36
|
self.assume_centered = assume_centered
|
|
33
37
|
|
|
38
|
+
@bind_default_backend("covariance")
|
|
39
|
+
def compute(self, *args, **kwargs): ...
|
|
40
|
+
|
|
34
41
|
def _get_onedal_params(self, dtype=np.float32):
|
|
35
42
|
params = {
|
|
36
43
|
"fptype": dtype,
|
|
@@ -73,6 +80,7 @@ class EmpiricalCovariance(BaseEmpiricalCovariance):
|
|
|
73
80
|
Estimated covariance matrix
|
|
74
81
|
"""
|
|
75
82
|
|
|
83
|
+
@supports_queue
|
|
76
84
|
def fit(self, X, y=None, queue=None):
|
|
77
85
|
"""Fit the sample covariance matrix of X.
|
|
78
86
|
|
|
@@ -93,30 +101,30 @@ class EmpiricalCovariance(BaseEmpiricalCovariance):
|
|
|
93
101
|
self : object
|
|
94
102
|
Returns the instance itself.
|
|
95
103
|
"""
|
|
96
|
-
|
|
97
|
-
|
|
104
|
+
use_raw_input = _get_config()["use_raw_input"] is True
|
|
105
|
+
sua_iface, _, _ = _get_sycl_namespace(X)
|
|
106
|
+
if use_raw_input and sua_iface:
|
|
107
|
+
queue = X.sycl_queue
|
|
108
|
+
|
|
109
|
+
if not use_raw_input:
|
|
110
|
+
X = _check_array(X, dtype=[np.float64, np.float32])
|
|
98
111
|
X = to_table(X, queue=queue)
|
|
112
|
+
|
|
99
113
|
params = self._get_onedal_params(X.dtype)
|
|
100
114
|
hparams = get_hyperparameters("covariance", "compute")
|
|
101
115
|
if hparams is not None and not hparams.is_default:
|
|
102
|
-
result = self.
|
|
103
|
-
"covariance",
|
|
104
|
-
None,
|
|
105
|
-
"compute",
|
|
106
|
-
policy,
|
|
107
|
-
params,
|
|
108
|
-
hparams.backend,
|
|
109
|
-
X,
|
|
110
|
-
)
|
|
116
|
+
result = self.compute(params, hparams.backend, X)
|
|
111
117
|
else:
|
|
112
|
-
result = self.
|
|
118
|
+
result = self.compute(params, X)
|
|
113
119
|
if daal_check_version((2024, "P", 1)) or (not self.bias):
|
|
114
|
-
self.covariance_ = from_table(result.cov_matrix)
|
|
120
|
+
self.covariance_ = from_table(result.cov_matrix, sycl_queue=queue)
|
|
115
121
|
else:
|
|
116
122
|
self.covariance_ = (
|
|
117
|
-
from_table(result.cov_matrix
|
|
123
|
+
from_table(result.cov_matrix, sycl_queue=queue)
|
|
124
|
+
* (X.shape[0] - 1)
|
|
125
|
+
/ X.shape[0]
|
|
118
126
|
)
|
|
119
127
|
|
|
120
|
-
self.location_ = from_table(result.means).ravel()
|
|
128
|
+
self.location_ = from_table(result.means, sycl_queue=queue).ravel()
|
|
121
129
|
|
|
122
130
|
return self
|