scikit-learn-intelex 2025.10.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.
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/__init__.py +73 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/__main__.py +58 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/_daal4py.cp313-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/__init__.py +94 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/gbt_convertors.py +1199 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/logistic_regression_builders.py +211 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/tree_based_builders.py +425 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mpi_transceiver.cp313-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/__init__.py +40 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +252 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/_utils.py +245 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +165 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +565 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +109 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +528 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +192 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +333 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +27 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +1285 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +206 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/__init__.py +29 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +826 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +269 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +290 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +17 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +17 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +195 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +561 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +17 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_enet.py +157 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +198 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +69 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +432 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +259 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +210 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +309 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +56 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +232 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/_models_info.py +164 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +71 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_patching.py +90 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +117 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +21 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +493 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +136 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +72 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +55 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +113 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +736 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/__init__.py +21 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/base.py +80 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +51 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +772 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/__init__.py +151 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_config.py +80 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_device_offload.py +199 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp313-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp313-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +151 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +165 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +241 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +279 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/utils.py +50 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/__init__.py +27 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/dbscan.py +80 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/kmeans.py +582 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/kmeans_init.py +145 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +125 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +88 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +93 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_backend.py +258 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_estimator_checks.py +47 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_mixin.py +62 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/hyperparameters.py +148 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/tests/test_sycl.py +148 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/covariance.py +121 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +151 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +50 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +190 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/__init__.py +29 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +158 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_dlpack.py +64 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_sycl_usm.py +63 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/tests/common.py +131 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +686 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +218 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/pca.py +124 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +291 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/dummy/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/dummy/dummy.py +137 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/__init__.py +29 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/forest.py +781 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +97 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/__init__.py +27 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +201 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/linear_model.py +230 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +293 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +213 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +171 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +252 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +95 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +95 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/neighbors/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/neighbors/neighbors.py +690 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +49 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/__init__.py +27 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/get_tree.py +27 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/kernel_functions.py +202 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +159 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/svm.py +592 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +352 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +204 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +210 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_svc.py +168 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_svr.py +243 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/test_common.py +71 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +179 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +94 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_array_api.py +98 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_sycl_queue_manager.py +213 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_third_party.py +220 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/tests/test_validation.py +142 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/validation.py +503 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/__init__.py +69 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/__main__.py +58 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_config.py +163 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +205 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_utils.py +219 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/base.py +109 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +241 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +338 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +405 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +455 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/dbscan.py +199 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +399 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +38 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +157 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/conftest.py +82 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/covariance/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +440 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +307 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/decomposition/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +558 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +164 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dispatcher.py +572 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +629 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/_dummy.py +615 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/tests/test_dummy.py +62 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/ensemble/__init__.py +29 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/ensemble/_forest.py +1799 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +196 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/glob/__main__.py +72 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/glob/dispatcher.py +101 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/__init__.py +32 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +44 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +427 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +407 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +363 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +466 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/ridge.py +407 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +267 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +214 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +167 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +565 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_ridge.py +256 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/manifold/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/manifold/t_sne.py +28 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +256 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/__init__.py +23 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/pairwise.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/ranking.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +39 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/model_selection/__init__.py +21 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/model_selection/split.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +34 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/__init__.py +27 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/_lof.py +189 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/common.py +313 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +189 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +167 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +170 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +82 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/__init__.py +17 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +261 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +112 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +406 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +390 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/__init__.py +25 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +24 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +30 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +117 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +314 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +30 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +26 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +21 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +108 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +180 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +24 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +29 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +120 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +200 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +23 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +23 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +276 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +146 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +299 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +299 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +21 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +28 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +24 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +21 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +345 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +162 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +169 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +23 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +433 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/__init__.py +29 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +403 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/nusvc.py +278 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/nusvr.py +158 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/svc.py +306 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/svr.py +155 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +124 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_common.py +607 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py +256 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py +111 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +335 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +269 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +111 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_parallel.py +48 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_patching.py +418 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +335 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +48 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/base.py +420 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +198 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/_array_api.py +217 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/class_weight.py +100 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/parallel.py +97 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_class_weight.py +69 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_validation.py +238 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/validation.py +212 -0
- scikit_learn_intelex-2025.10.0.dist-info/LICENSE.txt +202 -0
- scikit_learn_intelex-2025.10.0.dist-info/METADATA +182 -0
- scikit_learn_intelex-2025.10.0.dist-info/RECORD +267 -0
- scikit_learn_intelex-2025.10.0.dist-info/WHEEL +5 -0
- scikit_learn_intelex-2025.10.0.dist-info/top_level.txt +1 -0
scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
# ===============================================================================
|
|
2
|
+
# Copyright 2023 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
|
+
import os
|
|
17
|
+
|
|
18
|
+
import pytest
|
|
19
|
+
import scipy.sparse as sp
|
|
20
|
+
|
|
21
|
+
from sklearnex import get_config
|
|
22
|
+
|
|
23
|
+
from ...utils._third_party import dpctl_available
|
|
24
|
+
|
|
25
|
+
if dpctl_available:
|
|
26
|
+
import dpctl.tensor as dpt
|
|
27
|
+
|
|
28
|
+
try:
|
|
29
|
+
import dpnp
|
|
30
|
+
|
|
31
|
+
dpnp_available = True
|
|
32
|
+
except ImportError:
|
|
33
|
+
dpnp_available = False
|
|
34
|
+
|
|
35
|
+
try:
|
|
36
|
+
# This should be lazy imported in the
|
|
37
|
+
# future along with other popular
|
|
38
|
+
# array_api libraries when testing
|
|
39
|
+
# GPU-no-copy.
|
|
40
|
+
import array_api_strict
|
|
41
|
+
|
|
42
|
+
array_api_enabled = lambda: get_config()["array_api_dispatch"]
|
|
43
|
+
array_api_enabled()
|
|
44
|
+
array_api_modules = {"array_api": array_api_strict}
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
except (ImportError, KeyError):
|
|
48
|
+
array_api_enabled = lambda: False
|
|
49
|
+
array_api_modules = {}
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
import numpy as np
|
|
53
|
+
import pandas as pd
|
|
54
|
+
|
|
55
|
+
from onedal.tests.utils._device_selection import get_queues
|
|
56
|
+
|
|
57
|
+
test_frameworks = os.environ.get(
|
|
58
|
+
"ONEDAL_PYTEST_FRAMEWORKS", "numpy,pandas,dpnp,dpctl,array_api"
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def get_dataframes_and_queues(dataframe_filter_=None, device_filter_="cpu,gpu"):
|
|
63
|
+
"""Get supported dataframes for testing.
|
|
64
|
+
|
|
65
|
+
This is meant to be used for testing purposes only.
|
|
66
|
+
It is to be used only for pytest test collection.
|
|
67
|
+
|
|
68
|
+
Parameters
|
|
69
|
+
----------
|
|
70
|
+
dataframe_filter_ : str, default=None
|
|
71
|
+
Configure output pytest.params for the certain dataframe formats.
|
|
72
|
+
When it evaluates False, it will default to value of ``test_frameworks``.
|
|
73
|
+
device_filter_ : str, default="cpu,gpu"
|
|
74
|
+
Configure output pytest.params with certain sycl queue for the dataframe,
|
|
75
|
+
where it is applicable.
|
|
76
|
+
|
|
77
|
+
Returns
|
|
78
|
+
-------
|
|
79
|
+
list[pytest.param]
|
|
80
|
+
The list of pytest params, included dataframe name (str),
|
|
81
|
+
sycl queue, if applicable for the test case, and test
|
|
82
|
+
case id (str).
|
|
83
|
+
|
|
84
|
+
Notes
|
|
85
|
+
-----
|
|
86
|
+
Do not use filters for the test cases disabling. Use `pytest.skip`
|
|
87
|
+
or `pytest.xfail` instead.
|
|
88
|
+
|
|
89
|
+
See Also
|
|
90
|
+
--------
|
|
91
|
+
_convert_to_dataframe : Converted input object to certain dataframe format.
|
|
92
|
+
"""
|
|
93
|
+
dataframes_and_queues = []
|
|
94
|
+
|
|
95
|
+
# filter dataframe_filter_ based on available test frameworks
|
|
96
|
+
if dataframe_filter_:
|
|
97
|
+
dataframe_filter_ = ",".join(
|
|
98
|
+
[i for i in dataframe_filter_.split(",") if i in test_frameworks]
|
|
99
|
+
)
|
|
100
|
+
else:
|
|
101
|
+
dataframe_filter_ = test_frameworks
|
|
102
|
+
|
|
103
|
+
if "numpy" in dataframe_filter_:
|
|
104
|
+
dataframes_and_queues.append(pytest.param("numpy", None, id="numpy"))
|
|
105
|
+
if "pandas" in dataframe_filter_:
|
|
106
|
+
dataframes_and_queues.append(pytest.param("pandas", None, id="pandas"))
|
|
107
|
+
|
|
108
|
+
def get_df_and_q(dataframe: str):
|
|
109
|
+
df_and_q = []
|
|
110
|
+
for queue in get_queues(device_filter_):
|
|
111
|
+
if queue:
|
|
112
|
+
id = "{}-{}".format(dataframe, queue.id)
|
|
113
|
+
df_and_q.append(pytest.param(dataframe, queue.values[0], id=id))
|
|
114
|
+
return df_and_q
|
|
115
|
+
|
|
116
|
+
if dpctl_available and "dpctl" in dataframe_filter_:
|
|
117
|
+
dataframes_and_queues.extend(get_df_and_q("dpctl"))
|
|
118
|
+
if dpnp_available and "dpnp" in dataframe_filter_:
|
|
119
|
+
dataframes_and_queues.extend(get_df_and_q("dpnp"))
|
|
120
|
+
if (
|
|
121
|
+
"array_api" in dataframe_filter_
|
|
122
|
+
and "array_api" in array_api_modules
|
|
123
|
+
or array_api_enabled()
|
|
124
|
+
):
|
|
125
|
+
dataframes_and_queues.append(pytest.param("array_api", None, id="array_api"))
|
|
126
|
+
|
|
127
|
+
return dataframes_and_queues
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def _as_numpy(obj, *args, **kwargs):
|
|
131
|
+
"""Converted input object to numpy.ndarray format."""
|
|
132
|
+
if dpnp_available and isinstance(obj, dpnp.ndarray):
|
|
133
|
+
return obj.asnumpy(*args, **kwargs)
|
|
134
|
+
if dpctl_available and isinstance(obj, dpt.usm_ndarray):
|
|
135
|
+
return dpt.to_numpy(obj, *args, **kwargs)
|
|
136
|
+
if isinstance(obj, pd.DataFrame) or isinstance(obj, pd.Series):
|
|
137
|
+
return obj.to_numpy(*args, **kwargs)
|
|
138
|
+
if sp.issparse(obj):
|
|
139
|
+
return obj.toarray(*args, **kwargs)
|
|
140
|
+
return np.asarray(obj, *args, **kwargs)
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def _convert_to_dataframe(obj, sycl_queue=None, target_df=None, *args, **kwargs):
|
|
144
|
+
"""Converted input object to certain dataframe format."""
|
|
145
|
+
if target_df is None:
|
|
146
|
+
return obj
|
|
147
|
+
elif target_df == "numpy":
|
|
148
|
+
# Numpy ndarray.
|
|
149
|
+
# `sycl_queue` arg is ignored.
|
|
150
|
+
return np.asarray(obj, *args, **kwargs)
|
|
151
|
+
# Pandas Dataframe
|
|
152
|
+
elif target_df == "pandas":
|
|
153
|
+
if (
|
|
154
|
+
"dtype" in kwargs
|
|
155
|
+
and hasattr(obj, "astype")
|
|
156
|
+
and np.issubdtype(kwargs["dtype"], np.integer)
|
|
157
|
+
):
|
|
158
|
+
# Pandas float to int not allowed
|
|
159
|
+
obj = obj.astype(kwargs["dtype"])
|
|
160
|
+
if hasattr(obj, "ndim") and obj.ndim == 1:
|
|
161
|
+
return pd.Series(obj, *args, **kwargs)
|
|
162
|
+
else:
|
|
163
|
+
return pd.DataFrame(obj, *args, **kwargs)
|
|
164
|
+
# DPNP ndarray.
|
|
165
|
+
elif target_df == "dpnp":
|
|
166
|
+
return dpnp.asarray(
|
|
167
|
+
obj, usm_type="device", sycl_queue=sycl_queue, *args, **kwargs
|
|
168
|
+
)
|
|
169
|
+
elif target_df == "dpctl":
|
|
170
|
+
# DPCtl tensor.
|
|
171
|
+
return dpt.asarray(obj, usm_type="device", sycl_queue=sycl_queue, *args, **kwargs)
|
|
172
|
+
elif target_df in array_api_modules:
|
|
173
|
+
# Array API input other than DPNP ndarray, DPCtl tensor or
|
|
174
|
+
# Numpy ndarray.
|
|
175
|
+
|
|
176
|
+
xp = array_api_modules[target_df]
|
|
177
|
+
return xp.asarray(obj)
|
|
178
|
+
|
|
179
|
+
raise RuntimeError("Unsupported dataframe conversion")
|
scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/utils/_device_selection.py
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# Copyright 2021 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 functools
|
|
18
|
+
|
|
19
|
+
import pytest
|
|
20
|
+
|
|
21
|
+
from ...utils._third_party import dpctl_available
|
|
22
|
+
|
|
23
|
+
if dpctl_available:
|
|
24
|
+
import dpctl
|
|
25
|
+
from dpctl.memory import MemoryUSMDevice, MemoryUSMShared
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def get_queues(filter_="cpu,gpu"):
|
|
29
|
+
"""Get available dpctl.SycQueues for testing.
|
|
30
|
+
|
|
31
|
+
This is meant to be used for testing purposes only.
|
|
32
|
+
|
|
33
|
+
Parameters
|
|
34
|
+
----------
|
|
35
|
+
filter_ : str, default="cpu,gpu"
|
|
36
|
+
Configure output list with available dpctl.SycQueues for testing.
|
|
37
|
+
|
|
38
|
+
Returns
|
|
39
|
+
-------
|
|
40
|
+
list[dpctl.SycQueue]
|
|
41
|
+
The list of dpctl.SycQueue.
|
|
42
|
+
|
|
43
|
+
Notes
|
|
44
|
+
-----
|
|
45
|
+
Do not use filters for the test cases disabling. Use `pytest.skip`
|
|
46
|
+
or `pytest.xfail` instead.
|
|
47
|
+
"""
|
|
48
|
+
queues = [None] if "cpu" in filter_ else []
|
|
49
|
+
|
|
50
|
+
if dpctl_available:
|
|
51
|
+
if dpctl.has_cpu_devices() and "cpu" in filter_:
|
|
52
|
+
queues.append(pytest.param(dpctl.SyclQueue("cpu"), id="SyclQueue_CPU"))
|
|
53
|
+
if dpctl.has_gpu_devices() and "gpu" in filter_:
|
|
54
|
+
queues.append(pytest.param(dpctl.SyclQueue("gpu"), id="SyclQueue_GPU"))
|
|
55
|
+
|
|
56
|
+
return queues
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def get_memory_usm():
|
|
60
|
+
if dpctl_available:
|
|
61
|
+
return [MemoryUSMDevice, MemoryUSMShared]
|
|
62
|
+
return []
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def is_dpctl_device_available(targets):
|
|
66
|
+
if not isinstance(targets, (list, tuple)):
|
|
67
|
+
raise TypeError("`targets` should be a list or tuple of strings.")
|
|
68
|
+
if dpctl_available:
|
|
69
|
+
for device in targets:
|
|
70
|
+
if device == "cpu" and not dpctl.has_cpu_devices():
|
|
71
|
+
return False
|
|
72
|
+
if device == "gpu" and not dpctl.has_gpu_devices():
|
|
73
|
+
return False
|
|
74
|
+
return True
|
|
75
|
+
return False
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def pass_if_not_implemented_for_gpu(reason=""):
|
|
79
|
+
"""Decorator for test functions. Asserts the test fails with the specified `reason` when running on GPU.
|
|
80
|
+
Used to ensure that a meaningful error message is provided by the backend."""
|
|
81
|
+
assert reason
|
|
82
|
+
|
|
83
|
+
def decorator(test):
|
|
84
|
+
@functools.wraps(test)
|
|
85
|
+
def wrapper(queue, *args, **kwargs):
|
|
86
|
+
if queue is not None and queue.sycl_device.is_gpu:
|
|
87
|
+
with pytest.raises(RuntimeError, match=reason):
|
|
88
|
+
test(queue, *args, **kwargs)
|
|
89
|
+
else:
|
|
90
|
+
test(queue, *args, **kwargs)
|
|
91
|
+
|
|
92
|
+
return wrapper
|
|
93
|
+
|
|
94
|
+
return decorator
|
|
@@ -0,0 +1,98 @@
|
|
|
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
|
+
"""Tools to support array_api."""
|
|
18
|
+
|
|
19
|
+
from collections.abc import Iterable
|
|
20
|
+
from functools import lru_cache
|
|
21
|
+
|
|
22
|
+
import numpy as np
|
|
23
|
+
import scipy.sparse as sp
|
|
24
|
+
|
|
25
|
+
from ..utils._third_party import _is_subclass_fast
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def _supports_buffer_protocol(obj):
|
|
29
|
+
# the array_api standard mandates conversion with the buffer protocol,
|
|
30
|
+
# which can only be checked via a try-catch in native python
|
|
31
|
+
try:
|
|
32
|
+
memoryview(obj)
|
|
33
|
+
except TypeError:
|
|
34
|
+
return False
|
|
35
|
+
return True
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _asarray(data, xp, *args, **kwargs):
|
|
39
|
+
"""Converted input object to array format of xp namespace provided."""
|
|
40
|
+
if hasattr(data, "__array_namespace__") or _supports_buffer_protocol(data):
|
|
41
|
+
return xp.asarray(data, *args, **kwargs)
|
|
42
|
+
elif isinstance(data, Iterable):
|
|
43
|
+
if isinstance(data, tuple):
|
|
44
|
+
result_data = []
|
|
45
|
+
for i in range(len(data)):
|
|
46
|
+
result_data.append(_asarray(data[i], xp, *args, **kwargs))
|
|
47
|
+
data = tuple(result_data)
|
|
48
|
+
elif sp.issparse(data):
|
|
49
|
+
pass
|
|
50
|
+
else:
|
|
51
|
+
for i in range(len(data)):
|
|
52
|
+
data[i] = _asarray(data[i], xp, *args, **kwargs)
|
|
53
|
+
return data
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def _is_numpy_namespace(xp):
|
|
57
|
+
"""Return True if xp is backed by NumPy."""
|
|
58
|
+
return xp.__name__ in {
|
|
59
|
+
"numpy",
|
|
60
|
+
"array_api_compat.numpy",
|
|
61
|
+
"numpy.array_api",
|
|
62
|
+
"sklearn.externals.array_api_compat.numpy",
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
@lru_cache(100)
|
|
67
|
+
def _cls_to_sycl_namespace(cls):
|
|
68
|
+
# use caching to minimize imports, derived from array_api_compat
|
|
69
|
+
if _is_subclass_fast(cls, "dpctl.tensor", "usm_ndarray"):
|
|
70
|
+
import dpctl.tensor as dpt
|
|
71
|
+
|
|
72
|
+
return dpt
|
|
73
|
+
elif _is_subclass_fast(cls, "dpnp", "ndarray"):
|
|
74
|
+
import dpnp
|
|
75
|
+
|
|
76
|
+
return dpnp
|
|
77
|
+
else:
|
|
78
|
+
raise ValueError(f"SYCL type not recognized: {cls}")
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def _get_sycl_namespace(*arrays):
|
|
82
|
+
"""Get namespace of sycl arrays."""
|
|
83
|
+
|
|
84
|
+
# sycl support designed to work regardless of array_api_dispatch sklearn global value
|
|
85
|
+
sua_iface = {type(x): x for x in arrays if hasattr(x, "__sycl_usm_array_interface__")}
|
|
86
|
+
|
|
87
|
+
if len(sua_iface) > 1:
|
|
88
|
+
raise ValueError(f"Multiple SYCL types for array inputs: {sua_iface}")
|
|
89
|
+
|
|
90
|
+
if sua_iface:
|
|
91
|
+
(X,) = sua_iface.values()
|
|
92
|
+
return (
|
|
93
|
+
sua_iface,
|
|
94
|
+
_cls_to_sycl_namespace(type(X)),
|
|
95
|
+
hasattr(X, "__array_namespace__"),
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
return sua_iface, np, False
|
scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_sycl_queue_manager.py
ADDED
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# Copyright 2025 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
|
+
from contextlib import contextmanager
|
|
18
|
+
from types import SimpleNamespace
|
|
19
|
+
|
|
20
|
+
from onedal import _default_backend as backend
|
|
21
|
+
|
|
22
|
+
from .._config import _get_config
|
|
23
|
+
from ..datatypes import get_torch_queue
|
|
24
|
+
from ._third_party import SyclQueue, is_torch_tensor
|
|
25
|
+
|
|
26
|
+
# This special object signifies that the queue system should be
|
|
27
|
+
# disabled. It will force computation to host. This occurs when the
|
|
28
|
+
# global queue is set to this value (and therefore should not be
|
|
29
|
+
# modified).
|
|
30
|
+
__fallback_queue = object()
|
|
31
|
+
# single instance of global queue
|
|
32
|
+
__global_queue = None
|
|
33
|
+
# dictionary of generic SYCL queues with default SYCL contexts for
|
|
34
|
+
# reuse
|
|
35
|
+
__dlpack_queue = {}
|
|
36
|
+
# Special queue for non-CPU, non-SYCL data associated with dlpack
|
|
37
|
+
__non_queue = SimpleNamespace(sycl_device=SimpleNamespace(is_cpu=False))
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def __create_sycl_queue(target):
|
|
41
|
+
if isinstance(target, SyclQueue) or target is None or target is __non_queue:
|
|
42
|
+
return target
|
|
43
|
+
if isinstance(target, (str, int)):
|
|
44
|
+
return SyclQueue(target)
|
|
45
|
+
raise ValueError(f"Invalid queue or device selector {target=}.")
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def get_global_queue():
|
|
49
|
+
"""Get the global queue.
|
|
50
|
+
|
|
51
|
+
Retrieve it from the config if not set.
|
|
52
|
+
|
|
53
|
+
Returns
|
|
54
|
+
-------
|
|
55
|
+
queue: SyclQueue or None
|
|
56
|
+
SYCL Queue object for device code execution. 'None'
|
|
57
|
+
signifies computation on host.
|
|
58
|
+
"""
|
|
59
|
+
if (queue := __global_queue) is not None:
|
|
60
|
+
if queue is __fallback_queue:
|
|
61
|
+
return None
|
|
62
|
+
return queue
|
|
63
|
+
|
|
64
|
+
target = _get_config()["target_offload"]
|
|
65
|
+
if target == "auto":
|
|
66
|
+
# queue will be created from the provided data to each function call
|
|
67
|
+
return None
|
|
68
|
+
|
|
69
|
+
q = __create_sycl_queue(target)
|
|
70
|
+
update_global_queue(q)
|
|
71
|
+
return q
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def remove_global_queue():
|
|
75
|
+
"""Remove the global queue."""
|
|
76
|
+
global __global_queue
|
|
77
|
+
__global_queue = None
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def update_global_queue(queue):
|
|
81
|
+
"""Update the global queue.
|
|
82
|
+
|
|
83
|
+
Parameters
|
|
84
|
+
----------
|
|
85
|
+
queue : SyclQueue or None
|
|
86
|
+
SYCL Queue object for device code execution. None
|
|
87
|
+
signifies computation on host.
|
|
88
|
+
"""
|
|
89
|
+
global __global_queue
|
|
90
|
+
queue = __create_sycl_queue(queue)
|
|
91
|
+
__global_queue = queue
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def fallback_to_host():
|
|
95
|
+
"""Enforce a host queue."""
|
|
96
|
+
global __global_queue
|
|
97
|
+
__global_queue = __fallback_queue
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def _get_dlpack_queue(obj: object) -> SyclQueue:
|
|
101
|
+
# users should not require direct use of this
|
|
102
|
+
device_type, device_id = obj.__dlpack_device__()
|
|
103
|
+
if device_type == backend.kDLCPU:
|
|
104
|
+
return None
|
|
105
|
+
elif device_type != backend.kDLOneAPI:
|
|
106
|
+
# Data exists on a non-SYCL, non-CPU device. This will trigger an error
|
|
107
|
+
# or a fallback if "fallback_to_host" is set in the config
|
|
108
|
+
return __non_queue
|
|
109
|
+
|
|
110
|
+
if is_torch_tensor(obj):
|
|
111
|
+
return get_torch_queue(obj)
|
|
112
|
+
else:
|
|
113
|
+
# no specialized queue can be extracted. Use or generate a generic. Note,
|
|
114
|
+
# this will behave in unexpected ways for non-default SYCL contexts or
|
|
115
|
+
# with SYCL sub-devices due to limitations in the dlpack standard (not
|
|
116
|
+
# enough info).
|
|
117
|
+
try:
|
|
118
|
+
queue = __dlpack_queue[device_id]
|
|
119
|
+
except KeyError:
|
|
120
|
+
# use filter string capability to yield a queue
|
|
121
|
+
queue = SyclQueue(str(device_id))
|
|
122
|
+
__dlpack_queue[device_id] = queue
|
|
123
|
+
return queue
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def from_data(*data):
|
|
127
|
+
"""Extract the queue from provided data.
|
|
128
|
+
|
|
129
|
+
This updates the global queue as well.
|
|
130
|
+
|
|
131
|
+
Parameters
|
|
132
|
+
----------
|
|
133
|
+
*data : arguments
|
|
134
|
+
Data objects which may contain :obj:`dpctl.SyclQueue` objects.
|
|
135
|
+
|
|
136
|
+
Returns
|
|
137
|
+
-------
|
|
138
|
+
queue : SyclQueue or None
|
|
139
|
+
SYCL Queue object for device code execution. None
|
|
140
|
+
signifies computation on host.
|
|
141
|
+
"""
|
|
142
|
+
for item in data:
|
|
143
|
+
# iterate through all data objects, extract the queue, and verify that all data objects are on the same device
|
|
144
|
+
if usm_iface := getattr(item, "__sycl_usm_array_interface__", None):
|
|
145
|
+
data_queue = usm_iface["syclobj"]
|
|
146
|
+
elif hasattr(item, "__dlpack_device__"):
|
|
147
|
+
data_queue = _get_dlpack_queue(item)
|
|
148
|
+
else:
|
|
149
|
+
data_queue = None
|
|
150
|
+
|
|
151
|
+
# no queue, i.e. host data, no more work to do
|
|
152
|
+
if data_queue is None:
|
|
153
|
+
continue
|
|
154
|
+
|
|
155
|
+
global_queue = get_global_queue()
|
|
156
|
+
# update the global queue if not set
|
|
157
|
+
if global_queue is None:
|
|
158
|
+
update_global_queue(data_queue)
|
|
159
|
+
global_queue = data_queue
|
|
160
|
+
|
|
161
|
+
# if either queue points to a device, assert it's always the same device
|
|
162
|
+
data_dev = data_queue.sycl_device
|
|
163
|
+
global_dev = global_queue.sycl_device
|
|
164
|
+
if (data_dev and global_dev) is not None and data_dev != global_dev:
|
|
165
|
+
# when all data exists on other devices (e.g. not CPU or SYCL devices)
|
|
166
|
+
# failure will come in backend selection occurring in
|
|
167
|
+
# sklearnex._device_offload._get_backend when using __non_queue
|
|
168
|
+
raise ValueError(
|
|
169
|
+
"Data objects are located on different target devices or not on selected device."
|
|
170
|
+
)
|
|
171
|
+
|
|
172
|
+
# after we went through the data, global queue is updated and verified (if any queue found)
|
|
173
|
+
return get_global_queue()
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
@contextmanager
|
|
177
|
+
def manage_global_queue(queue, *args):
|
|
178
|
+
"""Context manager to manage the global SyclQueue.
|
|
179
|
+
|
|
180
|
+
This context manager updates the global queue with the provided queue,
|
|
181
|
+
verifies that all data objects are on the same device, and restores the
|
|
182
|
+
original queue after work is done.
|
|
183
|
+
|
|
184
|
+
Parameters
|
|
185
|
+
----------
|
|
186
|
+
queue : SyclQueue or None
|
|
187
|
+
The queue to set as the global queue. If None,
|
|
188
|
+
the global queue will be determined from the provided data.
|
|
189
|
+
|
|
190
|
+
*args : arguments
|
|
191
|
+
Additional data objects to verify their device placement.
|
|
192
|
+
|
|
193
|
+
Yields
|
|
194
|
+
------
|
|
195
|
+
SyclQueue : SyclQueue or None
|
|
196
|
+
The global queue after verification.
|
|
197
|
+
|
|
198
|
+
Notes
|
|
199
|
+
-----
|
|
200
|
+
For most applications, the original queue should be ``None``, but
|
|
201
|
+
if there are nested calls to ``manage_global_queue()``, it is
|
|
202
|
+
important to restore the outer queue, rather than setting it to
|
|
203
|
+
``None``.
|
|
204
|
+
"""
|
|
205
|
+
original_queue = get_global_queue()
|
|
206
|
+
try:
|
|
207
|
+
# update the global queue with what is provided, it can be None, then we will get it from provided data
|
|
208
|
+
update_global_queue(queue)
|
|
209
|
+
# find the queues in data to verify that all data objects are on the same device
|
|
210
|
+
yield from_data(*args)
|
|
211
|
+
finally:
|
|
212
|
+
# restore the original queue
|
|
213
|
+
update_global_queue(original_queue)
|