scikit-learn-intelex 2024.4.0__py312-none-win_amd64.whl → 2025.10.0__py312-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.cp312-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.cp312-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-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn}/decomposition/__init__.py +2 -2
- 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-2024.4.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn}/linear_model/__init__.py +29 -28
- 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-2024.4.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +2 -2
- 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-2024.4.0.data/data/Lib/site-packages/sklearnex/preview/cluster → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/manifold}/__init__.py +3 -3
- 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-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/ridge.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +4 -2
- 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-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/covariance → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils}/__init__.py +5 -3
- 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.cp312-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp312-win_amd64.pyd +0 -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-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition}/__init__.py +3 -2
- 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-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal}/neighbors/__init__.py +19 -19
- 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-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/__init__.py +7 -3
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/__main__.py +2 -2
- 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-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +128 -78
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +405 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +101 -32
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +1 -1
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +38 -29
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +399 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +8 -6
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +157 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/conftest.py +20 -1
- 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/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-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +199 -21
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +207 -2
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/__init__.py +19 -17
- 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-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +288 -440
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +196 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +1 -1
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +17 -3
- 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-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +11 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +256 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +3 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +3 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +3 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/_lof.py +30 -62
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +56 -9
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +45 -101
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +63 -94
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +49 -25
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +6 -4
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +1 -1
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +261 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +54 -8
- 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/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-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +9 -4
- 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-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +3 -4
- 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-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +6 -4
- 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/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-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +2 -1
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +28 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +7 -4
- 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-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +1 -3
- 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/_common.py +403 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +99 -117
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +55 -16
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +95 -113
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +51 -16
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +43 -20
- 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-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +5 -4
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +111 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/tests/test_patching.py +122 -75
- 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-2024.4.0.data/data/Lib/site-packages/sklearnex/utils/validation.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/__init__.py +3 -1
- 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/METADATA +182 -0
- scikit_learn_intelex-2025.10.0.dist-info/RECORD +267 -0
- {scikit_learn_intelex-2024.4.0.dist-info → scikit_learn_intelex-2025.10.0.dist-info}/WHEEL +1 -1
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/_config.py +0 -110
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +0 -250
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/_utils.py +0 -109
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +0 -17
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -30
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +0 -130
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +0 -143
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +0 -335
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -56
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +0 -113
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +0 -316
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_path.py +0 -17
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +0 -385
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +0 -117
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +0 -91
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -26
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/preview/cluster/_common.py +0 -84
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/preview/cluster/k_means.py +0 -303
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +0 -133
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -50
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +0 -71
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +0 -185
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/_utils.py +0 -164
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py +0 -39
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +0 -227
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +0 -99
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability_tests.py +0 -428
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -20
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/utils/_namespace.py +0 -97
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -59
- scikit_learn_intelex-2024.4.0.dist-info/METADATA +0 -230
- scikit_learn_intelex-2024.4.0.dist-info/RECORD +0 -101
- {scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal}/basic_statistics/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +0 -0
- {scikit_learn_intelex-2024.4.0.dist-info → scikit_learn_intelex-2025.10.0.dist-info}/LICENSE.txt +0 -0
- {scikit_learn_intelex-2024.4.0.dist-info → scikit_learn_intelex-2025.10.0.dist-info}/top_level.txt +0 -0
scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/tests/test_data.py
ADDED
|
@@ -0,0 +1,686 @@
|
|
|
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 gc
|
|
18
|
+
|
|
19
|
+
import numpy as np
|
|
20
|
+
import pytest
|
|
21
|
+
import scipy.sparse as sp
|
|
22
|
+
from numpy.testing import assert_allclose, assert_array_equal
|
|
23
|
+
|
|
24
|
+
from onedal import _default_backend, _dpc_backend
|
|
25
|
+
from onedal._device_offload import supports_queue
|
|
26
|
+
from onedal.datatypes import from_table, to_table
|
|
27
|
+
from onedal.utils._third_party import dpctl_available
|
|
28
|
+
|
|
29
|
+
backend = _dpc_backend or _default_backend
|
|
30
|
+
|
|
31
|
+
if dpctl_available:
|
|
32
|
+
from onedal.datatypes.tests.common import (
|
|
33
|
+
_assert_sua_iface_fields,
|
|
34
|
+
_assert_tensor_attr,
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
from daal4py.sklearn._utils import get_dtype
|
|
38
|
+
from onedal.cluster.dbscan import DBSCAN
|
|
39
|
+
from onedal.primitives import linear_kernel
|
|
40
|
+
from onedal.tests.utils._dataframes_support import (
|
|
41
|
+
_convert_to_dataframe,
|
|
42
|
+
array_api_modules,
|
|
43
|
+
get_dataframes_and_queues,
|
|
44
|
+
)
|
|
45
|
+
from onedal.tests.utils._device_selection import get_queues
|
|
46
|
+
from onedal.utils._array_api import _get_sycl_namespace
|
|
47
|
+
|
|
48
|
+
data_shapes = [
|
|
49
|
+
pytest.param((1000, 100), id="(1000, 100)"), # 2-D array
|
|
50
|
+
pytest.param((2000, 50), id="(2000, 50)"), # 2-D array
|
|
51
|
+
pytest.param((50, 1), id="(50, 1)"), # 2-D array
|
|
52
|
+
pytest.param((1, 50), id="(1, 50)"), # 2-D array
|
|
53
|
+
pytest.param((50,), id="(50,)"), # 1-D array
|
|
54
|
+
]
|
|
55
|
+
|
|
56
|
+
unsupported_data_shapes = [
|
|
57
|
+
pytest.param((2, 3, 4), id="(2, 3, 4)"),
|
|
58
|
+
pytest.param((2, 3, 4, 5), id="(2, 3, 4, 5)"),
|
|
59
|
+
]
|
|
60
|
+
|
|
61
|
+
ORDER_DICT = {"F": np.asfortranarray, "C": np.ascontiguousarray}
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
class DummyEstimatorWithTableConversions:
|
|
65
|
+
|
|
66
|
+
@supports_queue
|
|
67
|
+
def fit(self, X, y=None, queue=None):
|
|
68
|
+
if not backend.is_dpc:
|
|
69
|
+
raise RuntimeError("Table conversions should be done with DPC backend.")
|
|
70
|
+
|
|
71
|
+
sua_iface, xp, _ = _get_sycl_namespace(X)
|
|
72
|
+
dbscan = DBSCAN()
|
|
73
|
+
types = [xp.float32, xp.float64]
|
|
74
|
+
if get_dtype(X) not in types:
|
|
75
|
+
X = xp.astype(X, dtype=xp.float64)
|
|
76
|
+
dtype = get_dtype(X)
|
|
77
|
+
params = dbscan._get_onedal_params(dtype)
|
|
78
|
+
X_table = to_table(X)
|
|
79
|
+
# TODO:
|
|
80
|
+
# check other candidates for the dummy base oneDAL func.
|
|
81
|
+
# oneDAL backend func is needed to check result table checks.
|
|
82
|
+
result = dbscan.compute(params, X_table, to_table(None))
|
|
83
|
+
result_responses_table = result.responses
|
|
84
|
+
result_responses_df = from_table(result_responses_table, like=X)
|
|
85
|
+
return X_table, result_responses_table, result_responses_df
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
class _OnlyDLTensor:
|
|
89
|
+
"""This is a temporary class to force use of the '__dlpack__' logic branch
|
|
90
|
+
in `to_table` as `__dlpack__` conversion is lower priority by design.
|
|
91
|
+
dpctl data with CPU SyclQueues are shown as on KDLOneAPI devices, which serve
|
|
92
|
+
to test the SYCL device support in `__dlpack__` logic without GPU hardware.
|
|
93
|
+
This takes inspiration from sklearn's `_NotAnArray`."""
|
|
94
|
+
|
|
95
|
+
def __init__(self, data):
|
|
96
|
+
self.data = data
|
|
97
|
+
|
|
98
|
+
def __dlpack__(self):
|
|
99
|
+
return self.data.__dlpack__()
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def _to_table_supported(array):
|
|
103
|
+
"""This function provides a quick and easy way to determine characteristics
|
|
104
|
+
or behaviors of the to_table function. For example, returned errors are
|
|
105
|
+
tested and are firstly dependent if they are of a proper array type. This is
|
|
106
|
+
pertinent for circumstances such as direct use of other dataframe types (e.g.
|
|
107
|
+
Pandas)."""
|
|
108
|
+
return (
|
|
109
|
+
isinstance(array, np.ndarray)
|
|
110
|
+
or hasattr(array, "__sycl_usm_ndarray_interface__")
|
|
111
|
+
or hasattr(array, "__dlpack__")
|
|
112
|
+
or sp.issparse(array)
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def _test_input_format_c_contiguous_numpy(queue, dtype):
|
|
117
|
+
rng = np.random.RandomState(0)
|
|
118
|
+
x_default = np.array(5 * rng.random_sample((10, 4)), dtype=dtype)
|
|
119
|
+
|
|
120
|
+
x_numpy = np.asanyarray(x_default, dtype=dtype, order="C")
|
|
121
|
+
assert x_numpy.flags.c_contiguous
|
|
122
|
+
assert not x_numpy.flags.f_contiguous
|
|
123
|
+
assert not x_numpy.flags.fnc
|
|
124
|
+
|
|
125
|
+
expected = linear_kernel(x_default, queue=queue)
|
|
126
|
+
result = linear_kernel(x_numpy, queue=queue)
|
|
127
|
+
assert_allclose(expected, result)
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
@pytest.mark.parametrize("queue", get_queues())
|
|
131
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
132
|
+
def test_input_format_c_contiguous_numpy(queue, dtype):
|
|
133
|
+
_test_input_format_c_contiguous_numpy(queue, dtype)
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def _test_input_format_f_contiguous_numpy(queue, dtype):
|
|
137
|
+
rng = np.random.RandomState(0)
|
|
138
|
+
x_default = np.array(5 * rng.random_sample((10, 4)), dtype=dtype)
|
|
139
|
+
|
|
140
|
+
x_numpy = np.asanyarray(x_default, dtype=dtype, order="F")
|
|
141
|
+
assert not x_numpy.flags.c_contiguous
|
|
142
|
+
assert x_numpy.flags.f_contiguous
|
|
143
|
+
assert x_numpy.flags.fnc
|
|
144
|
+
|
|
145
|
+
expected = linear_kernel(x_default, queue=queue)
|
|
146
|
+
result = linear_kernel(x_numpy, queue=queue)
|
|
147
|
+
assert_allclose(expected, result)
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
@pytest.mark.parametrize("queue", get_queues())
|
|
151
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
152
|
+
def test_input_format_f_contiguous_numpy(queue, dtype):
|
|
153
|
+
_test_input_format_f_contiguous_numpy(queue, dtype)
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
def _test_input_format_c_not_contiguous_numpy(queue, dtype):
|
|
157
|
+
rng = np.random.RandomState(0)
|
|
158
|
+
x_default = np.array(5 * rng.random_sample((10, 4)), dtype=dtype)
|
|
159
|
+
|
|
160
|
+
dummy_data = np.insert(x_default, range(1, x_default.shape[1]), 8, axis=1)
|
|
161
|
+
x_numpy = dummy_data[:, ::2]
|
|
162
|
+
|
|
163
|
+
assert_allclose(x_numpy, x_default)
|
|
164
|
+
|
|
165
|
+
assert not x_numpy.flags.c_contiguous
|
|
166
|
+
assert not x_numpy.flags.f_contiguous
|
|
167
|
+
assert not x_numpy.flags.fnc
|
|
168
|
+
|
|
169
|
+
expected = linear_kernel(x_default, queue=queue)
|
|
170
|
+
result = linear_kernel(x_numpy, queue=queue)
|
|
171
|
+
assert_allclose(expected, result)
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
@pytest.mark.parametrize("queue", get_queues())
|
|
175
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
176
|
+
def test_input_format_c_not_contiguous_numpy(queue, dtype):
|
|
177
|
+
_test_input_format_c_not_contiguous_numpy(queue, dtype)
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
def _test_input_format_c_contiguous_pandas(queue, dtype):
|
|
181
|
+
pd = pytest.importorskip("pandas")
|
|
182
|
+
rng = np.random.RandomState(0)
|
|
183
|
+
x_default = np.array(5 * rng.random_sample((10, 4)), dtype=dtype)
|
|
184
|
+
|
|
185
|
+
x_numpy = np.asanyarray(x_default, dtype=dtype, order="C")
|
|
186
|
+
assert x_numpy.flags.c_contiguous
|
|
187
|
+
assert not x_numpy.flags.f_contiguous
|
|
188
|
+
assert not x_numpy.flags.fnc
|
|
189
|
+
x_df = pd.DataFrame(x_numpy)
|
|
190
|
+
|
|
191
|
+
expected = linear_kernel(x_df, queue=queue)
|
|
192
|
+
result = linear_kernel(x_numpy, queue=queue)
|
|
193
|
+
assert_allclose(expected, result)
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
@pytest.mark.parametrize("queue", get_queues())
|
|
197
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
198
|
+
def test_input_format_c_contiguous_pandas(queue, dtype):
|
|
199
|
+
_test_input_format_c_contiguous_pandas(queue, dtype)
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
def _test_input_format_f_contiguous_pandas(queue, dtype):
|
|
203
|
+
pd = pytest.importorskip("pandas")
|
|
204
|
+
rng = np.random.RandomState(0)
|
|
205
|
+
x_default = np.array(5 * rng.random_sample((10, 4)), dtype=dtype)
|
|
206
|
+
|
|
207
|
+
x_numpy = np.asanyarray(x_default, dtype=dtype, order="F")
|
|
208
|
+
assert not x_numpy.flags.c_contiguous
|
|
209
|
+
assert x_numpy.flags.f_contiguous
|
|
210
|
+
assert x_numpy.flags.fnc
|
|
211
|
+
x_df = pd.DataFrame(x_numpy)
|
|
212
|
+
|
|
213
|
+
expected = linear_kernel(x_df, queue=queue)
|
|
214
|
+
result = linear_kernel(x_numpy, queue=queue)
|
|
215
|
+
assert_allclose(expected, result)
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
@pytest.mark.parametrize("queue", get_queues())
|
|
219
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
220
|
+
def test_input_format_f_contiguous_pandas(queue, dtype):
|
|
221
|
+
_test_input_format_f_contiguous_pandas(queue, dtype)
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
def _test_conversion_to_table(dtype):
|
|
225
|
+
np.random.seed()
|
|
226
|
+
if dtype in [np.int32, np.int64]:
|
|
227
|
+
x = np.random.randint(0, 10, (15, 3), dtype=dtype)
|
|
228
|
+
else:
|
|
229
|
+
x = np.random.uniform(-2, 2, (18, 6)).astype(dtype)
|
|
230
|
+
x_table = to_table(x)
|
|
231
|
+
x2 = from_table(x_table)
|
|
232
|
+
assert x.dtype == x2.dtype
|
|
233
|
+
assert np.array_equal(x, x2)
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
@pytest.mark.parametrize("dtype", [np.int32, np.int64, np.float32, np.float64])
|
|
237
|
+
def test_conversion_to_table(dtype):
|
|
238
|
+
_test_conversion_to_table(dtype)
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
@pytest.mark.skipif(
|
|
242
|
+
not dpctl_available,
|
|
243
|
+
reason="dpctl is required for checks.",
|
|
244
|
+
)
|
|
245
|
+
@pytest.mark.skipif(
|
|
246
|
+
not backend.is_dpc,
|
|
247
|
+
reason="__sycl_usm_array_interface__ support requires DPC backend.",
|
|
248
|
+
)
|
|
249
|
+
@pytest.mark.parametrize(
|
|
250
|
+
"dataframe,queue", get_dataframes_and_queues("dpctl,dpnp", "cpu,gpu")
|
|
251
|
+
)
|
|
252
|
+
@pytest.mark.parametrize("order", ["C", "F"])
|
|
253
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64, np.int32, np.int64])
|
|
254
|
+
def test_input_zero_copy_sycl_usm(dataframe, queue, order, dtype):
|
|
255
|
+
"""Checking that values representing USM allocations `__sycl_usm_array_interface__`
|
|
256
|
+
are preserved during conversion to onedal table.
|
|
257
|
+
"""
|
|
258
|
+
rng = np.random.RandomState(0)
|
|
259
|
+
X_np = np.array(5 * rng.random_sample((10, 59)), dtype=dtype)
|
|
260
|
+
|
|
261
|
+
X_np = np.asanyarray(X_np, dtype=dtype, order=order)
|
|
262
|
+
|
|
263
|
+
X_dp = _convert_to_dataframe(X_np, sycl_queue=queue, target_df=dataframe)
|
|
264
|
+
|
|
265
|
+
sua_iface, X_dp_namespace, _ = _get_sycl_namespace(X_dp)
|
|
266
|
+
|
|
267
|
+
X_table = to_table(X_dp)
|
|
268
|
+
_assert_sua_iface_fields(X_dp, X_table)
|
|
269
|
+
|
|
270
|
+
X_dp_from_table = from_table(X_table, like=X_dp)
|
|
271
|
+
_assert_sua_iface_fields(X_table, X_dp_from_table)
|
|
272
|
+
_assert_tensor_attr(X_dp, X_dp_from_table, order)
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
@pytest.mark.skipif(
|
|
276
|
+
not dpctl_available,
|
|
277
|
+
reason="dpctl is required for checks.",
|
|
278
|
+
)
|
|
279
|
+
@pytest.mark.skipif(
|
|
280
|
+
not backend.is_dpc,
|
|
281
|
+
reason="__sycl_usm_array_interface__ support requires DPC backend.",
|
|
282
|
+
)
|
|
283
|
+
@pytest.mark.parametrize(
|
|
284
|
+
"dataframe,queue", get_dataframes_and_queues("dpctl,dpnp", "cpu,gpu")
|
|
285
|
+
)
|
|
286
|
+
@pytest.mark.parametrize("order", ["F", "C"])
|
|
287
|
+
@pytest.mark.parametrize("data_shape", data_shapes)
|
|
288
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
289
|
+
def test_table_conversions_sycl_usm(dataframe, queue, order, data_shape, dtype):
|
|
290
|
+
"""Checking that values representing USM allocations `__sycl_usm_array_interface__`
|
|
291
|
+
are preserved during conversion to onedal table and from onedal table to
|
|
292
|
+
sycl usm array dataformat.
|
|
293
|
+
"""
|
|
294
|
+
rng = np.random.RandomState(0)
|
|
295
|
+
X = np.array(5 * rng.random_sample(data_shape), dtype=dtype)
|
|
296
|
+
|
|
297
|
+
X = ORDER_DICT[order](X)
|
|
298
|
+
|
|
299
|
+
X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
300
|
+
alg = DummyEstimatorWithTableConversions()
|
|
301
|
+
X_table, result_responses_table, result_responses_df = alg.fit(X)
|
|
302
|
+
|
|
303
|
+
for obj in [X_table, result_responses_df, X]:
|
|
304
|
+
assert hasattr(obj, "__sycl_usm_array_interface__"), f"{obj} has no SUA interface"
|
|
305
|
+
|
|
306
|
+
assert (
|
|
307
|
+
hasattr(result_responses_table, "__sycl_usm_array_interface__")
|
|
308
|
+
!= queue.sycl_device.is_cpu
|
|
309
|
+
)
|
|
310
|
+
_assert_sua_iface_fields(X, X_table)
|
|
311
|
+
|
|
312
|
+
# Work around for saving compute-follows-data execution
|
|
313
|
+
# for CPU sycl context requires cause additional memory
|
|
314
|
+
# allocation using the same queue.
|
|
315
|
+
skip_data_0 = True if queue.sycl_device.is_cpu else False
|
|
316
|
+
# Onedal return table's syclobj is empty for CPU inputs.
|
|
317
|
+
skip_syclobj = True if queue.sycl_device.is_cpu else False
|
|
318
|
+
# TODO:
|
|
319
|
+
# investigate why __sycl_usm_array_interface__["data"][1] is changed
|
|
320
|
+
# after conversion from onedal table to sua array.
|
|
321
|
+
# Test is not turned off because of this. Only check is skipped.
|
|
322
|
+
skip_data_1 = True
|
|
323
|
+
if not queue.sycl_device.is_cpu:
|
|
324
|
+
_assert_sua_iface_fields(
|
|
325
|
+
result_responses_df,
|
|
326
|
+
result_responses_table,
|
|
327
|
+
skip_data_0=skip_data_0,
|
|
328
|
+
skip_data_1=skip_data_1,
|
|
329
|
+
skip_syclobj=skip_syclobj,
|
|
330
|
+
)
|
|
331
|
+
assert X.sycl_queue == result_responses_df.sycl_queue
|
|
332
|
+
if order == "F":
|
|
333
|
+
assert X.flags.f_contiguous == result_responses_df.flags.f_contiguous
|
|
334
|
+
else:
|
|
335
|
+
assert X.flags.c_contiguous == result_responses_df.flags.c_contiguous
|
|
336
|
+
# 1D output expected to have the same c_contiguous and f_contiguous flag values.
|
|
337
|
+
assert (
|
|
338
|
+
result_responses_df.flags.c_contiguous == result_responses_df.flags.f_contiguous
|
|
339
|
+
)
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
@pytest.mark.parametrize(
|
|
343
|
+
"dataframe,queue", get_dataframes_and_queues("numpy,dpctl,dpnp,array_api", "cpu,gpu")
|
|
344
|
+
)
|
|
345
|
+
@pytest.mark.parametrize("data_shape", unsupported_data_shapes)
|
|
346
|
+
def test_interop_invalid_shape(dataframe, queue, data_shape):
|
|
347
|
+
X = np.zeros(data_shape)
|
|
348
|
+
X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
349
|
+
|
|
350
|
+
expected_err_msg = r"Input array has wrong dimensionality \(must be 2d\)."
|
|
351
|
+
if dataframe in "dpctl,dpnp":
|
|
352
|
+
expected_err_msg = (
|
|
353
|
+
"Unable to convert from SUA interface: only 1D & 2D tensors are allowed"
|
|
354
|
+
)
|
|
355
|
+
with pytest.raises(ValueError, match=expected_err_msg):
|
|
356
|
+
to_table(X)
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
@pytest.mark.parametrize(
|
|
360
|
+
"dataframe,queue", get_dataframes_and_queues("dpctl,dpnp,array_api", "cpu,gpu")
|
|
361
|
+
)
|
|
362
|
+
@pytest.mark.parametrize(
|
|
363
|
+
"dtype",
|
|
364
|
+
[
|
|
365
|
+
pytest.param(np.uint16, id=np.dtype(np.uint16).name),
|
|
366
|
+
pytest.param(np.uint32, id=np.dtype(np.uint32).name),
|
|
367
|
+
pytest.param(np.uint64, id=np.dtype(np.uint64).name),
|
|
368
|
+
],
|
|
369
|
+
)
|
|
370
|
+
def test_interop_unsupported_dtypes(dataframe, queue, dtype):
|
|
371
|
+
# sua iface interobility supported only for oneDAL supported dtypes
|
|
372
|
+
# for input data: int32, int64, float32, float64.
|
|
373
|
+
# Checking some common dtypes supported by dpctl, dpnp for exception
|
|
374
|
+
# raise.
|
|
375
|
+
X = np.zeros((10, 20), dtype=dtype)
|
|
376
|
+
X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
377
|
+
expected_err_msg = r"Found unsupported (array|tensor) type"
|
|
378
|
+
|
|
379
|
+
with pytest.raises(TypeError, match=expected_err_msg):
|
|
380
|
+
to_table(X)
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
@pytest.mark.parametrize(
|
|
384
|
+
"dataframe,queue", get_dataframes_and_queues("numpy,dpctl,dpnp", "cpu,gpu")
|
|
385
|
+
)
|
|
386
|
+
def test_to_table_non_contiguous_input(dataframe, queue):
|
|
387
|
+
if dataframe in "dpnp,dpctl" and not backend.is_dpc:
|
|
388
|
+
pytest.skip("__sycl_usm_array_interface__ support requires DPC backend.")
|
|
389
|
+
X, _ = np.mgrid[:10, :10]
|
|
390
|
+
X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
391
|
+
X = X[:, :3]
|
|
392
|
+
assert not X.flags.c_contiguous and not X.flags.f_contiguous
|
|
393
|
+
X_t = to_table(X)
|
|
394
|
+
assert X_t and X_t.shape == (10, 3) and X_t.has_data
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
@pytest.mark.skipif(
|
|
398
|
+
backend.is_dpc,
|
|
399
|
+
reason="Required check should be done if no DPC backend.",
|
|
400
|
+
)
|
|
401
|
+
@pytest.mark.parametrize(
|
|
402
|
+
"dataframe,queue", get_dataframes_and_queues("dpctl,dpnp", "cpu,gpu")
|
|
403
|
+
)
|
|
404
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
405
|
+
def test_interop_if_no_dpc_backend_sycl_usm(dataframe, queue, dtype):
|
|
406
|
+
X = np.zeros((10, 20), dtype=dtype)
|
|
407
|
+
X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
408
|
+
sua_iface, _, _ = _get_sycl_namespace(X)
|
|
409
|
+
|
|
410
|
+
expected_err_msg = "SYCL usm array conversion to table requires the DPC backend"
|
|
411
|
+
with pytest.raises(RuntimeError, match=expected_err_msg):
|
|
412
|
+
to_table(X)
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
def _test_low_precision_gpu_conversion(dtype, sparse, dataframe):
|
|
416
|
+
# Use a dummy queue as fp32 hardware is not in public testing
|
|
417
|
+
|
|
418
|
+
class DummySyclQueue:
|
|
419
|
+
"""This class is designed to act like dpctl.SyclQueue
|
|
420
|
+
to force dtype conversion"""
|
|
421
|
+
|
|
422
|
+
class DummySyclDevice:
|
|
423
|
+
has_aspect_fp64 = False
|
|
424
|
+
|
|
425
|
+
sycl_device = DummySyclDevice()
|
|
426
|
+
|
|
427
|
+
queue = DummySyclQueue()
|
|
428
|
+
|
|
429
|
+
if sparse:
|
|
430
|
+
X = sp.random(100, 100, format="csr", dtype=dtype)
|
|
431
|
+
else:
|
|
432
|
+
X = _convert_to_dataframe(
|
|
433
|
+
np.random.rand(100, 100).astype(dtype), target_df=dataframe
|
|
434
|
+
)
|
|
435
|
+
|
|
436
|
+
if dtype == np.float64:
|
|
437
|
+
with pytest.warns(
|
|
438
|
+
RuntimeWarning,
|
|
439
|
+
match="Data will be converted into float32 from float64 because device does not support it",
|
|
440
|
+
):
|
|
441
|
+
X_table = to_table(X, queue=queue)
|
|
442
|
+
else:
|
|
443
|
+
X_table = to_table(X, queue=queue)
|
|
444
|
+
|
|
445
|
+
assert X_table.dtype == np.float32
|
|
446
|
+
if dtype == np.float32 and not sparse:
|
|
447
|
+
assert_allclose(X, from_table(X_table))
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
@pytest.mark.skipif(
|
|
451
|
+
not backend.is_dpc, reason="Requires DPC backend for dtype conversion"
|
|
452
|
+
)
|
|
453
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
454
|
+
@pytest.mark.parametrize("sparse", [True, False])
|
|
455
|
+
def test_low_precision_gpu_conversion_numpy(dtype, sparse):
|
|
456
|
+
_test_low_precision_gpu_conversion(dtype, sparse, "numpy")
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
@pytest.mark.skipif(
|
|
460
|
+
not backend.is_dpc or "array_api" not in array_api_modules,
|
|
461
|
+
reason="Requires DPC backend and array_api_strict for the test",
|
|
462
|
+
)
|
|
463
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
464
|
+
def test_low_precision_gpu_conversion_array_api(dtype):
|
|
465
|
+
_test_low_precision_gpu_conversion(dtype, False, "array_api")
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
@pytest.mark.parametrize("X", [None, 5, "test", True, [], np.pi, lambda: None])
|
|
469
|
+
@pytest.mark.parametrize("queue", get_queues())
|
|
470
|
+
def test_non_array(X, queue):
|
|
471
|
+
# Verify that to and from table doesn't raise errors
|
|
472
|
+
# no guarantee is made about type or content
|
|
473
|
+
error = ValueError
|
|
474
|
+
err_str = ""
|
|
475
|
+
|
|
476
|
+
xp = X.__array_namespace__() if hasattr(X, "__array_namespace__") else np
|
|
477
|
+
types = [xp.float64, xp.float32, xp.int64, xp.int32]
|
|
478
|
+
|
|
479
|
+
if np.isscalar(X):
|
|
480
|
+
if np.atleast_2d(X).dtype not in types:
|
|
481
|
+
error = TypeError
|
|
482
|
+
err_str = r"Found unsupported array type"
|
|
483
|
+
elif _to_table_supported(X):
|
|
484
|
+
if X.dtype not in types:
|
|
485
|
+
error = TypeError
|
|
486
|
+
err_str = r"Found unsupported (array|tensor) type"
|
|
487
|
+
if 0 in X.shape:
|
|
488
|
+
# not set to a consistent string between the various conversions
|
|
489
|
+
err_str = r".*"
|
|
490
|
+
elif X is not None:
|
|
491
|
+
err_str = r"\[convert_to_table\] Not available input format for convert Python object to onedal table."
|
|
492
|
+
|
|
493
|
+
if err_str:
|
|
494
|
+
with pytest.raises(error, match=err_str):
|
|
495
|
+
to_table(X)
|
|
496
|
+
else:
|
|
497
|
+
X_table = to_table(X, queue=queue)
|
|
498
|
+
from_table(X_table)
|
|
499
|
+
|
|
500
|
+
|
|
501
|
+
@pytest.mark.skipif(
|
|
502
|
+
not backend.is_dpc, reason="Requires DPC backend for dtype conversion"
|
|
503
|
+
)
|
|
504
|
+
@pytest.mark.parametrize("X", [None, 5, "test", True, [], np.pi, lambda: None])
|
|
505
|
+
def test_low_precision_non_array_numpy(X):
|
|
506
|
+
# Use a dummy queue as fp32 hardware is not in public testing
|
|
507
|
+
|
|
508
|
+
class DummySyclQueue:
|
|
509
|
+
"""This class is designed to act like dpctl.SyclQueue
|
|
510
|
+
to force dtype conversion"""
|
|
511
|
+
|
|
512
|
+
class DummySyclDevice:
|
|
513
|
+
has_aspect_fp64 = False
|
|
514
|
+
|
|
515
|
+
sycl_device = DummySyclDevice()
|
|
516
|
+
|
|
517
|
+
queue = DummySyclQueue()
|
|
518
|
+
test_non_array(X, queue)
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
@pytest.mark.parametrize("X", [5, True, np.pi])
|
|
522
|
+
def test_basic_ndarray_types_numpy(X):
|
|
523
|
+
# Verify that the various supported basic types can go in and out of tables
|
|
524
|
+
test_non_array(np.asarray(X), None)
|
|
525
|
+
|
|
526
|
+
|
|
527
|
+
@pytest.mark.parametrize(
|
|
528
|
+
"dataframe,queue", get_dataframes_and_queues("dpctl,numpy", "cpu,gpu")
|
|
529
|
+
)
|
|
530
|
+
@pytest.mark.parametrize("can_copy", [True, False])
|
|
531
|
+
def test_to_table_non_contiguous_input_dlpack(dataframe, queue, can_copy):
|
|
532
|
+
X, _ = np.mgrid[:10, :10]
|
|
533
|
+
X_df = _convert_to_dataframe(X, sycl_queue=queue, dataframe=dataframe)
|
|
534
|
+
if not hasattr(X_df, "__dlpack__"):
|
|
535
|
+
pytest.skip("underlying array doesn't support dlpack")
|
|
536
|
+
|
|
537
|
+
X_tens = _OnlyDLTensor(X_df[:, :3])
|
|
538
|
+
|
|
539
|
+
# give the _OnlyDLTensor the ability to copy
|
|
540
|
+
if can_copy:
|
|
541
|
+
X_tens.copy = lambda: _OnlyDLTensor(
|
|
542
|
+
X_tens.data.__array_namespace__().copy(X_tens.data)
|
|
543
|
+
if hasattr(X_tens.data, "__array_namespace__")
|
|
544
|
+
else X_tens.data.copy()
|
|
545
|
+
)
|
|
546
|
+
X_table = to_table(X_tens)
|
|
547
|
+
X_out = from_table(X_table)
|
|
548
|
+
assert_allclose(X[:, :3], X_out)
|
|
549
|
+
else:
|
|
550
|
+
with pytest.raises(RuntimeError, match="Wrong strides"):
|
|
551
|
+
to_table(X_tens)
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
@pytest.mark.parametrize(
|
|
555
|
+
"dataframe,queue", get_dataframes_and_queues("dpctl,numpy", "cpu,gpu")
|
|
556
|
+
)
|
|
557
|
+
@pytest.mark.parametrize("order", ["F", "C"])
|
|
558
|
+
@pytest.mark.parametrize("data_shape", data_shapes)
|
|
559
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
560
|
+
def test_table_conversions_dlpack(dataframe, queue, order, data_shape, dtype):
|
|
561
|
+
"""Test if __dlpack__ data can be properly consumed when only __dlpack__ attribute is exposed.
|
|
562
|
+
This tests kDLOneAPI devices as well as kDLCPU devices
|
|
563
|
+
"""
|
|
564
|
+
rng = np.random.RandomState(0)
|
|
565
|
+
X = np.array(5 * rng.random_sample(data_shape), dtype=dtype)
|
|
566
|
+
|
|
567
|
+
X = ORDER_DICT[order](X)
|
|
568
|
+
|
|
569
|
+
X_df = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
570
|
+
X_tens = _OnlyDLTensor(X_df)
|
|
571
|
+
|
|
572
|
+
X_table = to_table(X_tens)
|
|
573
|
+
X_out = from_table(X_table)
|
|
574
|
+
print(X_table.shape, X_tens.data.shape)
|
|
575
|
+
# oneDAL table construction sets 1d arrays to 2d arrays with 1 col
|
|
576
|
+
# this is counter the numpy strategy, and requires numpy's squeeze
|
|
577
|
+
assert_allclose(np.squeeze(X), np.squeeze(X_out))
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
@pytest.mark.parametrize(
|
|
581
|
+
"dataframe,queue", get_dataframes_and_queues("numpy,dpctl,array_api", "cpu,gpu")
|
|
582
|
+
)
|
|
583
|
+
@pytest.mark.parametrize("order", ["F", "C"])
|
|
584
|
+
@pytest.mark.parametrize("data_shape", data_shapes)
|
|
585
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64, np.int32, np.int64])
|
|
586
|
+
def test_table___dlpack__(dataframe, queue, order, data_shape, dtype):
|
|
587
|
+
"""Test if __dlpack__ attribute can be properly consumed by other frameworks
|
|
588
|
+
This tests kDLOneAPI devices as well as kDLCPU devices.
|
|
589
|
+
"""
|
|
590
|
+
rng = np.random.RandomState(0)
|
|
591
|
+
X = np.array(5 * rng.random_sample(data_shape), dtype=dtype)
|
|
592
|
+
|
|
593
|
+
X = ORDER_DICT[order](X)
|
|
594
|
+
|
|
595
|
+
X_df = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
596
|
+
|
|
597
|
+
X_table = to_table(X_df)
|
|
598
|
+
if hasattr(X_df, "__dlpack_device__"):
|
|
599
|
+
assert X_df.__dlpack_device__() == X_table.__dlpack_device__()
|
|
600
|
+
|
|
601
|
+
if xp := getattr(X_df, "__array_namespace__", lambda: None)():
|
|
602
|
+
X_out = xp.from_dlpack(X_table)
|
|
603
|
+
X_temp = xp.asnumpy(X_out) if hasattr(xp, "asnumpy") else np.asarray(X)
|
|
604
|
+
if X_temp.dtype == X.dtype:
|
|
605
|
+
assert_array_equal(np.squeeze(X_temp), np.squeeze(X))
|
|
606
|
+
else:
|
|
607
|
+
assert_allclose(np.squeeze(X_temp), np.squeeze(X))
|
|
608
|
+
else:
|
|
609
|
+
# only some numpy versions support array_api and from_dlpack
|
|
610
|
+
pytest.skip(f"{dataframe} does not have an __array_namespace__ attribute")
|
|
611
|
+
|
|
612
|
+
# test capsule deletion, should have no impact on underlying memory
|
|
613
|
+
# important for testing ``dlpack::free_capsule``
|
|
614
|
+
capsule = X_table.__dlpack__()
|
|
615
|
+
assert_allclose(np.squeeze(from_table(X_table)), np.squeeze(X))
|
|
616
|
+
del capsule
|
|
617
|
+
gc.collect()
|
|
618
|
+
assert_allclose(np.squeeze(from_table(X_table)), np.squeeze(X))
|
|
619
|
+
|
|
620
|
+
|
|
621
|
+
@pytest.mark.skipif(
|
|
622
|
+
not hasattr(np, "from_dlpack"), reason="no dlpack support in installed numpy"
|
|
623
|
+
)
|
|
624
|
+
@pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues("dpctl", "cpu,gpu"))
|
|
625
|
+
@pytest.mark.parametrize("order", ["F", "C"])
|
|
626
|
+
@pytest.mark.parametrize("data_shape", data_shapes)
|
|
627
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64, np.int32, np.int64])
|
|
628
|
+
def test_table_convert_to_host_dlpack(dataframe, queue, order, data_shape, dtype):
|
|
629
|
+
"""Test if __dlpack__ attribute can be properly consumed by moving data
|
|
630
|
+
to host from a SYCL device.
|
|
631
|
+
"""
|
|
632
|
+
rng = np.random.RandomState(0)
|
|
633
|
+
X = np.array(5 * rng.random_sample(data_shape), dtype=dtype)
|
|
634
|
+
|
|
635
|
+
X = ORDER_DICT[order](X)
|
|
636
|
+
|
|
637
|
+
X_df = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
638
|
+
|
|
639
|
+
X_table = to_table(X_df)
|
|
640
|
+
# verify that it is on a kDLOneAPI device
|
|
641
|
+
assert X_df.__dlpack_device__() == X_table.__dlpack_device__()
|
|
642
|
+
|
|
643
|
+
# extract to numpy (which should move to host)
|
|
644
|
+
try:
|
|
645
|
+
X_out = np.from_dlpack(X_table)
|
|
646
|
+
except RuntimeError as e:
|
|
647
|
+
if "Unsupported device in DLTensor." in str(e):
|
|
648
|
+
pytest.skip("Numpy version cannot request device conversion")
|
|
649
|
+
else:
|
|
650
|
+
raise e
|
|
651
|
+
assert X_out.__dlpack_device__() != X_table.__dlpack_device__()
|
|
652
|
+
|
|
653
|
+
if X_out.dtype == X.dtype:
|
|
654
|
+
assert_array_equal(np.squeeze(X_out), np.squeeze(X))
|
|
655
|
+
else:
|
|
656
|
+
assert_allclose(np.squeeze(X_out), np.squeeze(X))
|
|
657
|
+
|
|
658
|
+
# verify that table immutability is gone and copy behavior has been followed
|
|
659
|
+
assert X_out.flags.writeable
|
|
660
|
+
|
|
661
|
+
|
|
662
|
+
@pytest.mark.parametrize("queue", get_queues())
|
|
663
|
+
def test_table_writable_dlpack(queue):
|
|
664
|
+
"""Test if __dlpack__ attribute can be properly consumed by moving data
|
|
665
|
+
to host from a SYCL device.
|
|
666
|
+
"""
|
|
667
|
+
xp = pytest.importorskip("dpctl.tensor")
|
|
668
|
+
X = xp.eye(5, 8, dtype=xp.float32, device=queue)
|
|
669
|
+
X.flags["W"] = False
|
|
670
|
+
X_table = to_table(X)
|
|
671
|
+
|
|
672
|
+
cpu_device = (backend.kDLCPU, 0)
|
|
673
|
+
# verify that it is on a kDLOneAPI device
|
|
674
|
+
assert X.__dlpack_device__() == X_table.__dlpack_device__()
|
|
675
|
+
assert X_table.__dlpack_device__() != cpu_device
|
|
676
|
+
|
|
677
|
+
# verify move to host
|
|
678
|
+
X_table.__dlpack__(dl_device=cpu_device)
|
|
679
|
+
# verify error is raised when copy=False
|
|
680
|
+
with pytest.raises(BufferError, match="Cannot transfer data to requested device"):
|
|
681
|
+
X_table.__dlpack__(dl_device=cpu_device, copy=False)
|
|
682
|
+
|
|
683
|
+
for copy_bool in [True, False]:
|
|
684
|
+
X_out = xp.from_dlpack(X_table, copy=copy_bool)
|
|
685
|
+
# verify that table immutability is gone and copy behavior has been followed
|
|
686
|
+
assert X_out.flags["W"] is copy_bool
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
# ==============================================================================
|
|
16
16
|
|
|
17
|
-
from .
|
|
17
|
+
from .incremental_pca import IncrementalPCA
|
|
18
|
+
from .pca import PCA
|
|
18
19
|
|
|
19
|
-
__all__ = ["
|
|
20
|
+
__all__ = ["IncrementalPCA", "PCA"]
|