From b6bd08acaa46dc2a2eb073633d8c22cc6249e071 Mon Sep 17 00:00:00 2001 From: Natalia Polina Date: Fri, 20 Sep 2024 10:32:12 -0700 Subject: [PATCH 01/11] Testing is adapted for cuda devices --- dpnp/dpnp_iface.py | 16 + dpnp/dpnp_iface_indexing.py | 3 + dpnp/dpnp_iface_libmath.py | 2 + dpnp/dpnp_iface_mathematical.py | 2 + dpnp/dpnp_iface_sorting.py | 2 + dpnp/dpnp_iface_statistics.py | 4 + tests/conftest.py | 11 + tests/skipped_tests_cuda.tbl | 820 ++++++++++++++++++++++++++++++++ tests/test_sycl_queue.py | 3 + 9 files changed, 863 insertions(+) create mode 100644 tests/skipped_tests_cuda.tbl diff --git a/dpnp/dpnp_iface.py b/dpnp/dpnp_iface.py index 62cd0683fe5..15802a470c6 100644 --- a/dpnp/dpnp_iface.py +++ b/dpnp/dpnp_iface.py @@ -72,6 +72,7 @@ "get_usm_ndarray_or_scalar", "is_supported_array_or_scalar", "is_supported_array_type", + "not_implemented_for_cuda_backend", "synchronize_array_data", ] @@ -800,6 +801,21 @@ def is_supported_array_type(a): return isinstance(a, (dpnp_array, dpt.usm_ndarray)) +def not_implemented_for_cuda_backend(obj): + """ + Raise NotImplementedError for cuda devices. + + Parameters + ---------- + obj : {SyclDevice, SyclQueue, dpnp.ndarray, usm_ndarray} + An input object with sycl_device property to check device backend. + + """ + sycl_device = getattr(obj, "sycl_device", None) + if sycl_device is not None and "cuda" in sycl_device.backend.name: + raise NotImplementedError("function not implemented for cuda backend") + + def synchronize_array_data(a): """ The dpctl interface was reworked to make asynchronous execution. diff --git a/dpnp/dpnp_iface_indexing.py b/dpnp/dpnp_iface_indexing.py index 3c94c7091ec..148e8b86f6c 100644 --- a/dpnp/dpnp_iface_indexing.py +++ b/dpnp/dpnp_iface_indexing.py @@ -173,6 +173,9 @@ def choose(x1, choices, out=None, mode="raise"): :obj:`dpnp.take_along_axis` : Preferable if choices is an array. """ + + dpnp.not_implemented_for_cuda_backend(x1) + x1_desc = dpnp.get_dpnp_descriptor(x1, copy_when_nondefault_queue=False) choices_list = [] diff --git a/dpnp/dpnp_iface_libmath.py b/dpnp/dpnp_iface_libmath.py index 82b86f3b9c5..b9e7e9daf69 100644 --- a/dpnp/dpnp_iface_libmath.py +++ b/dpnp/dpnp_iface_libmath.py @@ -78,6 +78,8 @@ def erf(in_array1): """ + dpnp.not_implemented_for_cuda_backend(in_array1) + x1_desc = dpnp.get_dpnp_descriptor( in_array1, copy_when_strides=False, copy_when_nondefault_queue=False ) diff --git a/dpnp/dpnp_iface_mathematical.py b/dpnp/dpnp_iface_mathematical.py index 443ad7c43da..d3809610518 100644 --- a/dpnp/dpnp_iface_mathematical.py +++ b/dpnp/dpnp_iface_mathematical.py @@ -2477,6 +2477,8 @@ def modf(x1, **kwargs): """ + dpnp.not_implemented_for_cuda_backend(x1) + x1_desc = dpnp.get_dpnp_descriptor(x1, copy_when_nondefault_queue=False) if x1_desc and not kwargs: return dpnp_modf(x1_desc) diff --git a/dpnp/dpnp_iface_sorting.py b/dpnp/dpnp_iface_sorting.py index c007def058b..1ae92bddf2b 100644 --- a/dpnp/dpnp_iface_sorting.py +++ b/dpnp/dpnp_iface_sorting.py @@ -174,6 +174,8 @@ def partition(x1, kth, axis=-1, kind="introselect", order=None): """ + dpnp.not_implemented_for_cuda_backend(x1) + x1_desc = dpnp.get_dpnp_descriptor(x1, copy_when_nondefault_queue=False) if x1_desc: if not isinstance(kth, int): diff --git a/dpnp/dpnp_iface_statistics.py b/dpnp/dpnp_iface_statistics.py index d663d9d1836..00bf5c47e72 100644 --- a/dpnp/dpnp_iface_statistics.py +++ b/dpnp/dpnp_iface_statistics.py @@ -371,6 +371,8 @@ def correlate(x1, x2, mode="valid"): """ + dpnp.not_implemented_for_cuda_backend(x1) + x1_desc = dpnp.get_dpnp_descriptor(x1, copy_when_nondefault_queue=False) x2_desc = dpnp.get_dpnp_descriptor(x2, copy_when_nondefault_queue=False) if x1_desc and x2_desc: @@ -655,6 +657,8 @@ def median(x1, axis=None, out=None, overwrite_input=False, keepdims=False): """ + dpnp.not_implemented_for_cuda_backend(x1) + x1_desc = dpnp.get_dpnp_descriptor(x1, copy_when_nondefault_queue=False) if x1_desc: if axis is not None: diff --git a/tests/conftest.py b/tests/conftest.py index db07c8d463e..a8b4c4e1dca 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -64,13 +64,20 @@ def pytest_collection_modifyitems(config, items): test_path, "skipped_tests_gpu_no_fp64.tbl" ) + # global skip file for cuda backend + test_exclude_file_cuda = os.path.join( + test_path, "skipped_tests_cuda.tbl" + ) + dev = dpctl.select_default_device() is_cpu = dev.is_cpu is_gpu_no_fp64 = not dev.has_aspect_fp64 + is_cuda = "cuda" in str(dev.backend.name) print("") print(f"DPNP current device is CPU: {is_cpu}") print(f"DPNP current device is GPU without fp64 support: {is_gpu_no_fp64}") + print(f"DPNP current device is GPU with cuda backend: {is_cuda}") print(f"DPNP version: {dpnp.__version__}, location: {dpnp}") print(f"NumPy version: {numpy.__version__}, location: {numpy}") print(f"Python version: {sys.version}") @@ -81,6 +88,10 @@ def pytest_collection_modifyitems(config, items): excluded_tests.extend( get_excluded_tests(test_exclude_file_gpu_no_fp64) ) + if is_cuda: + excluded_tests.extend( + get_excluded_tests(test_exclude_file_cuda) + ) else: excluded_tests.extend(get_excluded_tests(test_exclude_file)) diff --git a/tests/skipped_tests_cuda.tbl b/tests/skipped_tests_cuda.tbl new file mode 100644 index 00000000000..9762232f585 --- /dev/null +++ b/tests/skipped_tests_cuda.tbl @@ -0,0 +1,820 @@ +# FAILED +# fft +tests/test_fft.py::TestFftn::test_fftn[C-forward-None-complex64] +tests/test_fft.py::TestFftn::test_fftn[C-forward-None-complex128] +tests/test_fft.py::TestFftn::test_fftn[C-forward-axes2-complex64] +tests/test_fft.py::TestFftn::test_fftn[C-forward-axes2-complex128] +tests/test_fft.py::TestFftn::test_fftn[C-forward-axes3-complex64] +tests/test_fft.py::TestFftn::test_fftn[C-forward-axes3-complex128] +tests/test_fft.py::TestFftn::test_fftn[C-backward-None-complex64] +tests/test_fft.py::TestFftn::test_fftn[C-backward-None-complex128] +tests/test_fft.py::TestFftn::test_fftn[C-backward-axes2-complex64] +tests/test_fft.py::TestFftn::test_fftn[C-backward-axes2-complex128] +tests/test_fft.py::TestFftn::test_fftn[C-backward-axes3-complex64] +tests/test_fft.py::TestFftn::test_fftn[C-backward-axes3-complex128] +tests/test_fft.py::TestFftn::test_fftn[C-ortho-None-complex64] +tests/test_fft.py::TestFftn::test_fftn[C-ortho-None-complex128] +tests/test_fft.py::TestFftn::test_fftn[C-ortho-axes2-complex64] +tests/test_fft.py::TestFftn::test_fftn[C-ortho-axes2-complex128] +tests/test_fft.py::TestFftn::test_fftn[C-ortho-axes3-complex64] +tests/test_fft.py::TestFftn::test_fftn[C-ortho-axes3-complex128] +tests/test_fft.py::TestFftn::test_fftn[F-forward-None-complex64] +tests/test_fft.py::TestFftn::test_fftn[F-forward-None-complex128] +tests/test_fft.py::TestFftn::test_fftn[F-forward-axes1-complex64] +tests/test_fft.py::TestFftn::test_fftn[F-forward-axes1-complex128] +tests/test_fft.py::TestFftn::test_fftn[F-forward-axes3-complex64] +tests/test_fft.py::TestFftn::test_fftn[F-forward-axes3-complex128] +tests/test_fft.py::TestFftn::test_fftn[F-backward-None-complex64] +tests/test_fft.py::TestFftn::test_fftn[F-backward-None-complex128] +tests/test_fft.py::TestFftn::test_fftn[F-backward-axes1-complex64] +tests/test_fft.py::TestFftn::test_fftn[F-backward-axes1-complex128] +tests/test_fft.py::TestFftn::test_fftn[F-backward-axes3-complex64] +tests/test_fft.py::TestFftn::test_fftn[F-backward-axes3-complex128] +tests/test_fft.py::TestFftn::test_fftn[F-ortho-None-complex64] +tests/test_fft.py::TestFftn::test_fftn[F-ortho-None-complex128] +tests/test_fft.py::TestFftn::test_fftn[F-ortho-axes1-complex64] +tests/test_fft.py::TestFftn::test_fftn[F-ortho-axes1-complex128] +tests/test_fft.py::TestFftn::test_fftn[F-ortho-axes3-complex64] +tests/test_fft.py::TestFftn::test_fftn[F-ortho-axes3-complex128] +tests/test_fft.py::TestFftn::test_fftn_repeated_axes_with_s[s1-axes1] +tests/test_fft.py::TestFftn::test_fftn_out[s0-axes0] +tests/test_fft.py::TestFftn::test_fftn_out[s1-axes0] +tests/test_fft.py::TestFftn::test_fftn_out[s2-axes0] +tests/test_fft.py::TestFftn::test_fftn_out[s2-axes1] +tests/test_fft.py::TestFftn::test_fftn_out[s2-axes2] +tests/test_fft.py::TestRfftn::test_rfftn_out[s1-axes1] +tests/test_fft.py::TestRfftn::test_rfftn_out[s2-axes0] +tests/third_party/cupy/fft_tests/test_fft.py::TestFft2::test_fft2[_param_50_{axes=None, norm=None, s=None, shape=(2, 3, 4, 5)}] +tests/third_party/cupy/fft_tests/test_fft.py::TestFft2::test_fft2[_param_51_{axes=None, norm='backward', s=None, shape=(2, 3, 4, 5)}] +tests/third_party/cupy/fft_tests/test_fft.py::TestFft2::test_fft2[_param_52_{axes=None, norm='ortho', s=None, shape=(2, 3, 4, 5)}] +tests/third_party/cupy/fft_tests/test_fft.py::TestFft2::test_fft2[_param_53_{axes=None, norm='forward', s=None, shape=(2, 3, 4, 5)}] +tests/third_party/cupy/fft_tests/test_fft.py::TestFft2::test_ifft2[_param_50_{axes=None, norm=None, s=None, shape=(2, 3, 4, 5)}] +tests/third_party/cupy/fft_tests/test_fft.py::TestFft2::test_ifft2[_param_51_{axes=None, norm='backward', s=None, shape=(2, 3, 4, 5)}] +tests/third_party/cupy/fft_tests/test_fft.py::TestFft2::test_ifft2[_param_52_{axes=None, norm='ortho', s=None, shape=(2, 3, 4, 5)}] +tests/third_party/cupy/fft_tests/test_fft.py::TestFft2::test_ifft2[_param_53_{axes=None, norm='forward', s=None, shape=(2, 3, 4, 5)}] +tests/third_party/cupy/fft_tests/test_fft.py::TestFftn::test_fftn[_param_60_{axes=None, norm=None, s=None, shape=(2, 3, 4, 5)}] +tests/third_party/cupy/fft_tests/test_fft.py::TestFftn::test_fftn[_param_61_{axes=None, norm='backward', s=None, shape=(2, 3, 4, 5)}] +tests/third_party/cupy/fft_tests/test_fft.py::TestFftn::test_fftn[_param_62_{axes=None, norm='ortho', s=None, shape=(2, 3, 4, 5)}] +tests/third_party/cupy/fft_tests/test_fft.py::TestFftn::test_fftn[_param_63_{axes=None, norm='forward', s=None, shape=(2, 3, 4, 5)}] +tests/third_party/cupy/fft_tests/test_fft.py::TestFftn::test_ifftn[_param_60_{axes=None, norm=None, s=None, shape=(2, 3, 4, 5)}] +tests/third_party/cupy/fft_tests/test_fft.py::TestFftn::test_ifftn[_param_61_{axes=None, norm='backward', s=None, shape=(2, 3, 4, 5)}] +tests/third_party/cupy/fft_tests/test_fft.py::TestFftn::test_ifftn[_param_62_{axes=None, norm='ortho', s=None, shape=(2, 3, 4, 5)}] +tests/third_party/cupy/fft_tests/test_fft.py::TestFftn::test_ifftn[_param_63_{axes=None, norm='forward', s=None, shape=(2, 3, 4, 5)}] + +# std +tests/test_linalg.py::TestCond::test_cond_nan_input[-dpnp.inf] +tests/test_linalg.py::TestCond::test_cond_nan_input[-1] +tests/test_linalg.py::TestCond::test_cond_nan_input[1] +tests/test_linalg.py::TestCond::test_cond_nan_input[dpnp.inf] +tests/test_linalg.py::TestCond::test_cond_nan_input[fro] +tests/test_linalg.py::TestCond::test_cond_nan[-dpnp.inf] +tests/test_linalg.py::TestCond::test_cond_nan[-1] +tests/test_linalg.py::TestCond::test_cond_nan[1] +tests/test_linalg.py::TestCond::test_cond_nan[dpnp.inf] +tests/test_linalg.py::TestCond::test_cond_nan[fro] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape6-b_shape6-bool_] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape6-b_shape6-int32] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape6-b_shape6-int64] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape6-b_shape6-float32] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape6-b_shape6-float64] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape6-b_shape6-complex64] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape6-b_shape6-complex128] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape6-b_shape6-None] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape7-b_shape7-bool_] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape7-b_shape7-int32] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape7-b_shape7-int64] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape7-b_shape7-float32] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape7-b_shape7-float64] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape7-b_shape7-complex64] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape7-b_shape7-complex128] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape7-b_shape7-None] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape8-b_shape8-bool_] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape8-b_shape8-int32] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape8-b_shape8-int64] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape8-b_shape8-float32] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape8-b_shape8-float64] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape8-b_shape8-complex64] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape8-b_shape8-complex128] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape8-b_shape8-None] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None--2-bool_] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None--2-int32] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None--2-int64] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None--2-float32] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None--2-float64] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None--2-None] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None-2-bool_] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None-2-int32] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None-2-int64] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None-2-float32] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None-2-float64] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None-2-None] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None-"nuc"-bool_] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None-"nuc"-int32] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None-"nuc"-int64] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None-"nuc"-float32] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None-"nuc"-float64] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None-"nuc"-None] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None--2-bool_] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None--2-int32] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None--2-int64] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None--2-float32] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None--2-float64] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None--2-None] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None-2-bool_] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None-2-int32] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None-2-int64] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None-2-float32] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None-2-float64] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None-2-None] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None-"nuc"-bool_] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None-"nuc"-int32] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None-"nuc"-int64] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None-"nuc"-float32] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None-"nuc"-float64] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None-"nuc"-None] +tests/test_linalg.py::TestNorm::test_norm_2D_complex[True-None--2-complex64] +tests/test_linalg.py::TestNorm::test_norm_2D_complex[True-None--2-complex128] +tests/test_linalg.py::TestNorm::test_norm_2D_complex[True-None-2-complex64] +tests/test_linalg.py::TestNorm::test_norm_2D_complex[True-None-2-complex128] +tests/test_linalg.py::TestNorm::test_norm_2D_complex[True-None-"nuc"-complex64] +tests/test_linalg.py::TestNorm::test_norm_2D_complex[True-None-"nuc"-complex128] +tests/test_linalg.py::TestNorm::test_norm_2D_complex[False-None--2-complex64] +tests/test_linalg.py::TestNorm::test_norm_2D_complex[False-None--2-complex128] +tests/test_linalg.py::TestNorm::test_norm_2D_complex[False-None-2-complex64] +tests/test_linalg.py::TestNorm::test_norm_2D_complex[False-None-2-complex128] +tests/test_linalg.py::TestNorm::test_norm_2D_complex[False-None-"nuc"-complex64] +tests/test_linalg.py::TestNorm::test_norm_2D_complex[False-None-"nuc"-complex128] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)--2-bool_] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)--2-int32] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)--2-int64] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)--2-float32] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)--2-float64] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)--2-None] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-2-bool_] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-2-int32] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-2-int64] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-2-float32] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-2-float64] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-2-None] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-"nuc"-bool_] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-"nuc"-int32] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-"nuc"-int64] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-"nuc"-float32] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-"nuc"-float64] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-"nuc"-None] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)--2-bool_] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)--2-int32] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)--2-int64] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)--2-float32] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)--2-float64] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)--2-None] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-2-bool_] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-2-int32] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-2-int64] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-2-float32] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-2-float64] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-2-None] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-"nuc"-bool_] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-"nuc"-int32] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-"nuc"-int64] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-"nuc"-float32] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-"nuc"-float64] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-"nuc"-None] +tests/test_linalg.py::TestNorm::test_norm_ND_complex[True-(0, 1)--2-complex64] +tests/test_linalg.py::TestNorm::test_norm_ND_complex[True-(0, 1)--2-complex128] +tests/test_linalg.py::TestNorm::test_norm_ND_complex[True-(0, 1)-2-complex64] +tests/test_linalg.py::TestNorm::test_norm_ND_complex[True-(0, 1)-2-complex128] +tests/test_linalg.py::TestNorm::test_norm_ND_complex[True-(0, 1)-"nuc"-complex64] +tests/test_linalg.py::TestNorm::test_norm_ND_complex[True-(0, 1)-"nuc"-complex128] +tests/test_linalg.py::TestNorm::test_norm_ND_complex[False-(0, 1)--2-complex64] +tests/test_linalg.py::TestNorm::test_norm_ND_complex[False-(0, 1)--2-complex128] +tests/test_linalg.py::TestNorm::test_norm_ND_complex[False-(0, 1)-2-complex64] +tests/test_linalg.py::TestNorm::test_norm_ND_complex[False-(0, 1)-2-complex128] +tests/test_linalg.py::TestNorm::test_norm_ND_complex[False-(0, 1)-"nuc"-complex64] +tests/test_linalg.py::TestNorm::test_norm_ND_complex[False-(0, 1)-"nuc"-complex128] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)--2-bool_] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)--2-int32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)--2-int64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)--2-float32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)--2-float64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)--2-complex64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)--2-complex128] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)--2-None] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-2-bool_] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-2-int32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-2-int64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-2-float32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-2-float64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-2-complex64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-2-complex128] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-2-None] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-"nuc"-bool_] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-"nuc"-int32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-"nuc"-int64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-"nuc"-float32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-"nuc"-float64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-"nuc"-complex64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-"nuc"-complex128] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-"nuc"-None] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)--2-bool_] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)--2-int32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)--2-int64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)--2-float32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)--2-float64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)--2-complex64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)--2-complex128] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)--2-None] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-2-bool_] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-2-int32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-2-int64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-2-float32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-2-float64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-2-complex64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-2-complex128] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-2-None] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-"nuc"-bool_] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-"nuc"-int32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-"nuc"-int64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-"nuc"-float32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-"nuc"-float64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-"nuc"-complex64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-"nuc"-complex128] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-"nuc"-None] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)--2-bool_] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)--2-int32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)--2-int64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)--2-float32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)--2-float64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)--2-complex64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)--2-complex128] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)--2-None] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-2-bool_] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-2-int32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-2-int64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-2-float32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-2-float64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-2-complex64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-2-complex128] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-2-None] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-"nuc"-bool_] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-"nuc"-int32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-"nuc"-int64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-"nuc"-float32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-"nuc"-float64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-"nuc"-complex64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-"nuc"-complex128] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-"nuc"-None] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)--2-bool_] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)--2-int32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)--2-int64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)--2-float32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)--2-float64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)--2-complex64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)--2-complex128] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)--2-None] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-2-bool_] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-2-int32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-2-int64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-2-float32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-2-float64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-2-complex64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-2-complex128] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-2-None] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-"nuc"-bool_] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-"nuc"-int32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-"nuc"-int64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-"nuc"-float32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-"nuc"-float64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-"nuc"-complex64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-"nuc"-complex128] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-"nuc"-None] +tests/test_linalg.py::TestSvd::test_svd[(3,4)-int32] +tests/test_linalg.py::TestSvd::test_svd[(3,4)-int64] +tests/test_linalg.py::TestSvd::test_svd[(3,4)-float32] +tests/test_linalg.py::TestSvd::test_svd[(3,4)-float64] +tests/test_linalg.py::TestSvd::test_svd[(3,4)-complex64] +tests/test_linalg.py::TestSvd::test_svd[(3,4)-complex128] +tests/test_linalg.py::TestSvd::test_svd[(3,4)-None] +tests/test_linalg.py::TestPinv::test_pinv[(3, 4)-int32] +tests/test_linalg.py::TestPinv::test_pinv[(3, 4)-int64] +tests/test_linalg.py::TestPinv::test_pinv[(3, 4)-float32] +tests/test_linalg.py::TestPinv::test_pinv[(3, 4)-float64] +tests/test_linalg.py::TestPinv::test_pinv[(3, 4)-complex64] +tests/test_linalg.py::TestPinv::test_pinv[(3, 4)-complex128] +tests/test_linalg.py::TestPinv::test_pinv[(3, 4)-None] +tests/test_linalg.py::TestPinv::test_pinv[(2, 2, 4)-int32] +tests/test_linalg.py::TestPinv::test_pinv[(2, 2, 4)-int64] +tests/test_linalg.py::TestPinv::test_pinv[(2, 2, 4)-float32] +tests/test_linalg.py::TestPinv::test_pinv[(2, 2, 4)-float64] +tests/test_linalg.py::TestPinv::test_pinv[(2, 2, 4)-complex64] +tests/test_linalg.py::TestPinv::test_pinv[(2, 2, 4)-complex128] +tests/test_linalg.py::TestPinv::test_pinv[(2, 2, 4)-None] +tests/test_usm_type.py::test_cond[-dpnp.inf-device] +tests/test_usm_type.py::test_cond[-dpnp.inf-shared] +tests/test_usm_type.py::test_cond[-dpnp.inf-host] +tests/test_usm_type.py::test_cond[-1-device] +tests/test_usm_type.py::test_cond[-1-shared] +tests/test_usm_type.py::test_cond[-1-host] +tests/test_usm_type.py::test_cond[1-device] +tests/test_usm_type.py::test_cond[1-shared] +tests/test_usm_type.py::test_cond[1-host] +tests/test_usm_type.py::test_cond[dpnp.inf-device] +tests/test_usm_type.py::test_cond[dpnp.inf-shared] +tests/test_usm_type.py::test_cond[dpnp.inf-host] +tests/test_usm_type.py::test_cond[fro-device] +tests/test_usm_type.py::test_cond[fro-shared] +tests/test_usm_type.py::test_cond[fro-host] +tests/test_sycl_queue.py::test_norm[(0, 1)--2-cuda:gpu:0] +tests/test_sycl_queue.py::test_norm[(0, 1)-2-cuda:gpu:0] +tests/test_sycl_queue.py::test_norm[(0, 1)-"nuc"-cuda:gpu:0] +tests/test_sycl_queue.py::test_norm[(-2, -1)--2-cuda:gpu:0] +tests/test_sycl_queue.py::test_norm[(-2, -1)-2-cuda:gpu:0] +tests/test_sycl_queue.py::test_norm[(-2, -1)-"nuc"-cuda:gpu:0] +tests/test_sycl_queue.py::test_pinv[cuda:gpu:0-(2, 2, 3)] +tests/test_sycl_queue.py::test_pinv[cuda:gpu:0-(2, 2, 3), rcond_as_array] +tests/third_party/cupy/linalg_tests/test_decomposition.py::TestSVD_param_0_{full_matrices=True}::test_svd_rank2 +tests/third_party/cupy/linalg_tests/test_decomposition.py::TestSVD_param_0_{full_matrices=True}::test_svd_rank2_no_uv +tests/third_party/cupy/linalg_tests/test_decomposition.py::TestSVD_param_0_{full_matrices=True}::test_svd_rank3 +tests/third_party/cupy/linalg_tests/test_decomposition.py::TestSVD_param_0_{full_matrices=True}::test_svd_rank3_loop +tests/third_party/cupy/linalg_tests/test_decomposition.py::TestSVD_param_0_{full_matrices=True}::test_svd_rank3_no_uv +tests/third_party/cupy/linalg_tests/test_decomposition.py::TestSVD_param_0_{full_matrices=True}::test_svd_rank3_no_uv_loop +tests/third_party/cupy/linalg_tests/test_decomposition.py::TestSVD_param_0_{full_matrices=True}::test_svd_rank4 +tests/third_party/cupy/linalg_tests/test_decomposition.py::TestSVD_param_0_{full_matrices=True}::test_svd_rank4_loop +tests/third_party/cupy/linalg_tests/test_decomposition.py::TestSVD_param_0_{full_matrices=True}::test_svd_rank4_no_uv +tests/third_party/cupy/linalg_tests/test_decomposition.py::TestSVD_param_0_{full_matrices=True}::test_svd_rank4_no_uv_loop +tests/third_party/cupy/linalg_tests/test_decomposition.py::TestSVD_param_1_{full_matrices=False}::test_svd_rank2 +tests/third_party/cupy/linalg_tests/test_decomposition.py::TestSVD_param_1_{full_matrices=False}::test_svd_rank2_no_uv +tests/third_party/cupy/linalg_tests/test_decomposition.py::TestSVD_param_1_{full_matrices=False}::test_svd_rank3 +tests/third_party/cupy/linalg_tests/test_decomposition.py::TestSVD_param_1_{full_matrices=False}::test_svd_rank3_loop +tests/third_party/cupy/linalg_tests/test_decomposition.py::TestSVD_param_1_{full_matrices=False}::test_svd_rank3_no_uv +tests/third_party/cupy/linalg_tests/test_decomposition.py::TestSVD_param_1_{full_matrices=False}::test_svd_rank3_no_uv_loop +tests/third_party/cupy/linalg_tests/test_decomposition.py::TestSVD_param_1_{full_matrices=False}::test_svd_rank4 +tests/third_party/cupy/linalg_tests/test_decomposition.py::TestSVD_param_1_{full_matrices=False}::test_svd_rank4_loop +tests/third_party/cupy/linalg_tests/test_decomposition.py::TestSVD_param_1_{full_matrices=False}::test_svd_rank4_no_uv +tests/third_party/cupy/linalg_tests/test_decomposition.py::TestSVD_param_1_{full_matrices=False}::test_svd_rank4_no_uv_loop +tests/third_party/cupy/linalg_tests/test_norms.py::TestNorm_param_66_{axis=(0, 1), keepdims=True, ord=-2, shape=(1, 2)}::test_norm +tests/third_party/cupy/linalg_tests/test_norms.py::TestNorm_param_72_{axis=(0, 1), keepdims=True, ord=2, shape=(1, 2)}::test_norm +tests/third_party/cupy/linalg_tests/test_norms.py::TestNorm_param_78_{axis=(0, 1), keepdims=True, ord='nuc', shape=(1, 2)}::test_norm +tests/third_party/cupy/linalg_tests/test_norms.py::TestNorm_param_82_{axis=(0, 1), keepdims=False, ord=-2, shape=(1, 2)}::test_norm +tests/third_party/cupy/linalg_tests/test_norms.py::TestNorm_param_88_{axis=(0, 1), keepdims=False, ord=2, shape=(1, 2)}::test_norm +tests/third_party/cupy/linalg_tests/test_norms.py::TestNorm_param_94_{axis=(0, 1), keepdims=False, ord='nuc', shape=(1, 2)}::test_norm +tests/third_party/cupy/linalg_tests/test_norms.py::TestNorm_param_98_{axis=None, keepdims=True, ord=-2, shape=(1, 2)}::test_norm +tests/third_party/cupy/linalg_tests/test_norms.py::TestNorm_param_104_{axis=None, keepdims=True, ord=2, shape=(1, 2)}::test_norm +tests/third_party/cupy/linalg_tests/test_norms.py::TestNorm_param_110_{axis=None, keepdims=True, ord='nuc', shape=(1, 2)}::test_norm +tests/third_party/cupy/linalg_tests/test_norms.py::TestNorm_param_114_{axis=None, keepdims=False, ord=-2, shape=(1, 2)}::test_norm +tests/third_party/cupy/linalg_tests/test_norms.py::TestNorm_param_120_{axis=None, keepdims=False, ord=2, shape=(1, 2)}::test_norm +tests/third_party/cupy/linalg_tests/test_norms.py::TestNorm_param_126_{axis=None, keepdims=False, ord='nuc', shape=(1, 2)}::test_norm +tests/third_party/cupy/linalg_tests/test_solve.py::TestPinv::test_pinv +tests/third_party/cupy/linalg_tests/test_solve.py::TestPinv::test_pinv_batched +tests/third_party/cupy/linalg_tests/test_solve.py::TestPinv::test_pinv_batched_vector_rcond +tests/third_party/cupy/linalg_tests/test_solve.py::TestLstsq::test_lstsq_solutions + +# matmul +tests/third_party/cupy/math_tests/test_matmul.py::TestMatmulIntegralLargeBatch::test_cupy_matmul[shape10-shape20] +tests/third_party/cupy/math_tests/test_matmul.py::TestMatmulIntegralLargeBatch::test_cupy_matmul[shape11-shape21] +tests/third_party/cupy/math_tests/test_matmul.py::TestMatmulIntegralLargeBatch::test_operator_matmul[shape10-shape20] +tests/third_party/cupy/math_tests/test_matmul.py::TestMatmulIntegralLargeBatch::test_operator_matmul[shape11-shape21] + + +# NotImplementedError +# modf +tests/test_arithmetic.py::TestArithmetic::test_modf_part1 +tests/test_arithmetic.py::TestArithmetic::test_modf_part2 +tests/test_umath.py::test_umaths[('modf', 'f')] +tests/test_umath.py::test_umaths[('modf', 'd')] +tests/third_party/cupy/math_tests/test_arithmetic.py::TestArithmeticModf::test_modf +tests/test_sycl_queue.py::test_modf[cuda:gpu:0] + +# partition +tests/test_sort.py::test_partition[[3, 4, 2, 1]-bool_-0] +tests/test_sort.py::test_partition[[3, 4, 2, 1]-bool_-1] +tests/test_sort.py::test_partition[[3, 4, 2, 1]-int32-0] +tests/test_sort.py::test_partition[[3, 4, 2, 1]-int32-1] +tests/test_sort.py::test_partition[[3, 4, 2, 1]-int64-0] +tests/test_sort.py::test_partition[[3, 4, 2, 1]-int64-1] +tests/test_sort.py::test_partition[[3, 4, 2, 1]-float32-0] +tests/test_sort.py::test_partition[[3, 4, 2, 1]-float32-1] +tests/test_sort.py::test_partition[[3, 4, 2, 1]-float64-0] +tests/test_sort.py::test_partition[[3, 4, 2, 1]-float64-1] +tests/test_sort.py::test_partition[[3, 4, 2, 1]-complex64-0] +tests/test_sort.py::test_partition[[3, 4, 2, 1]-complex64-1] +tests/test_sort.py::test_partition[[3, 4, 2, 1]-complex128-0] +tests/test_sort.py::test_partition[[3, 4, 2, 1]-complex128-1] +tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-bool_-0] +tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-bool_-1] +tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-int32-0] +tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-int32-1] +tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-int64-0] +tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-int64-1] +tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-float32-0] +tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-float32-1] +tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-float64-0] +tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-float64-1] +tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-complex64-0] +tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-complex64-1] +tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-complex128-0] +tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-complex128-1] +tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-bool_-0] +tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-bool_-1] +tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-int32-0] +tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-int32-1] +tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-int64-0] +tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-int64-1] +tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-float32-0] +tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-float32-1] +tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-float64-0] +tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-float64-1] +tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-complex64-0] +tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-complex64-1] +tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-complex128-0] +tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-complex128-1] +tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-bool_-0] +tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-bool_-1] +tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-int32-0] +tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-int32-1] +tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-int64-0] +tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-int64-1] +tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-float32-0] +tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-float32-1] +tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-float64-0] +tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-float64-1] +tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-complex64-0] +tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-complex64-1] +tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-complex128-0] +tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-complex128-1] +tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-bool_-0] +tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-bool_-1] +tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-int32-0] +tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-int32-1] +tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-int64-0] +tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-int64-1] +tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-float32-0] +tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-float32-1] +tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-float64-0] +tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-float64-1] +tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-complex64-0] +tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-complex64-1] +tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-complex128-0] +tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-complex128-1] +tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-bool_-0] +tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-bool_-1] +tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-int32-0] +tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-int32-1] +tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-int64-0] +tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-int64-1] +tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-float32-0] +tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-float32-1] +tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-float64-0] +tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-float64-1] +tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-complex64-0] +tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-complex64-1] +tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-complex128-0] +tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-complex128-1] +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_axis +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_invalid_axis1 +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_invalid_axis2 +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_invalid_kth +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_invalid_negative_axis1 +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_invalid_negative_axis2 +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_invalid_negative_kth +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_negative_axis +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_negative_kth +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_non_contiguous +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_one_dim +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_sequence_kth +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_zero_dim +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_axis +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_invalid_axis1 +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_invalid_axis2 +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_invalid_kth +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_invalid_negative_axis1 +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_invalid_negative_axis2 +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_invalid_negative_kth +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_negative_axis +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_negative_kth +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_non_contiguous +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_one_dim +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_sequence_kth +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_zero_dim +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_axis +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_invalid_axis1 +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_invalid_axis2 +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_invalid_kth +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_invalid_negative_axis1 +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_invalid_negative_axis2 +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_invalid_negative_kth +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_negative_axis +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_negative_kth +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_non_contiguous +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_none_axis +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_one_dim +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_sequence_kth +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_zero_dim +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_axis +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_invalid_axis1 +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_invalid_axis2 +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_invalid_kth +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_invalid_negative_axis1 +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_invalid_negative_axis2 +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_invalid_negative_kth +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_negative_axis +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_negative_kth +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_non_contiguous +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_none_axis +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_one_dim +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_sequence_kth +tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_zero_dim + +# erf +tests/test_special.py::test_erf +tests/test_special.py::test_erf_fallback +tests/test_strides.py::test_strides_erf[(10,)-int32] +tests/test_strides.py::test_strides_erf[(10,)-int64] +tests/test_strides.py::test_strides_erf[(10,)-float32] +tests/test_strides.py::test_strides_erf[(10,)-float64] +tests/test_strides.py::test_strides_erf[(10,)-None] + +# median +tests/test_statistics.py::test_median[2-int32] +tests/test_statistics.py::test_median[2-int64] +tests/test_statistics.py::test_median[2-float32] +tests/test_statistics.py::test_median[2-float64] +tests/test_statistics.py::test_median[4-int32] +tests/test_statistics.py::test_median[4-int64] +tests/test_statistics.py::test_median[4-float32] +tests/test_statistics.py::test_median[4-float64] +tests/test_statistics.py::test_median[8-int32] +tests/test_statistics.py::test_median[8-int64] +tests/test_statistics.py::test_median[8-float32] +tests/test_statistics.py::test_median[8-float64] +tests/test_statistics.py::test_median[16-int32] +tests/test_statistics.py::test_median[16-int64] +tests/test_statistics.py::test_median[16-float32] +tests/test_statistics.py::test_median[16-float64] +tests/test_statistics.py::test_median[3-int32] +tests/test_statistics.py::test_median[3-int64] +tests/test_statistics.py::test_median[3-float32] +tests/test_statistics.py::test_median[3-float64] +tests/test_statistics.py::test_median[9-int32] +tests/test_statistics.py::test_median[9-int64] +tests/test_statistics.py::test_median[9-float32] +tests/test_statistics.py::test_median[9-float64] +tests/test_statistics.py::test_median[27-int32] +tests/test_statistics.py::test_median[27-int64] +tests/test_statistics.py::test_median[27-float32] +tests/test_statistics.py::test_median[27-float64] +tests/test_statistics.py::test_median[81-int32] +tests/test_statistics.py::test_median[81-int64] +tests/test_statistics.py::test_median[81-float32] +tests/test_statistics.py::test_median[81-float64] +tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedian::test_median_noaxis +tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedian::test_median_axis1 +tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedian::test_median_axis2 +tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedian::test_median_overwrite_input +tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedian::test_median_keepdims_axis1 +tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedian::test_median_keepdims_noaxis +tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedian::test_median_invalid_axis +tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedianAxis::test_median_axis_sequence[_param_0_{axis=(0, 1), keepdims=True, shape=(3, 4, 5)}] +tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedianAxis::test_median_axis_sequence[_param_1_{axis=(0, 1), keepdims=False, shape=(3, 4, 5)}] +tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedianAxis::test_median_axis_sequence[_param_2_{axis=(0, -1), keepdims=True, shape=(3, 4, 5)}] +tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedianAxis::test_median_axis_sequence[_param_3_{axis=(0, -1), keepdims=False, shape=(3, 4, 5)}] +tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedianAxis::test_median_axis_sequence[_param_4_{axis=(1, 2), keepdims=True, shape=(3, 4, 5)}] +tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedianAxis::test_median_axis_sequence[_param_5_{axis=(1, 2), keepdims=False, shape=(3, 4, 5)}] +tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedianAxis::test_median_axis_sequence[_param_6_{axis=(1,), keepdims=True, shape=(3, 4, 5)}] +tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedianAxis::test_median_axis_sequence[_param_7_{axis=(1,), keepdims=False, shape=(3, 4, 5)}] + +# choose +tests/third_party/cupy/indexing_tests/test_indexing.py::TestChoose::test_choose +tests/third_party/cupy/indexing_tests/test_indexing.py::TestChoose::test_choose_broadcast +tests/third_party/cupy/indexing_tests/test_indexing.py::TestChoose::test_choose_broadcast2 +tests/third_party/cupy/indexing_tests/test_indexing.py::TestChoose::test_choose_broadcast_fail +tests/third_party/cupy/indexing_tests/test_indexing.py::TestChoose::test_choose_clip +tests/third_party/cupy/indexing_tests/test_indexing.py::TestChoose::test_choose_wrap +tests/third_party/cupy/indexing_tests/test_indexing.py::TestChoose::test_raise +tests/third_party/cupy/indexing_tests/test_indexing.py::TestChoose::test_unknown_clip + +# correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_0_{mode='valid', shape1=(5,), shape2=(5,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_1_{mode='valid', shape1=(5,), shape2=(6,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_2_{mode='valid', shape1=(5,), shape2=(20,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_3_{mode='valid', shape1=(5,), shape2=(21,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_4_{mode='valid', shape1=(6,), shape2=(5,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_5_{mode='valid', shape1=(6,), shape2=(6,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_6_{mode='valid', shape1=(6,), shape2=(20,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_7_{mode='valid', shape1=(6,), shape2=(21,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_8_{mode='valid', shape1=(20,), shape2=(5,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_9_{mode='valid', shape1=(20,), shape2=(6,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_10_{mode='valid', shape1=(20,), shape2=(20,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_11_{mode='valid', shape1=(20,), shape2=(21,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_12_{mode='valid', shape1=(21,), shape2=(5,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_13_{mode='valid', shape1=(21,), shape2=(6,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_14_{mode='valid', shape1=(21,), shape2=(20,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_15_{mode='valid', shape1=(21,), shape2=(21,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_16_{mode='same', shape1=(5,), shape2=(5,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_17_{mode='same', shape1=(5,), shape2=(6,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_18_{mode='same', shape1=(5,), shape2=(20,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_19_{mode='same', shape1=(5,), shape2=(21,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_20_{mode='same', shape1=(6,), shape2=(5,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_21_{mode='same', shape1=(6,), shape2=(6,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_22_{mode='same', shape1=(6,), shape2=(20,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_23_{mode='same', shape1=(6,), shape2=(21,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_24_{mode='same', shape1=(20,), shape2=(5,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_25_{mode='same', shape1=(20,), shape2=(6,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_26_{mode='same', shape1=(20,), shape2=(20,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_27_{mode='same', shape1=(20,), shape2=(21,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_28_{mode='same', shape1=(21,), shape2=(5,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_29_{mode='same', shape1=(21,), shape2=(6,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_30_{mode='same', shape1=(21,), shape2=(20,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_31_{mode='same', shape1=(21,), shape2=(21,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_32_{mode='full', shape1=(5,), shape2=(5,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_33_{mode='full', shape1=(5,), shape2=(6,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_34_{mode='full', shape1=(5,), shape2=(20,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_35_{mode='full', shape1=(5,), shape2=(21,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_36_{mode='full', shape1=(6,), shape2=(5,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_37_{mode='full', shape1=(6,), shape2=(6,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_38_{mode='full', shape1=(6,), shape2=(20,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_39_{mode='full', shape1=(6,), shape2=(21,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_40_{mode='full', shape1=(20,), shape2=(5,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_41_{mode='full', shape1=(20,), shape2=(6,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_42_{mode='full', shape1=(20,), shape2=(20,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_43_{mode='full', shape1=(20,), shape2=(21,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_44_{mode='full', shape1=(21,), shape2=(5,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_45_{mode='full', shape1=(21,), shape2=(6,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_46_{mode='full', shape1=(21,), shape2=(20,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_47_{mode='full', shape1=(21,), shape2=(21,)}::test_correlate +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelate_param_0_{mode='valid'}::test_correlate_diff_types +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelate_param_0_{mode='valid'}::test_correlate_large_non_contiguous +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelate_param_0_{mode='valid'}::test_correlate_non_contiguous +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelate_param_1_{mode='full'}::test_correlate_diff_types +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelate_param_1_{mode='full'}::test_correlate_large_non_contiguous +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelate_param_1_{mode='full'}::test_correlate_non_contiguous +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelate_param_2_{mode='same'}::test_correlate_diff_types +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelate_param_2_{mode='same'}::test_correlate_large_non_contiguous +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelate_param_2_{mode='same'}::test_correlate_non_contiguous +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateInvalid_param_0_{mode='valid'}::test_correlate_empty +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateInvalid_param_0_{mode='valid'}::test_correlate_ndim +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateInvalid_param_0_{mode='valid'}::test_correlate_zero_dim +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateInvalid_param_1_{mode='same'}::test_correlate_empty +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateInvalid_param_1_{mode='same'}::test_correlate_ndim +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateInvalid_param_1_{mode='same'}::test_correlate_zero_dim +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateInvalid_param_2_{mode='full'}::test_correlate_empty +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateInvalid_param_2_{mode='full'}::test_correlate_ndim +tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateInvalid_param_2_{mode='full'}::test_correlate_zero_dim + +#random +tests/test_random.py::test_input_size[chisquare] +tests/test_random.py::test_input_shape[chisquare] +tests/test_random.py::test_seed[random] +tests/test_random.py::test_seed[random_sample] +tests/test_random.py::test_randn_normal_distribution +tests/test_random.py::TestDistributionsBeta::test_moments +tests/test_random.py::TestDistributionsBeta::test_seed +tests/test_random.py::TestDistributionsBinomial::test_moments +tests/test_random.py::TestDistributionsBinomial::test_seed +tests/test_random.py::TestDistributionsChisquare::test_seed +tests/test_random.py::TestDistributionsExponential::test_seed +tests/test_random.py::TestDistributionsF::test_moments +tests/test_random.py::TestDistributionsF::test_seed +tests/test_random.py::TestDistributionsGamma::test_moments +tests/test_random.py::TestDistributionsGamma::test_seed +tests/test_random.py::TestDistributionsGeometric::test_moments +tests/test_random.py::TestDistributionsGeometric::test_seed +tests/test_random.py::TestDistributionsGumbel::test_moments +tests/test_random.py::TestDistributionsGumbel::test_seed +tests/test_random.py::TestDistributionsHypergeometric::test_moments +tests/test_random.py::TestDistributionsHypergeometric::test_seed +tests/test_random.py::TestDistributionsLaplace::test_moments +tests/test_random.py::TestDistributionsLaplace::test_seed +tests/test_random.py::TestDistributionsLogistic::test_moments +tests/test_random.py::TestDistributionsLogistic::test_seed +tests/test_random.py::TestDistributionsLognormal::test_moments +tests/test_random.py::TestDistributionsLognormal::test_seed +tests/test_random.py::TestDistributionsMultinomial::test_seed1 +tests/test_random.py::TestDistributionsNegativeBinomial::test_seed +tests/test_random.py::TestDistributionsNormal::test_moments +tests/test_random.py::TestDistributionsNoncentralChisquare::test_moments[df_grt_1] +tests/test_random.py::TestDistributionsNoncentralChisquare::test_moments[df_eq_1] +tests/test_random.py::TestDistributionsNoncentralChisquare::test_moments[df_less_1] +tests/test_random.py::TestDistributionsNoncentralChisquare::test_seed[df_grt_1] +tests/test_random.py::TestDistributionsNoncentralChisquare::test_seed[df_eq_1] +tests/test_random.py::TestDistributionsNoncentralChisquare::test_seed[df_less_1] +tests/test_random.py::TestDistributionsPareto::test_moments +tests/test_random.py::TestDistributionsPareto::test_seed +tests/test_random.py::TestDistributionsPoisson::test_moments +tests/test_random.py::TestDistributionsPoisson::test_seed +tests/test_random.py::TestDistributionsPower::test_moments +tests/test_random.py::TestDistributionsPower::test_seed +tests/test_random.py::TestDistributionsRayleigh::test_moments +tests/test_random.py::TestDistributionsRayleigh::test_seed +tests/test_random.py::TestDistributionsStandardCauchy::test_seed +tests/test_random.py::TestDistributionsStandardExponential::test_moments +tests/test_random.py::TestDistributionsStandardExponential::test_seed +tests/test_random.py::TestDistributionsStandardGamma::test_moments +tests/test_random.py::TestDistributionsStandardNormal::test_moments +tests/test_random.py::TestDistributionsStandardT::test_moments +tests/test_random.py::TestDistributionsStandardT::test_seed +tests/test_random.py::TestDistributionsTriangular::test_moments +tests/test_random.py::TestDistributionsTriangular::test_seed +tests/test_random.py::TestDistributionsUniform::test_moments +tests/test_random.py::TestDistributionsVonmises::test_moments[large_kappa] +tests/test_random.py::TestDistributionsVonmises::test_moments[small_kappa] +tests/test_random.py::TestDistributionsVonmises::test_seed[large_kappa] +tests/test_random.py::TestDistributionsVonmises::test_seed[small_kappa] +tests/test_random.py::TestDistributionsWald::test_moments +tests/test_random.py::TestDistributionsWald::test_seed +tests/test_random.py::TestDistributionsWeibull::test_seed +tests/test_random.py::TestDistributionsZipf::test_seed +tests/test_random.py::TestPermutationsTestShuffle::test_shuffle1[lambda x: dpnp.array([])] +tests/test_random.py::TestPermutationsTestShuffle::test_shuffle1[lambda x: dpnp.astype(dpnp.asarray(x), dpnp.float32)] +tests/test_random.py::TestPermutationsTestShuffle::test_shuffle1[lambda x: dpnp.asarray([[i, i] for i in x])] +tests/test_random_state.py::TestNormal::test_distr[host-float32] +tests/test_random_state.py::TestNormal::test_distr[host-float64] +tests/test_random_state.py::TestNormal::test_distr[host-None] +tests/test_random_state.py::TestNormal::test_distr[device-float32] +tests/test_random_state.py::TestNormal::test_distr[device-float64] +tests/test_random_state.py::TestNormal::test_distr[device-None] +tests/test_random_state.py::TestNormal::test_distr[shared-float32] +tests/test_random_state.py::TestNormal::test_distr[shared-float64] +tests/test_random_state.py::TestNormal::test_distr[shared-None] +tests/test_random_state.py::TestNormal::test_inf_loc[numpy.inf] +tests/test_random_state.py::TestNormal::test_inf_loc[-numpy.inf] +tests/test_random_state.py::TestNormal::test_inf_loc[nextafter(max, 0)] +tests/test_random_state.py::TestNormal::test_inf_loc[nextafter(min, 0)] +tests/test_random_state.py::TestNormal::test_inf_scale +tests/test_random_state.py::TestNormal::test_inf_loc_scale[numpy.inf] +tests/test_random_state.py::TestNormal::test_inf_loc_scale[-numpy.inf] +tests/test_random_state.py::TestRand::test_distr[host] +tests/test_random_state.py::TestRand::test_distr[device] +tests/test_random_state.py::TestRand::test_distr[shared] +tests/test_random_state.py::TestRandInt::test_distr[host-int] +tests/test_random_state.py::TestRandInt::test_distr[host-dpnp.int32] +tests/test_random_state.py::TestRandInt::test_distr[device-int] +tests/test_random_state.py::TestRandInt::test_distr[device-dpnp.int32] +tests/test_random_state.py::TestRandInt::test_distr[shared-int] +tests/test_random_state.py::TestRandInt::test_distr[shared-dpnp.int32] +tests/test_random_state.py::TestRandInt::test_float_bounds +tests/test_random_state.py::TestRandInt::test_negative_bounds +tests/test_random_state.py::TestRandInt::test_negative_interval +tests/test_random_state.py::TestRandInt::test_rng_zero_and_extremes +tests/test_random_state.py::TestRandInt::test_in_bounds_fuzz +tests/test_random_state.py::TestRandN::test_distr[host] +tests/test_random_state.py::TestRandN::test_distr[device] +tests/test_random_state.py::TestRandN::test_distr[shared] +tests/test_random_state.py::TestStandardNormal::test_distr[host] +tests/test_random_state.py::TestStandardNormal::test_distr[device] +tests/test_random_state.py::TestStandardNormal::test_distr[shared] +tests/test_random_state.py::TestRandSample::test_distr[host] +tests/test_random_state.py::TestRandSample::test_distr[device] +tests/test_random_state.py::TestRandSample::test_distr[shared] +tests/test_random_state.py::TestUniform::test_distr[host-float32-(low, high)=[1.23, 10.54]] +tests/test_random_state.py::TestUniform::test_distr[host-float32-(low, high)=[10.54, 1.23]] +tests/test_random_state.py::TestUniform::test_distr[host-float64-(low, high)=[1.23, 10.54]] +tests/test_random_state.py::TestUniform::test_distr[host-float64-(low, high)=[10.54, 1.23]] +tests/test_random_state.py::TestUniform::test_distr[host-int32-(low, high)=[1.23, 10.54]] +tests/test_random_state.py::TestUniform::test_distr[host-int32-(low, high)=[10.54, 1.23]] +tests/test_random_state.py::TestUniform::test_distr[host-None-(low, high)=[1.23, 10.54]] +tests/test_random_state.py::TestUniform::test_distr[host-None-(low, high)=[10.54, 1.23]] +tests/test_random_state.py::TestUniform::test_distr[device-float32-(low, high)=[1.23, 10.54]] +tests/test_random_state.py::TestUniform::test_distr[device-float32-(low, high)=[10.54, 1.23]] +tests/test_random_state.py::TestUniform::test_distr[device-float64-(low, high)=[1.23, 10.54]] +tests/test_random_state.py::TestUniform::test_distr[device-float64-(low, high)=[10.54, 1.23]] +tests/test_random_state.py::TestUniform::test_distr[device-int32-(low, high)=[1.23, 10.54]] +tests/test_random_state.py::TestUniform::test_distr[device-int32-(low, high)=[10.54, 1.23]] +tests/test_random_state.py::TestUniform::test_distr[device-None-(low, high)=[1.23, 10.54]] +tests/test_random_state.py::TestUniform::test_distr[device-None-(low, high)=[10.54, 1.23]] +tests/test_random_state.py::TestUniform::test_distr[shared-float32-(low, high)=[1.23, 10.54]] +tests/test_random_state.py::TestUniform::test_distr[shared-float32-(low, high)=[10.54, 1.23]] +tests/test_random_state.py::TestUniform::test_distr[shared-float64-(low, high)=[1.23, 10.54]] +tests/test_random_state.py::TestUniform::test_distr[shared-float64-(low, high)=[10.54, 1.23]] +tests/test_random_state.py::TestUniform::test_distr[shared-int32-(low, high)=[1.23, 10.54]] +tests/test_random_state.py::TestUniform::test_distr[shared-int32-(low, high)=[10.54, 1.23]] +tests/test_random_state.py::TestUniform::test_distr[shared-None-(low, high)=[1.23, 10.54]] +tests/test_random_state.py::TestUniform::test_distr[shared-None-(low, high)=[10.54, 1.23]] +tests/third_party/cupy/random_tests/test_distributions.py::TestDistributionsStandardCauchy_param_0_{shape=(4, 3, 2)}::test_standard_cauchy +tests/third_party/cupy/random_tests/test_distributions.py::TestDistributionsStandardCauchy_param_1_{shape=(3, 2)}::test_standard_cauchy +tests/third_party/cupy/random_tests/test_distributions.py::TestDistributionsStandardExponential_param_0_{shape=(4, 3, 2)}::test_standard_exponential +tests/third_party/cupy/random_tests/test_distributions.py::TestDistributionsStandardExponential_param_1_{shape=(3, 2)}::test_standard_exponential +tests/third_party/cupy/random_tests/test_sample.py::TestRandint::test_lo_hi_nonrandom +tests/third_party/cupy/random_tests/test_sample.py::TestRandint2::test_bound_1 +tests/third_party/cupy/random_tests/test_sample.py::TestRandint2::test_bound_2 +tests/third_party/cupy/random_tests/test_sample.py::TestRandint2::test_bound_float2 +tests/test_mathematical.py::TestUnwrap::test_rand[int64] +tests/test_random.py::test_check_output[random] +tests/test_random.py::test_check_output[random_sample] +tests/test_random.py::test_check_output[ranf] +tests/test_random.py::test_check_output[sample] +tests/test_random.py::test_seed[ranf] +tests/test_random.py::test_seed[sample] +tests/test_random.py::test_seed[rand] +tests/third_party/cupy/random_tests/test_sample.py::TestRandint2::test_bound_overflow +tests/test_random.py::test_check_output[rand] +tests/test_random.py::TestDistributionsNormal::test_seed +tests/test_random_state.py::TestSeed::test_scalar[normal] +tests/test_random_state.py::TestSeed::test_scalar[standard_normal] +tests/test_random_state.py::TestSeed::test_scalar[random_sample] +tests/test_random_state.py::TestSeed::test_scalar[uniform] +tests/third_party/cupy/math_tests/test_matmul.py::TestMatmul_param_18_{shape_pair=((1, 3, 2), (5, 2, 4))}::test_cupy_matmul +tests/third_party/cupy/math_tests/test_matmul.py::TestMatmul_param_28_{shape_pair=((3, 2), (6, 5, 2, 4))}::test_cupy_matmul +tests/third_party/cupy/math_tests/test_matmul.py::TestMatmul_param_28_{shape_pair=((3, 2), (6, 5, 2, 4))}::test_operator_matmul +tests/test_fft.py::TestFft::test_fft_inplace_out[0] +tests/test_fft.py::TestFft::test_fft_inplace_out[1] diff --git a/tests/test_sycl_queue.py b/tests/test_sycl_queue.py index c598d45c61e..e705f809ea3 100644 --- a/tests/test_sycl_queue.py +++ b/tests/test_sycl_queue.py @@ -39,6 +39,9 @@ for device in available_devices: if device.default_selector_score < 0: pass + elif device.backend.name in "cuda": + valid_devices = [device] + break elif device.backend.name not in list_of_backend_str: pass elif device.device_type.name not in list_of_device_type_str: From 5f1b08379fffb56e2a0c7640697c1a176c529e5a Mon Sep 17 00:00:00 2001 From: Natalia Polina Date: Tue, 24 Sep 2024 11:50:57 -0700 Subject: [PATCH 02/11] Apply fallback to numpy for all unsupported functions on cuda device. --- dpnp/dpnp_iface.py | 48 ++++++++++++++-------- dpnp/dpnp_iface_indexing.py | 4 +- dpnp/dpnp_iface_libmath.py | 4 +- dpnp/dpnp_iface_mathematical.py | 11 ++++-- dpnp/dpnp_iface_sorting.py | 4 +- dpnp/dpnp_iface_statistics.py | 8 ++-- dpnp/random/dpnp_iface_random.py | 68 +++++++++++++++++++++++++++++++- dpnp/random/dpnp_random_state.py | 9 +++++ tests/skipped_tests_cuda.tbl | 5 --- tests/test_fft.py | 4 +- 10 files changed, 125 insertions(+), 40 deletions(-) diff --git a/dpnp/dpnp_iface.py b/dpnp/dpnp_iface.py index 15802a470c6..a2f86783791 100644 --- a/dpnp/dpnp_iface.py +++ b/dpnp/dpnp_iface.py @@ -69,10 +69,10 @@ "get_normalized_queue_device", "get_result_array", "get_usm_ndarray", + "is_cuda_backend", "get_usm_ndarray_or_scalar", "is_supported_array_or_scalar", "is_supported_array_type", - "not_implemented_for_cuda_backend", "synchronize_array_data", ] @@ -758,6 +758,37 @@ def get_usm_ndarray_or_scalar(a): return a if dpnp.isscalar(a) else get_usm_ndarray(a) +def is_cuda_backend(obj=None): + """ + Checks that object has a cuda backend. + + Parameters + ---------- + obj : {Device, SyclDevice, SyclQueue, dpnp.ndarray, usm_ndarray, None}, + optional + An input object with sycl_device property to check device backend. + If obj is ``None``, device backend will be checked for the default + queue. + Default: ``None``. + + Returns + ------- + out : bool + Return ``True`` if object has a cuda backend, otherwise``False``. + + """ + + if obj is None: + sycl_device = dpctl.SyclQueue().sycl_device + elif isinstance(obj, dpctl.SyclDevice): + sycl_device = obj + else: + sycl_device = getattr(obj, "sycl_device", None) + if sycl_device is not None and "cuda" in sycl_device.backend.name: + return True + return False + + def is_supported_array_or_scalar(a): """ Return ``True`` if `a` is a scalar or an array of either @@ -801,21 +832,6 @@ def is_supported_array_type(a): return isinstance(a, (dpnp_array, dpt.usm_ndarray)) -def not_implemented_for_cuda_backend(obj): - """ - Raise NotImplementedError for cuda devices. - - Parameters - ---------- - obj : {SyclDevice, SyclQueue, dpnp.ndarray, usm_ndarray} - An input object with sycl_device property to check device backend. - - """ - sycl_device = getattr(obj, "sycl_device", None) - if sycl_device is not None and "cuda" in sycl_device.backend.name: - raise NotImplementedError("function not implemented for cuda backend") - - def synchronize_array_data(a): """ The dpctl interface was reworked to make asynchronous execution. diff --git a/dpnp/dpnp_iface_indexing.py b/dpnp/dpnp_iface_indexing.py index 148e8b86f6c..7fde25d897e 100644 --- a/dpnp/dpnp_iface_indexing.py +++ b/dpnp/dpnp_iface_indexing.py @@ -174,8 +174,6 @@ def choose(x1, choices, out=None, mode="raise"): """ - dpnp.not_implemented_for_cuda_backend(x1) - x1_desc = dpnp.get_dpnp_descriptor(x1, copy_when_nondefault_queue=False) choices_list = [] @@ -195,6 +193,8 @@ def choose(x1, choices, out=None, mode="raise"): pass elif not choices_list: pass + elif dpnp.is_cuda_backend(x1): + pass else: size = x1_desc.size choices_size = choices_list[0].size diff --git a/dpnp/dpnp_iface_libmath.py b/dpnp/dpnp_iface_libmath.py index b9e7e9daf69..3ce4201c039 100644 --- a/dpnp/dpnp_iface_libmath.py +++ b/dpnp/dpnp_iface_libmath.py @@ -78,12 +78,10 @@ def erf(in_array1): """ - dpnp.not_implemented_for_cuda_backend(in_array1) - x1_desc = dpnp.get_dpnp_descriptor( in_array1, copy_when_strides=False, copy_when_nondefault_queue=False ) - if x1_desc: + if x1_desc and dpnp.is_cuda_backend(in_array1): return dpnp_erf(x1_desc).get_pyobj() result = create_output_descriptor_py( diff --git a/dpnp/dpnp_iface_mathematical.py b/dpnp/dpnp_iface_mathematical.py index d3809610518..e267c9cdbbf 100644 --- a/dpnp/dpnp_iface_mathematical.py +++ b/dpnp/dpnp_iface_mathematical.py @@ -2477,11 +2477,14 @@ def modf(x1, **kwargs): """ - dpnp.not_implemented_for_cuda_backend(x1) - x1_desc = dpnp.get_dpnp_descriptor(x1, copy_when_nondefault_queue=False) - if x1_desc and not kwargs: - return dpnp_modf(x1_desc) + if x1_desc: + if not kwargs: + pass + elif dpnp.is_cuda_backend(x1): + pass + else: + return dpnp_modf(x1_desc) return call_origin(numpy.modf, x1, **kwargs) diff --git a/dpnp/dpnp_iface_sorting.py b/dpnp/dpnp_iface_sorting.py index 1ae92bddf2b..16533fb1a27 100644 --- a/dpnp/dpnp_iface_sorting.py +++ b/dpnp/dpnp_iface_sorting.py @@ -174,8 +174,6 @@ def partition(x1, kth, axis=-1, kind="introselect", order=None): """ - dpnp.not_implemented_for_cuda_backend(x1) - x1_desc = dpnp.get_dpnp_descriptor(x1, copy_when_nondefault_queue=False) if x1_desc: if not isinstance(kth, int): @@ -190,6 +188,8 @@ def partition(x1, kth, axis=-1, kind="introselect", order=None): pass elif order is not None: pass + elif dpnp.is_cuda_backend(x1): + pass else: return dpnp_partition(x1_desc, kth, axis, kind, order).get_pyobj() diff --git a/dpnp/dpnp_iface_statistics.py b/dpnp/dpnp_iface_statistics.py index 00bf5c47e72..38f2f7ec796 100644 --- a/dpnp/dpnp_iface_statistics.py +++ b/dpnp/dpnp_iface_statistics.py @@ -371,8 +371,6 @@ def correlate(x1, x2, mode="valid"): """ - dpnp.not_implemented_for_cuda_backend(x1) - x1_desc = dpnp.get_dpnp_descriptor(x1, copy_when_nondefault_queue=False) x2_desc = dpnp.get_dpnp_descriptor(x2, copy_when_nondefault_queue=False) if x1_desc and x2_desc: @@ -382,6 +380,8 @@ def correlate(x1, x2, mode="valid"): pass elif mode != "valid": pass + elif dpnp.is_cuda_backend(x1) or dpnp.is_cuda_backend(x2): + pass else: return dpnp_correlate(x1_desc, x2_desc).get_pyobj() @@ -657,8 +657,6 @@ def median(x1, axis=None, out=None, overwrite_input=False, keepdims=False): """ - dpnp.not_implemented_for_cuda_backend(x1) - x1_desc = dpnp.get_dpnp_descriptor(x1, copy_when_nondefault_queue=False) if x1_desc: if axis is not None: @@ -669,6 +667,8 @@ def median(x1, axis=None, out=None, overwrite_input=False, keepdims=False): pass elif keepdims: pass + elif dpnp.is_cuda_backend(x1): + pass else: result_obj = dpnp_median(x1_desc).get_pyobj() result = dpnp.convert_single_elem_array_to_scalar(result_obj) diff --git a/dpnp/random/dpnp_iface_random.py b/dpnp/random/dpnp_iface_random.py index 49d2adad2c2..ee4af1df25d 100644 --- a/dpnp/random/dpnp_iface_random.py +++ b/dpnp/random/dpnp_iface_random.py @@ -150,6 +150,8 @@ def beta(a, b, size=None): pass elif b <= 0: pass + elif dpnp.is_cuda_backend(): + pass else: return dpnp_rng_beta(a, b, size).get_pyobj() @@ -196,6 +198,8 @@ def binomial(n, p, size=None): pass elif n < 0: pass + elif dpnp.is_cuda_backend(): + pass else: return dpnp_rng_binomial(int(n), p, size).get_pyobj() @@ -244,6 +248,8 @@ def chisquare(df, size=None): pass elif df <= 0: pass + elif dpnp.is_cuda_backend(): + pass else: # TODO: # float to int, safe @@ -312,6 +318,8 @@ def exponential(scale=1.0, size=None): pass elif scale < 0: pass + elif dpnp.is_cuda_backend(): + pass else: return dpnp_rng_exponential(scale, size).get_pyobj() @@ -348,6 +356,8 @@ def f(dfnum, dfden, size=None): pass elif dfden <= 0: pass + elif dpnp.is_cuda_backend(): + pass else: return dpnp_rng_f(dfnum, dfden, size).get_pyobj() @@ -386,6 +396,8 @@ def gamma(shape, scale=1.0, size=None): pass elif shape < 0: pass + elif dpnp.is_cuda_backend(): + pass else: return dpnp_rng_gamma(shape, scale, size).get_pyobj() @@ -420,6 +432,8 @@ def geometric(p, size=None): pass elif p > 1 or p <= 0: pass + elif dpnp.is_cuda_backend(): + pass else: return dpnp_rng_geometric(p, size).get_pyobj() @@ -456,6 +470,8 @@ def gumbel(loc=0.0, scale=1.0, size=None): pass elif scale < 0: pass + elif dpnp.is_cuda_backend(): + pass else: return dpnp_rng_gumbel(loc, scale, size).get_pyobj() @@ -504,6 +520,8 @@ def hypergeometric(ngood, nbad, nsample, size=None): pass elif nsample < 1: pass + elif dpnp.is_cuda_backend(): + pass else: _m = int(ngood) _l = int(ngood) + int(nbad) @@ -542,6 +560,8 @@ def laplace(loc=0.0, scale=1.0, size=None): pass elif scale < 0: pass + elif dpnp.is_cuda_backend(): + pass else: return dpnp_rng_laplace(loc, scale, size).get_pyobj() @@ -576,6 +596,8 @@ def logistic(loc=0.0, scale=1.0, size=None): pass elif scale < 0: pass + elif dpnp.is_cuda_backend(): + pass else: result = dpnp_rng_logistic(loc, scale, size).get_pyobj() if size is None or size == 1: @@ -617,6 +639,8 @@ def lognormal(mean=0.0, sigma=1.0, size=None): pass elif sigma < 0: pass + elif dpnp.is_cuda_backend(): + pass else: return dpnp_rng_lognormal(mean, sigma, size).get_pyobj() @@ -674,6 +698,8 @@ def multinomial(n, pvals, size=None): pass elif pvals_sum < 0.0: pass + elif dpnp.is_cuda_backend(): + pass else: if size is None: shape = (d,) @@ -725,6 +751,8 @@ def multivariate_normal(mean, cov, size=None, check_valid="warn", tol=1e-8): pass elif mean_.shape[0] != cov_.shape[0]: pass + elif dpnp.is_cuda_backend(): + pass else: final_shape = list(shape[:]) final_shape.append(mean_.shape[0]) @@ -777,6 +805,8 @@ def negative_binomial(n, p, size=None): pass elif n <= 0: pass + elif dpnp.is_cuda_backend(): + pass else: return dpnp_rng_negative_binomial(n, p, size).get_pyobj() @@ -862,6 +892,8 @@ def noncentral_chisquare(df, nonc, size=None): pass elif nonc < 0: pass + elif dpnp.is_cuda_backend(): + pass else: return dpnp_rng_noncentral_chisquare(df, nonc, size).get_pyobj() @@ -912,6 +944,8 @@ def pareto(a, size=None): pass elif a <= 0: pass + elif dpnp.is_cuda_backend(): + pass else: return dpnp_rng_pareto(a, size).get_pyobj() @@ -981,6 +1015,8 @@ def poisson(lam=1.0, size=None): pass elif lam < 0: pass + elif dpnp.is_cuda_backend(): + pass else: return dpnp_rng_poisson(lam, size).get_pyobj() @@ -1016,6 +1052,8 @@ def power(a, size=None): pass elif a <= 0: pass + elif dpnp.is_cuda_backend(): + pass else: return dpnp_rng_power(a, size).get_pyobj() @@ -1423,6 +1461,8 @@ def rayleigh(scale=1.0, size=None): pass elif scale < 0: pass + elif dpnp.is_cuda_backend(): + pass else: return dpnp_rng_rayleigh(scale, size).get_pyobj() @@ -1495,6 +1535,8 @@ def shuffle(x1): if x1_desc: if not dpnp.is_type_supported(x1_desc.dtype): pass + elif dpnp.is_cuda_backend(x1): + pass else: dpnp_rng_shuffle(x1_desc).get_pyobj() return @@ -1545,6 +1587,8 @@ def seed(seed=None, device=None, sycl_queue=None): pass elif seed < 0: pass + elif dpnp.is_cuda_backend(): + pass else: # TODO: # migrate to a single approach with RandomState class @@ -1577,7 +1621,10 @@ def standard_cauchy(size=None): """ if not use_origin_backend(size): - return dpnp_rng_standard_cauchy(size).get_pyobj() + if dpnp.is_cuda_backend(): + pass + else: + return dpnp_rng_standard_cauchy(size).get_pyobj() return call_origin(numpy.random.standard_cauchy, size) @@ -1602,7 +1649,10 @@ def standard_exponential(size=None): """ if not use_origin_backend(size): - return dpnp_rng_standard_exponential(size).get_pyobj() + if dpnp.is_cuda_backend(): + pass + else: + return dpnp_rng_standard_exponential(size).get_pyobj() return call_origin(numpy.random.standard_exponential, size) @@ -1636,6 +1686,8 @@ def standard_gamma(shape, size=None): pass elif shape < 0: pass + elif dpnp.is_cuda_backend(): + pass else: return dpnp_rng_standard_gamma(shape, size).get_pyobj() @@ -1714,6 +1766,8 @@ def standard_t(df, size=None): pass elif df <= 0: pass + elif dpnp.is_cuda_backend(): + pass else: return dpnp_rng_standard_t(df, size).get_pyobj() @@ -1758,6 +1812,8 @@ def triangular(left, mode, right, size=None): pass elif left == right: pass + elif dpnp.is_cuda_backend(): + pass else: return dpnp_rng_triangular(left, mode, right, size).get_pyobj() @@ -1862,6 +1918,8 @@ def vonmises(mu, kappa, size=None): return dpnp.nan elif kappa < 0: pass + elif dpnp.is_cuda_backend(): + pass else: return dpnp_rng_vonmises(mu, kappa, size).get_pyobj() @@ -1898,6 +1956,8 @@ def wald(mean, scale, size=None): pass elif scale <= 0: pass + elif dpnp.is_cuda_backend(): + pass else: return dpnp_rng_wald(mean, scale, size).get_pyobj() @@ -1930,6 +1990,8 @@ def weibull(a, size=None): pass elif a < 0: pass + elif dpnp.is_cuda_backend(): + pass else: return dpnp_rng_weibull(a, size).get_pyobj() @@ -1962,6 +2024,8 @@ def zipf(a, size=None): pass elif a <= 1: pass + elif dpnp.is_cuda_backend(): + pass else: return dpnp_rng_zipf(a, size).get_pyobj() diff --git a/dpnp/random/dpnp_random_state.py b/dpnp/random/dpnp_random_state.py index 21bafdd9194..0da54c57c61 100644 --- a/dpnp/random/dpnp_random_state.py +++ b/dpnp/random/dpnp_random_state.py @@ -81,6 +81,9 @@ def __init__(self, seed=None, device=None, sycl_queue=None): self._sycl_queue = dpnp.get_normalized_queue_device( device=device, sycl_queue=sycl_queue ) + + dpnp.not_implemented_for_cuda_backend(self._sycl_queue) + self._sycl_device = self._sycl_queue.sycl_device is_cpu = self._sycl_device.is_cpu @@ -238,6 +241,8 @@ def normal( pass elif not dpnp.isscalar(scale): pass + elif dpnp.is_cuda_backend(): + pass else: dtype = self._validate_float_dtype( dtype, (dpnp.float32, dpnp.float64) @@ -367,6 +372,8 @@ def randint(self, low, high=None, size=None, dtype=int, usm_type="device"): pass elif not (high is None or dpnp.isscalar(high)): pass + elif dpnp.is_cuda_backend(): + pass else: _dtype = dpnp.int32 if dtype is int else dpnp.dtype(dtype) if _dtype != dpnp.int32: @@ -591,6 +598,8 @@ def uniform( pass elif not dpnp.isscalar(high): pass + elif dpnp.is_cuda_backend(): + pass else: min_double = dpnp.finfo("double").min max_double = dpnp.finfo("double").max diff --git a/tests/skipped_tests_cuda.tbl b/tests/skipped_tests_cuda.tbl index 9762232f585..d6f7d74bec5 100644 --- a/tests/skipped_tests_cuda.tbl +++ b/tests/skipped_tests_cuda.tbl @@ -813,8 +813,3 @@ tests/test_random_state.py::TestSeed::test_scalar[normal] tests/test_random_state.py::TestSeed::test_scalar[standard_normal] tests/test_random_state.py::TestSeed::test_scalar[random_sample] tests/test_random_state.py::TestSeed::test_scalar[uniform] -tests/third_party/cupy/math_tests/test_matmul.py::TestMatmul_param_18_{shape_pair=((1, 3, 2), (5, 2, 4))}::test_cupy_matmul -tests/third_party/cupy/math_tests/test_matmul.py::TestMatmul_param_28_{shape_pair=((3, 2), (6, 5, 2, 4))}::test_cupy_matmul -tests/third_party/cupy/math_tests/test_matmul.py::TestMatmul_param_28_{shape_pair=((3, 2), (6, 5, 2, 4))}::test_operator_matmul -tests/test_fft.py::TestFft::test_fft_inplace_out[0] -tests/test_fft.py::TestFft::test_fft_inplace_out[1] diff --git a/tests/test_fft.py b/tests/test_fft.py index c6f33fb71f7..4351892bb3b 100644 --- a/tests/test_fft.py +++ b/tests/test_fft.py @@ -197,8 +197,8 @@ def test_fft_1D_out(self, dtype, n, norm): @pytest.mark.parametrize("axis", [0, 1]) def test_fft_inplace_out(self, axis): # Test some weirder in-place combinations - y = dpnp.random.rand(20, 20) + 1j * dpnp.random.rand(20, 20) - y_np = y.asnumpy() + y_np = numpy.random.rand(20, 20) + 1j * numpy.random.rand(20, 20) + y = dpnp.asarray(y_np) # Fully in-place. y1 = y.copy() expected1 = numpy.fft.fft(y1.asnumpy(), axis=axis) From fe8fe114692b84f93bdd22c7a25ee6cd314c2aeb Mon Sep 17 00:00:00 2001 From: Natalia Polina Date: Wed, 25 Sep 2024 01:40:10 -0700 Subject: [PATCH 03/11] update tests --- dpnp/dpnp_iface_libmath.py | 2 +- dpnp/random/dpnp_random_state.py | 2 - tests/skipped_tests_cuda.tbl | 512 +++++------------- tests/test_arithmetic.py | 3 + tests/test_indexing.py | 2 +- tests/test_logic.py | 7 +- tests/test_random.py | 11 + tests/test_sort.py | 1 + tests/test_statistics.py | 1 + tests/test_sycl_queue.py | 1 + .../cupy/core_tests/test_dlpack.py | 18 +- .../cupy/indexing_tests/test_indexing.py | 8 +- .../cupy/linalg_tests/test_solve.py | 18 +- .../cupy/math_tests/test_arithmetic.py | 1 + .../cupy/random_tests/test_distributions.py | 3 + .../cupy/random_tests/test_sample.py | 8 +- .../cupy/statistics_tests/test_histogram.py | 2 +- .../cupy/statistics_tests/test_meanvar.py | 7 +- 18 files changed, 186 insertions(+), 421 deletions(-) diff --git a/dpnp/dpnp_iface_libmath.py b/dpnp/dpnp_iface_libmath.py index 3ce4201c039..e726d1b0172 100644 --- a/dpnp/dpnp_iface_libmath.py +++ b/dpnp/dpnp_iface_libmath.py @@ -81,7 +81,7 @@ def erf(in_array1): x1_desc = dpnp.get_dpnp_descriptor( in_array1, copy_when_strides=False, copy_when_nondefault_queue=False ) - if x1_desc and dpnp.is_cuda_backend(in_array1): + if x1_desc and not dpnp.is_cuda_backend(in_array1): return dpnp_erf(x1_desc).get_pyobj() result = create_output_descriptor_py( diff --git a/dpnp/random/dpnp_random_state.py b/dpnp/random/dpnp_random_state.py index 0da54c57c61..5425f8f820d 100644 --- a/dpnp/random/dpnp_random_state.py +++ b/dpnp/random/dpnp_random_state.py @@ -82,8 +82,6 @@ def __init__(self, seed=None, device=None, sycl_queue=None): device=device, sycl_queue=sycl_queue ) - dpnp.not_implemented_for_cuda_backend(self._sycl_queue) - self._sycl_device = self._sycl_queue.sycl_device is_cpu = self._sycl_device.is_cpu diff --git a/tests/skipped_tests_cuda.tbl b/tests/skipped_tests_cuda.tbl index d6f7d74bec5..377cfe57ac3 100644 --- a/tests/skipped_tests_cuda.tbl +++ b/tests/skipped_tests_cuda.tbl @@ -1,4 +1,3 @@ -# FAILED # fft tests/test_fft.py::TestFftn::test_fftn[C-forward-None-complex64] tests/test_fft.py::TestFftn::test_fftn[C-forward-None-complex128] @@ -375,367 +374,25 @@ tests/third_party/cupy/math_tests/test_matmul.py::TestMatmulIntegralLargeBatch:: tests/third_party/cupy/math_tests/test_matmul.py::TestMatmulIntegralLargeBatch::test_operator_matmul[shape10-shape20] tests/third_party/cupy/math_tests/test_matmul.py::TestMatmulIntegralLargeBatch::test_operator_matmul[shape11-shape21] - -# NotImplementedError -# modf -tests/test_arithmetic.py::TestArithmetic::test_modf_part1 -tests/test_arithmetic.py::TestArithmetic::test_modf_part2 -tests/test_umath.py::test_umaths[('modf', 'f')] -tests/test_umath.py::test_umaths[('modf', 'd')] -tests/third_party/cupy/math_tests/test_arithmetic.py::TestArithmeticModf::test_modf -tests/test_sycl_queue.py::test_modf[cuda:gpu:0] - -# partition -tests/test_sort.py::test_partition[[3, 4, 2, 1]-bool_-0] -tests/test_sort.py::test_partition[[3, 4, 2, 1]-bool_-1] -tests/test_sort.py::test_partition[[3, 4, 2, 1]-int32-0] -tests/test_sort.py::test_partition[[3, 4, 2, 1]-int32-1] -tests/test_sort.py::test_partition[[3, 4, 2, 1]-int64-0] -tests/test_sort.py::test_partition[[3, 4, 2, 1]-int64-1] -tests/test_sort.py::test_partition[[3, 4, 2, 1]-float32-0] -tests/test_sort.py::test_partition[[3, 4, 2, 1]-float32-1] -tests/test_sort.py::test_partition[[3, 4, 2, 1]-float64-0] -tests/test_sort.py::test_partition[[3, 4, 2, 1]-float64-1] -tests/test_sort.py::test_partition[[3, 4, 2, 1]-complex64-0] -tests/test_sort.py::test_partition[[3, 4, 2, 1]-complex64-1] -tests/test_sort.py::test_partition[[3, 4, 2, 1]-complex128-0] -tests/test_sort.py::test_partition[[3, 4, 2, 1]-complex128-1] -tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-bool_-0] -tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-bool_-1] -tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-int32-0] -tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-int32-1] -tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-int64-0] -tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-int64-1] -tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-float32-0] -tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-float32-1] -tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-float64-0] -tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-float64-1] -tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-complex64-0] -tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-complex64-1] -tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-complex128-0] -tests/test_sort.py::test_partition[[[1, 0], [3, 0]]-complex128-1] -tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-bool_-0] -tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-bool_-1] -tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-int32-0] -tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-int32-1] -tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-int64-0] -tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-int64-1] -tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-float32-0] -tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-float32-1] -tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-float64-0] -tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-float64-1] -tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-complex64-0] -tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-complex64-1] -tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-complex128-0] -tests/test_sort.py::test_partition[[[3, 2], [1, 6]]-complex128-1] -tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-bool_-0] -tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-bool_-1] -tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-int32-0] -tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-int32-1] -tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-int64-0] -tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-int64-1] -tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-float32-0] -tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-float32-1] -tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-float64-0] -tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-float64-1] -tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-complex64-0] -tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-complex64-1] -tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-complex128-0] -tests/test_sort.py::test_partition[[[4, 2, 3], [3, 4, 1]]-complex128-1] -tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-bool_-0] -tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-bool_-1] -tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-int32-0] -tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-int32-1] -tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-int64-0] -tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-int64-1] -tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-float32-0] -tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-float32-1] -tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-float64-0] -tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-float64-1] -tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-complex64-0] -tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-complex64-1] -tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-complex128-0] -tests/test_sort.py::test_partition[[[[1, -3], [3, 0]], [[5, 2], [0, 1]], [[1, 0], [0, 1]]]-complex128-1] -tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-bool_-0] -tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-bool_-1] -tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-int32-0] -tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-int32-1] -tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-int64-0] -tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-int64-1] -tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-float32-0] -tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-float32-1] -tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-float64-0] -tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-float64-1] -tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-complex64-0] -tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-complex64-1] -tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-complex128-0] -tests/test_sort.py::test_partition[[[[[8, 2], [3, 0]], [[5, 2], [0, 1]]], [[[1, 3], [3, 1]], [[5, 2], [0, 1]]]]-complex128-1] -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_axis -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_invalid_axis1 -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_invalid_axis2 -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_invalid_kth -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_invalid_negative_axis1 -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_invalid_negative_axis2 -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_invalid_negative_kth -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_negative_axis -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_negative_kth -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_non_contiguous -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_one_dim -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_sequence_kth -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_0_{external=False, length=10}::test_partition_zero_dim -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_axis -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_invalid_axis1 -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_invalid_axis2 -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_invalid_kth -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_invalid_negative_axis1 -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_invalid_negative_axis2 -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_invalid_negative_kth -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_negative_axis -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_negative_kth -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_non_contiguous -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_one_dim -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_sequence_kth -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_1_{external=False, length=20000}::test_partition_zero_dim -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_axis -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_invalid_axis1 -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_invalid_axis2 -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_invalid_kth -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_invalid_negative_axis1 -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_invalid_negative_axis2 -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_invalid_negative_kth -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_negative_axis -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_negative_kth -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_non_contiguous -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_none_axis -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_one_dim -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_sequence_kth -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_2_{external=True, length=10}::test_partition_zero_dim -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_axis -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_invalid_axis1 -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_invalid_axis2 -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_invalid_kth -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_invalid_negative_axis1 -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_invalid_negative_axis2 -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_invalid_negative_kth -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_negative_axis -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_negative_kth -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_non_contiguous -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_none_axis -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_one_dim -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_sequence_kth -tests/third_party/cupy/sorting_tests/test_sort.py::TestPartition_param_3_{external=True, length=20000}::test_partition_zero_dim - -# erf -tests/test_special.py::test_erf -tests/test_special.py::test_erf_fallback -tests/test_strides.py::test_strides_erf[(10,)-int32] -tests/test_strides.py::test_strides_erf[(10,)-int64] -tests/test_strides.py::test_strides_erf[(10,)-float32] -tests/test_strides.py::test_strides_erf[(10,)-float64] -tests/test_strides.py::test_strides_erf[(10,)-None] - -# median -tests/test_statistics.py::test_median[2-int32] -tests/test_statistics.py::test_median[2-int64] -tests/test_statistics.py::test_median[2-float32] -tests/test_statistics.py::test_median[2-float64] -tests/test_statistics.py::test_median[4-int32] -tests/test_statistics.py::test_median[4-int64] -tests/test_statistics.py::test_median[4-float32] -tests/test_statistics.py::test_median[4-float64] -tests/test_statistics.py::test_median[8-int32] -tests/test_statistics.py::test_median[8-int64] -tests/test_statistics.py::test_median[8-float32] -tests/test_statistics.py::test_median[8-float64] -tests/test_statistics.py::test_median[16-int32] -tests/test_statistics.py::test_median[16-int64] -tests/test_statistics.py::test_median[16-float32] -tests/test_statistics.py::test_median[16-float64] -tests/test_statistics.py::test_median[3-int32] -tests/test_statistics.py::test_median[3-int64] -tests/test_statistics.py::test_median[3-float32] -tests/test_statistics.py::test_median[3-float64] -tests/test_statistics.py::test_median[9-int32] -tests/test_statistics.py::test_median[9-int64] -tests/test_statistics.py::test_median[9-float32] -tests/test_statistics.py::test_median[9-float64] -tests/test_statistics.py::test_median[27-int32] -tests/test_statistics.py::test_median[27-int64] -tests/test_statistics.py::test_median[27-float32] -tests/test_statistics.py::test_median[27-float64] -tests/test_statistics.py::test_median[81-int32] -tests/test_statistics.py::test_median[81-int64] -tests/test_statistics.py::test_median[81-float32] -tests/test_statistics.py::test_median[81-float64] -tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedian::test_median_noaxis -tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedian::test_median_axis1 -tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedian::test_median_axis2 -tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedian::test_median_overwrite_input -tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedian::test_median_keepdims_axis1 -tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedian::test_median_keepdims_noaxis -tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedian::test_median_invalid_axis -tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedianAxis::test_median_axis_sequence[_param_0_{axis=(0, 1), keepdims=True, shape=(3, 4, 5)}] -tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedianAxis::test_median_axis_sequence[_param_1_{axis=(0, 1), keepdims=False, shape=(3, 4, 5)}] -tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedianAxis::test_median_axis_sequence[_param_2_{axis=(0, -1), keepdims=True, shape=(3, 4, 5)}] -tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedianAxis::test_median_axis_sequence[_param_3_{axis=(0, -1), keepdims=False, shape=(3, 4, 5)}] -tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedianAxis::test_median_axis_sequence[_param_4_{axis=(1, 2), keepdims=True, shape=(3, 4, 5)}] -tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedianAxis::test_median_axis_sequence[_param_5_{axis=(1, 2), keepdims=False, shape=(3, 4, 5)}] -tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedianAxis::test_median_axis_sequence[_param_6_{axis=(1,), keepdims=True, shape=(3, 4, 5)}] -tests/third_party/cupy/statistics_tests/test_meanvar.py::TestMedianAxis::test_median_axis_sequence[_param_7_{axis=(1,), keepdims=False, shape=(3, 4, 5)}] - -# choose -tests/third_party/cupy/indexing_tests/test_indexing.py::TestChoose::test_choose -tests/third_party/cupy/indexing_tests/test_indexing.py::TestChoose::test_choose_broadcast -tests/third_party/cupy/indexing_tests/test_indexing.py::TestChoose::test_choose_broadcast2 -tests/third_party/cupy/indexing_tests/test_indexing.py::TestChoose::test_choose_broadcast_fail -tests/third_party/cupy/indexing_tests/test_indexing.py::TestChoose::test_choose_clip -tests/third_party/cupy/indexing_tests/test_indexing.py::TestChoose::test_choose_wrap -tests/third_party/cupy/indexing_tests/test_indexing.py::TestChoose::test_raise -tests/third_party/cupy/indexing_tests/test_indexing.py::TestChoose::test_unknown_clip - -# correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_0_{mode='valid', shape1=(5,), shape2=(5,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_1_{mode='valid', shape1=(5,), shape2=(6,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_2_{mode='valid', shape1=(5,), shape2=(20,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_3_{mode='valid', shape1=(5,), shape2=(21,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_4_{mode='valid', shape1=(6,), shape2=(5,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_5_{mode='valid', shape1=(6,), shape2=(6,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_6_{mode='valid', shape1=(6,), shape2=(20,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_7_{mode='valid', shape1=(6,), shape2=(21,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_8_{mode='valid', shape1=(20,), shape2=(5,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_9_{mode='valid', shape1=(20,), shape2=(6,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_10_{mode='valid', shape1=(20,), shape2=(20,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_11_{mode='valid', shape1=(20,), shape2=(21,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_12_{mode='valid', shape1=(21,), shape2=(5,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_13_{mode='valid', shape1=(21,), shape2=(6,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_14_{mode='valid', shape1=(21,), shape2=(20,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_15_{mode='valid', shape1=(21,), shape2=(21,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_16_{mode='same', shape1=(5,), shape2=(5,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_17_{mode='same', shape1=(5,), shape2=(6,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_18_{mode='same', shape1=(5,), shape2=(20,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_19_{mode='same', shape1=(5,), shape2=(21,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_20_{mode='same', shape1=(6,), shape2=(5,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_21_{mode='same', shape1=(6,), shape2=(6,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_22_{mode='same', shape1=(6,), shape2=(20,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_23_{mode='same', shape1=(6,), shape2=(21,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_24_{mode='same', shape1=(20,), shape2=(5,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_25_{mode='same', shape1=(20,), shape2=(6,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_26_{mode='same', shape1=(20,), shape2=(20,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_27_{mode='same', shape1=(20,), shape2=(21,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_28_{mode='same', shape1=(21,), shape2=(5,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_29_{mode='same', shape1=(21,), shape2=(6,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_30_{mode='same', shape1=(21,), shape2=(20,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_31_{mode='same', shape1=(21,), shape2=(21,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_32_{mode='full', shape1=(5,), shape2=(5,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_33_{mode='full', shape1=(5,), shape2=(6,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_34_{mode='full', shape1=(5,), shape2=(20,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_35_{mode='full', shape1=(5,), shape2=(21,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_36_{mode='full', shape1=(6,), shape2=(5,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_37_{mode='full', shape1=(6,), shape2=(6,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_38_{mode='full', shape1=(6,), shape2=(20,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_39_{mode='full', shape1=(6,), shape2=(21,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_40_{mode='full', shape1=(20,), shape2=(5,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_41_{mode='full', shape1=(20,), shape2=(6,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_42_{mode='full', shape1=(20,), shape2=(20,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_43_{mode='full', shape1=(20,), shape2=(21,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_44_{mode='full', shape1=(21,), shape2=(5,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_45_{mode='full', shape1=(21,), shape2=(6,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_46_{mode='full', shape1=(21,), shape2=(20,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateShapeCombination_param_47_{mode='full', shape1=(21,), shape2=(21,)}::test_correlate -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelate_param_0_{mode='valid'}::test_correlate_diff_types -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelate_param_0_{mode='valid'}::test_correlate_large_non_contiguous -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelate_param_0_{mode='valid'}::test_correlate_non_contiguous -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelate_param_1_{mode='full'}::test_correlate_diff_types -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelate_param_1_{mode='full'}::test_correlate_large_non_contiguous -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelate_param_1_{mode='full'}::test_correlate_non_contiguous -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelate_param_2_{mode='same'}::test_correlate_diff_types -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelate_param_2_{mode='same'}::test_correlate_large_non_contiguous -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelate_param_2_{mode='same'}::test_correlate_non_contiguous -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateInvalid_param_0_{mode='valid'}::test_correlate_empty -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateInvalid_param_0_{mode='valid'}::test_correlate_ndim -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateInvalid_param_0_{mode='valid'}::test_correlate_zero_dim -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateInvalid_param_1_{mode='same'}::test_correlate_empty -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateInvalid_param_1_{mode='same'}::test_correlate_ndim -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateInvalid_param_1_{mode='same'}::test_correlate_zero_dim -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateInvalid_param_2_{mode='full'}::test_correlate_empty -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateInvalid_param_2_{mode='full'}::test_correlate_ndim -tests/third_party/cupy/statistics_tests/test_correlation.py::TestCorrelateInvalid_param_2_{mode='full'}::test_correlate_zero_dim - -#random -tests/test_random.py::test_input_size[chisquare] -tests/test_random.py::test_input_shape[chisquare] -tests/test_random.py::test_seed[random] -tests/test_random.py::test_seed[random_sample] -tests/test_random.py::test_randn_normal_distribution -tests/test_random.py::TestDistributionsBeta::test_moments -tests/test_random.py::TestDistributionsBeta::test_seed -tests/test_random.py::TestDistributionsBinomial::test_moments -tests/test_random.py::TestDistributionsBinomial::test_seed -tests/test_random.py::TestDistributionsChisquare::test_seed -tests/test_random.py::TestDistributionsExponential::test_seed -tests/test_random.py::TestDistributionsF::test_moments -tests/test_random.py::TestDistributionsF::test_seed -tests/test_random.py::TestDistributionsGamma::test_moments -tests/test_random.py::TestDistributionsGamma::test_seed -tests/test_random.py::TestDistributionsGeometric::test_moments -tests/test_random.py::TestDistributionsGeometric::test_seed -tests/test_random.py::TestDistributionsGumbel::test_moments -tests/test_random.py::TestDistributionsGumbel::test_seed -tests/test_random.py::TestDistributionsHypergeometric::test_moments -tests/test_random.py::TestDistributionsHypergeometric::test_seed -tests/test_random.py::TestDistributionsLaplace::test_moments -tests/test_random.py::TestDistributionsLaplace::test_seed -tests/test_random.py::TestDistributionsLogistic::test_moments -tests/test_random.py::TestDistributionsLogistic::test_seed -tests/test_random.py::TestDistributionsLognormal::test_moments -tests/test_random.py::TestDistributionsLognormal::test_seed -tests/test_random.py::TestDistributionsMultinomial::test_seed1 -tests/test_random.py::TestDistributionsNegativeBinomial::test_seed -tests/test_random.py::TestDistributionsNormal::test_moments -tests/test_random.py::TestDistributionsNoncentralChisquare::test_moments[df_grt_1] -tests/test_random.py::TestDistributionsNoncentralChisquare::test_moments[df_eq_1] -tests/test_random.py::TestDistributionsNoncentralChisquare::test_moments[df_less_1] -tests/test_random.py::TestDistributionsNoncentralChisquare::test_seed[df_grt_1] -tests/test_random.py::TestDistributionsNoncentralChisquare::test_seed[df_eq_1] -tests/test_random.py::TestDistributionsNoncentralChisquare::test_seed[df_less_1] -tests/test_random.py::TestDistributionsPareto::test_moments -tests/test_random.py::TestDistributionsPareto::test_seed -tests/test_random.py::TestDistributionsPoisson::test_moments -tests/test_random.py::TestDistributionsPoisson::test_seed -tests/test_random.py::TestDistributionsPower::test_moments -tests/test_random.py::TestDistributionsPower::test_seed -tests/test_random.py::TestDistributionsRayleigh::test_moments -tests/test_random.py::TestDistributionsRayleigh::test_seed -tests/test_random.py::TestDistributionsStandardCauchy::test_seed -tests/test_random.py::TestDistributionsStandardExponential::test_moments -tests/test_random.py::TestDistributionsStandardExponential::test_seed -tests/test_random.py::TestDistributionsStandardGamma::test_moments -tests/test_random.py::TestDistributionsStandardNormal::test_moments -tests/test_random.py::TestDistributionsStandardT::test_moments -tests/test_random.py::TestDistributionsStandardT::test_seed -tests/test_random.py::TestDistributionsTriangular::test_moments -tests/test_random.py::TestDistributionsTriangular::test_seed -tests/test_random.py::TestDistributionsUniform::test_moments -tests/test_random.py::TestDistributionsVonmises::test_moments[large_kappa] -tests/test_random.py::TestDistributionsVonmises::test_moments[small_kappa] -tests/test_random.py::TestDistributionsVonmises::test_seed[large_kappa] -tests/test_random.py::TestDistributionsVonmises::test_seed[small_kappa] -tests/test_random.py::TestDistributionsWald::test_moments -tests/test_random.py::TestDistributionsWald::test_seed -tests/test_random.py::TestDistributionsWeibull::test_seed -tests/test_random.py::TestDistributionsZipf::test_seed -tests/test_random.py::TestPermutationsTestShuffle::test_shuffle1[lambda x: dpnp.array([])] -tests/test_random.py::TestPermutationsTestShuffle::test_shuffle1[lambda x: dpnp.astype(dpnp.asarray(x), dpnp.float32)] -tests/test_random.py::TestPermutationsTestShuffle::test_shuffle1[lambda x: dpnp.asarray([[i, i] for i in x])] +# random state tests/test_random_state.py::TestNormal::test_distr[host-float32] tests/test_random_state.py::TestNormal::test_distr[host-float64] tests/test_random_state.py::TestNormal::test_distr[host-None] tests/test_random_state.py::TestNormal::test_distr[device-float32] -tests/test_random_state.py::TestNormal::test_distr[device-float64] +tests/test_random_state.py::TestNormal::test_distr[device-float64] tests/test_random_state.py::TestNormal::test_distr[device-None] tests/test_random_state.py::TestNormal::test_distr[shared-float32] tests/test_random_state.py::TestNormal::test_distr[shared-float64] tests/test_random_state.py::TestNormal::test_distr[shared-None] +tests/test_random_state.py::TestNormal::test_scale[host-float32] +tests/test_random_state.py::TestNormal::test_scale[host-float64] +tests/test_random_state.py::TestNormal::test_scale[host-None] +tests/test_random_state.py::TestNormal::test_scale[device-float32] +tests/test_random_state.py::TestNormal::test_scale[device-float64] +tests/test_random_state.py::TestNormal::test_scale[device-None] +tests/test_random_state.py::TestNormal::test_scale[shared-float32] +tests/test_random_state.py::TestNormal::test_scale[shared-float64] +tests/test_random_state.py::TestNormal::test_scale[shared-None] tests/test_random_state.py::TestNormal::test_inf_loc[numpy.inf] tests/test_random_state.py::TestNormal::test_inf_loc[-numpy.inf] tests/test_random_state.py::TestNormal::test_inf_loc[nextafter(max, 0)] @@ -743,29 +400,65 @@ tests/test_random_state.py::TestNormal::test_inf_loc[nextafter(min, 0)] tests/test_random_state.py::TestNormal::test_inf_scale tests/test_random_state.py::TestNormal::test_inf_loc_scale[numpy.inf] tests/test_random_state.py::TestNormal::test_inf_loc_scale[-numpy.inf] +tests/test_random_state.py::TestNormal::test_extreme_bounds +tests/test_random_state.py::TestNormal::test_invalid_dtype[dpnp.float16] +tests/test_random_state.py::TestNormal::test_invalid_dtype[float] +tests/test_random_state.py::TestNormal::test_invalid_dtype[dpnp.int64] +tests/test_random_state.py::TestNormal::test_invalid_dtype[dpnp.int32] +tests/test_random_state.py::TestNormal::test_invalid_dtype[dpnp.int] +tests/test_random_state.py::TestNormal::test_invalid_dtype[int] +tests/test_random_state.py::TestNormal::test_invalid_dtype[numpy.clongdouble] +tests/test_random_state.py::TestNormal::test_invalid_dtype[dpnp.complex128] +tests/test_random_state.py::TestNormal::test_invalid_dtype[dpnp.complex64] +tests/test_random_state.py::TestNormal::test_invalid_dtype[dpnp.bool] +tests/test_random_state.py::TestNormal::test_invalid_dtype[dpnp.bool_] +tests/test_random_state.py::TestNormal::test_invalid_usm_type[Empty] +tests/test_random_state.py::TestNormal::test_invalid_usm_type[Unknown] tests/test_random_state.py::TestRand::test_distr[host] tests/test_random_state.py::TestRand::test_distr[device] tests/test_random_state.py::TestRand::test_distr[shared] +tests/test_random_state.py::TestRand::test_zero_dims[(0,)] +tests/test_random_state.py::TestRand::test_zero_dims[(3, 0)] +tests/test_random_state.py::TestRand::test_zero_dims[(3, 0, 10)] +tests/test_random_state.py::TestRand::test_zero_dims[()] +tests/test_random_state.py::TestRand::test_wrong_dims tests/test_random_state.py::TestRandInt::test_distr[host-int] tests/test_random_state.py::TestRandInt::test_distr[host-dpnp.int32] tests/test_random_state.py::TestRandInt::test_distr[device-int] tests/test_random_state.py::TestRandInt::test_distr[device-dpnp.int32] tests/test_random_state.py::TestRandInt::test_distr[shared-int] tests/test_random_state.py::TestRandInt::test_distr[shared-dpnp.int32] -tests/test_random_state.py::TestRandInt::test_float_bounds +tests/test_random_state.py::TestRandInt::test_float_bounds randint tests/test_random_state.py::TestRandInt::test_negative_bounds tests/test_random_state.py::TestRandInt::test_negative_interval +tests/test_random_state.py::TestRandInt::test_bounds_checking tests/test_random_state.py::TestRandInt::test_rng_zero_and_extremes -tests/test_random_state.py::TestRandInt::test_in_bounds_fuzz +tests/test_random_state.py::TestRandInt::test_zero_size[(3, 0, 4)] +tests/test_random_state.py::TestRandInt::test_zero_size[0] +tests/test_random_state.py::TestRandInt::test_zero_size[(0,)] +tests/test_random_state.py::TestRandInt::test_zero_size[()] +tests/test_random_state.py::TestRandInt::test_invalid_usm_type[Empty] +tests/test_random_state.py::TestRandInt::test_invalid_usm_type[Unknown] tests/test_random_state.py::TestRandN::test_distr[host] tests/test_random_state.py::TestRandN::test_distr[device] tests/test_random_state.py::TestRandN::test_distr[shared] +tests/test_random_state.py::TestRandN::test_zero_dims[(0,)] +tests/test_random_state.py::TestRandN::test_zero_dims[(3, 0)] +tests/test_random_state.py::TestRandN::test_zero_dims[(3, 0, 10)] +tests/test_random_state.py::TestRandN::test_zero_dims[()] +tests/test_random_state.py::TestRandN::test_wrong_dims +tests/test_random_state.py::TestSeed::test_scalar[normal] +tests/test_random_state.py::TestSeed::test_scalar[standard_normal] +tests/test_random_state.py::TestSeed::test_scalar[random_sample] +tests/test_random_state.py::TestSeed::test_scalar[uniform] tests/test_random_state.py::TestStandardNormal::test_distr[host] tests/test_random_state.py::TestStandardNormal::test_distr[device] tests/test_random_state.py::TestStandardNormal::test_distr[shared] +tests/test_random_state.py::TestStandardNormal::test_wrong_dims tests/test_random_state.py::TestRandSample::test_distr[host] tests/test_random_state.py::TestRandSample::test_distr[device] tests/test_random_state.py::TestRandSample::test_distr[shared] +tests/test_random_state.py::TestRandSample::test_wrong_dims tests/test_random_state.py::TestUniform::test_distr[host-float32-(low, high)=[1.23, 10.54]] tests/test_random_state.py::TestUniform::test_distr[host-float32-(low, high)=[10.54, 1.23]] tests/test_random_state.py::TestUniform::test_distr[host-float64-(low, high)=[1.23, 10.54]] @@ -790,26 +483,87 @@ tests/test_random_state.py::TestUniform::test_distr[shared-int32-(low, high)=[1. tests/test_random_state.py::TestUniform::test_distr[shared-int32-(low, high)=[10.54, 1.23]] tests/test_random_state.py::TestUniform::test_distr[shared-None-(low, high)=[1.23, 10.54]] tests/test_random_state.py::TestUniform::test_distr[shared-None-(low, high)=[10.54, 1.23]] -tests/third_party/cupy/random_tests/test_distributions.py::TestDistributionsStandardCauchy_param_0_{shape=(4, 3, 2)}::test_standard_cauchy -tests/third_party/cupy/random_tests/test_distributions.py::TestDistributionsStandardCauchy_param_1_{shape=(3, 2)}::test_standard_cauchy -tests/third_party/cupy/random_tests/test_distributions.py::TestDistributionsStandardExponential_param_0_{shape=(4, 3, 2)}::test_standard_exponential -tests/third_party/cupy/random_tests/test_distributions.py::TestDistributionsStandardExponential_param_1_{shape=(3, 2)}::test_standard_exponential -tests/third_party/cupy/random_tests/test_sample.py::TestRandint::test_lo_hi_nonrandom -tests/third_party/cupy/random_tests/test_sample.py::TestRandint2::test_bound_1 -tests/third_party/cupy/random_tests/test_sample.py::TestRandint2::test_bound_2 -tests/third_party/cupy/random_tests/test_sample.py::TestRandint2::test_bound_float2 -tests/test_mathematical.py::TestUnwrap::test_rand[int64] -tests/test_random.py::test_check_output[random] -tests/test_random.py::test_check_output[random_sample] -tests/test_random.py::test_check_output[ranf] -tests/test_random.py::test_check_output[sample] -tests/test_random.py::test_seed[ranf] -tests/test_random.py::test_seed[sample] -tests/test_random.py::test_seed[rand] -tests/third_party/cupy/random_tests/test_sample.py::TestRandint2::test_bound_overflow -tests/test_random.py::test_check_output[rand] -tests/test_random.py::TestDistributionsNormal::test_seed -tests/test_random_state.py::TestSeed::test_scalar[normal] -tests/test_random_state.py::TestSeed::test_scalar[standard_normal] -tests/test_random_state.py::TestSeed::test_scalar[random_sample] -tests/test_random_state.py::TestSeed::test_scalar[uniform] +tests/test_random_state.py::TestUniform::test_low_high_equal[host-float32] +tests/test_random_state.py::TestUniform::test_low_high_equal[host-float64] +tests/test_random_state.py::TestUniform::test_low_high_equal[host-int32] +tests/test_random_state.py::TestUniform::test_low_high_equal[host-None] +tests/test_random_state.py::TestUniform::test_low_high_equal[device-float32] +tests/test_random_state.py::TestUniform::test_low_high_equal[device-float64] +tests/test_random_state.py::TestUniform::test_low_high_equal[device-int32] +tests/test_random_state.py::TestUniform::test_low_high_equal[device-None] +tests/test_random_state.py::TestUniform::test_low_high_equal[shared-float32] +tests/test_random_state.py::TestUniform::test_low_high_equal[shared-float64] +tests/test_random_state.py::TestUniform::test_low_high_equal[shared-int32] +tests/test_random_state.py::TestUniform::test_low_high_equal[shared-None] +tests/test_random_state.py::TestUniform::test_invalid_dtype[dpnp.float16] +tests/test_random_state.py::TestUniform::test_invalid_dtype[float] +tests/test_random_state.py::TestUniform::test_invalid_dtype[dpnp.int64] +tests/test_random_state.py::TestUniform::test_invalid_dtype[dpnp.int] +tests/test_random_state.py::TestUniform::test_invalid_dtype[int] +tests/test_random_state.py::TestUniform::test_invalid_dtype[numpy.clongdouble] +tests/test_random_state.py::TestUniform::test_invalid_dtype[dpnp.complex128] +tests/test_random_state.py::TestUniform::test_invalid_dtype[dpnp.complex64] +tests/test_random_state.py::TestUniform::test_invalid_dtype[dpnp.bool] +tests/test_random_state.py::TestUniform::test_invalid_dtype[dpnp.bool_] +tests/test_random_state.py::TestUniform::test_invalid_usm_type[Empty] +tests/test_random_state.py::TestUniform::test_invalid_usm_type[Unknown] +tests/test_random_state.py::TestRandInt::test_float_bounds +tests/test_random_state.py::TestRandInt::test_full_range +tests/test_random_state.py::TestUniform::test_range_bounds +tests/test_sycl_queue.py::test_random[host-cuda:gpu:0-normal-kwargs0] +tests/test_sycl_queue.py::test_random[host-cuda:gpu:0-rand-kwargs1] +tests/test_sycl_queue.py::test_random[host-cuda:gpu:0-randint-kwargs2] +tests/test_sycl_queue.py::test_random[host-cuda:gpu:0-randn-kwargs3] +tests/test_sycl_queue.py::test_random[host-cuda:gpu:0-random-kwargs4] +tests/test_sycl_queue.py::test_random[host-cuda:gpu:0-random_integers-kwargs5] +tests/test_sycl_queue.py::test_random[host-cuda:gpu:0-random_sample-kwargs6] +tests/test_sycl_queue.py::test_random[host-cuda:gpu:0-ranf-kwargs7] +tests/test_sycl_queue.py::test_random[host-cuda:gpu:0-sample-kwargs8] +tests/test_sycl_queue.py::test_random[host-cuda:gpu:0-standard_normal-kwargs9] +tests/test_sycl_queue.py::test_random[host-cuda:gpu:0-uniform-kwargs10] +tests/test_sycl_queue.py::test_random[shared-cuda:gpu:0-normal-kwargs0] +tests/test_sycl_queue.py::test_random[shared-cuda:gpu:0-rand-kwargs1] +tests/test_sycl_queue.py::test_random[shared-cuda:gpu:0-randint-kwargs2] +tests/test_sycl_queue.py::test_random[shared-cuda:gpu:0-randn-kwargs3] +tests/test_sycl_queue.py::test_random[shared-cuda:gpu:0-random-kwargs4] +tests/test_sycl_queue.py::test_random[shared-cuda:gpu:0-random_integers-kwargs5] +tests/test_sycl_queue.py::test_random[shared-cuda:gpu:0-random_sample-kwargs6] +tests/test_sycl_queue.py::test_random[shared-cuda:gpu:0-ranf-kwargs7] +tests/test_sycl_queue.py::test_random[shared-cuda:gpu:0-sample-kwargs8] +tests/test_sycl_queue.py::test_random[shared-cuda:gpu:0-standard_normal-kwargs9] +tests/test_sycl_queue.py::test_random[shared-cuda:gpu:0-uniform-kwargs10] +tests/test_sycl_queue.py::test_random[device-cuda:gpu:0-normal-kwargs0] +tests/test_sycl_queue.py::test_random[device-cuda:gpu:0-rand-kwargs1] +tests/test_sycl_queue.py::test_random[device-cuda:gpu:0-randint-kwargs2] +tests/test_sycl_queue.py::test_random[device-cuda:gpu:0-randn-kwargs3] +tests/test_sycl_queue.py::test_random[device-cuda:gpu:0-random-kwargs4] +tests/test_sycl_queue.py::test_random[device-cuda:gpu:0-random_integers-kwargs5] +tests/test_sycl_queue.py::test_random[device-cuda:gpu:0-random_sample-kwargs6] +tests/test_sycl_queue.py::test_random[device-cuda:gpu:0-ranf-kwargs7] +tests/test_sycl_queue.py::test_random[device-cuda:gpu:0-sample-kwargs8] +tests/test_sycl_queue.py::test_random[device-cuda:gpu:0-standard_normal-kwargs9] +tests/test_sycl_queue.py::test_random[device-cuda:gpu:0-uniform-kwargs10] +tests/test_sycl_queue.py::test_random_state[host-cuda:gpu:0-normal-args0-kwargs0] +tests/test_sycl_queue.py::test_random_state[host-cuda:gpu:0-rand-args1-kwargs1] +tests/test_sycl_queue.py::test_random_state[host-cuda:gpu:0-randint-args2-kwargs2] +tests/test_sycl_queue.py::test_random_state[host-cuda:gpu:0-randn-args3-kwargs3] +tests/test_sycl_queue.py::test_random_state[host-cuda:gpu:0-random_sample-args4-kwargs4] +tests/test_sycl_queue.py::test_random_state[host-cuda:gpu:0-standard_normal-args5-kwargs5] +tests/test_sycl_queue.py::test_random_state[host-cuda:gpu:0-uniform-args6-kwargs6] +tests/test_sycl_queue.py::test_random_state[shared-cuda:gpu:0-normal-args0-kwargs0] +tests/test_sycl_queue.py::test_random_state[shared-cuda:gpu:0-rand-args1-kwargs1] +tests/test_sycl_queue.py::test_random_state[shared-cuda:gpu:0-randint-args2-kwargs2] +tests/test_sycl_queue.py::test_random_state[shared-cuda:gpu:0-randn-args3-kwargs3] +tests/test_sycl_queue.py::test_random_state[shared-cuda:gpu:0-random_sample-args4-kwargs4] +tests/test_sycl_queue.py::test_random_state[shared-cuda:gpu:0-standard_normal-args5-kwargs5] +tests/test_sycl_queue.py::test_random_state[shared-cuda:gpu:0-uniform-args6-kwargs6] +tests/test_sycl_queue.py::test_random_state[device-cuda:gpu:0-normal-args0-kwargs0] +tests/test_sycl_queue.py::test_random_state[device-cuda:gpu:0-rand-args1-kwargs1] +tests/test_sycl_queue.py::test_random_state[device-cuda:gpu:0-randint-args2-kwargs2] +tests/test_sycl_queue.py::test_random_state[device-cuda:gpu:0-randn-args3-kwargs3] +tests/test_sycl_queue.py::test_random_state[device-cuda:gpu:0-random_sample-args4-kwargs4] +tests/test_sycl_queue.py::test_random_state[device-cuda:gpu:0-standard_normal-args5-kwargs5] +tests/test_sycl_queue.py::test_random_state[device-cuda:gpu:0-uniform-args6-kwargs6] +tests/test_random.py::TestDistributionsGeometric::test_moments +tests/test_random.py::TestDistributionsLaplace::test_extreme_value +tests/test_random.py::TestDistributionsPareto::test_moments diff --git a/tests/test_arithmetic.py b/tests/test_arithmetic.py index 3e4e3162991..187c7aded56 100644 --- a/tests/test_arithmetic.py +++ b/tests/test_arithmetic.py @@ -1,6 +1,7 @@ import unittest import numpy +import pytest from tests.helper import has_support_aspect64 from tests.third_party.cupy import testing @@ -9,6 +10,7 @@ class TestArithmetic(unittest.TestCase): @testing.for_float_dtypes() @testing.numpy_cupy_allclose() + @pytest.mark.usefixtures("allow_fall_back_on_numpy") def test_modf_part1(self, xp, dtype): a = xp.array([-2.5, -1.5, -0.5, 0, 0.5, 1.5, 2.5], dtype=dtype) b, _ = xp.modf(a) @@ -17,6 +19,7 @@ def test_modf_part1(self, xp, dtype): @testing.for_float_dtypes() @testing.numpy_cupy_allclose() + @pytest.mark.usefixtures("allow_fall_back_on_numpy") def test_modf_part2(self, xp, dtype): a = xp.array([-2.5, -1.5, -0.5, 0, 0.5, 1.5, 2.5], dtype=dtype) _, c = xp.modf(a) diff --git a/tests/test_indexing.py b/tests/test_indexing.py index cf694ff0357..575aa871c89 100644 --- a/tests/test_indexing.py +++ b/tests/test_indexing.py @@ -718,7 +718,7 @@ class TestTakeAlongAxis: ], ) def test_argequivalent(self, func, argfunc, kwargs): - a = dpnp.random.random(size=(3, 4, 5)) + a = dpnp.asarray(numpy.random.random(size=(3, 4, 5))) for axis in list(range(a.ndim)) + [None]: a_func = func(a, axis=axis, **kwargs) diff --git a/tests/test_logic.py b/tests/test_logic.py index c52aba89aa7..ab6925ae923 100644 --- a/tests/test_logic.py +++ b/tests/test_logic.py @@ -396,12 +396,15 @@ def test_elemwise_comparison(op, x1, x2, dtype): "sh2", [[12], [4, 8], [1, 8, 6]], ids=["(12,)", "(4, 8)", "(1, 8, 6)"] ) def test_comparison_no_broadcast_with_shapes(op, sh1, sh2): - x1, x2 = dpnp.random.randn(*sh1), dpnp.random.randn(*sh2) + x1_np = numpy.random.randn(*sh1) + x2_np = numpy.random.randn(*sh2) + x1 = dpnp.asarray(x1_np) + x2 = dpnp.asarray(x2_np) # x1 OP x2 with pytest.raises(ValueError): getattr(dpnp, op)(x1, x2) - getattr(numpy, op)(x1.asnumpy(), x2.asnumpy()) + getattr(numpy, op)(x1_np, x2_np) @pytest.mark.parametrize( diff --git a/tests/test_random.py b/tests/test_random.py index 36323ae51b2..1d601bdd7ae 100644 --- a/tests/test_random.py +++ b/tests/test_random.py @@ -45,6 +45,7 @@ def check_seed(self, dist_name, params): assert_allclose(a1, a2, rtol=1e-07, atol=0) +@pytest.mark.usefixtures("allow_fall_back_on_numpy") @pytest.mark.parametrize( "func", [dpnp.random.chisquare, dpnp.random.rand, dpnp.random.randn], @@ -61,6 +62,7 @@ def test_input_size(func): assert output_shape == res.shape +@pytest.mark.usefixtures("allow_fall_back_on_numpy") @pytest.mark.parametrize( "func", [ @@ -82,6 +84,7 @@ def test_input_shape(func): assert shape == res.shape +@pytest.mark.usefixtures("allow_fall_back_on_numpy") @pytest.mark.parametrize( "func", [ @@ -104,6 +107,7 @@ def test_check_output(func): assert dpnp.all(res < 1) +@pytest.mark.usefixtures("allow_fall_back_on_numpy") @pytest.mark.parametrize( "func", [ @@ -130,6 +134,7 @@ def test_seed(func): assert_allclose(a1, a2, rtol=1e-07, atol=0) +@pytest.mark.usefixtures("allow_fall_back_on_numpy") def test_randn_normal_distribution(): """ Check the moments of the normal distribution sample obtained @@ -667,6 +672,7 @@ def test_seed(self): @pytest.mark.skipif(not has_support_aspect64(), reason="Failed on Iris Xe") +@pytest.mark.usefixtures("allow_fall_back_on_numpy") class TestDistributionsNormal(TestDistribution): def test_extreme_value(self): loc = 5 @@ -827,11 +833,13 @@ def test_seed(self): self.check_seed("rayleigh", {"scale": scale}) +@pytest.mark.usefixtures("allow_fall_back_on_numpy") class TestDistributionsStandardCauchy(TestDistribution): def test_seed(self): self.check_seed("standard_cauchy", {}) +@pytest.mark.usefixtures("allow_fall_back_on_numpy") class TestDistributionsStandardExponential(TestDistribution): def test_moments(self): shape = 0.8 @@ -867,6 +875,7 @@ def test_seed(self): self.check_seed("standard_gamma", {"shape": 0.0}) +@pytest.mark.usefixtures("allow_fall_back_on_numpy") class TestDistributionsStandardNormal(TestDistribution): def test_moments(self): expected_mean = 0.0 @@ -944,6 +953,7 @@ def test_seed(self): @pytest.mark.skipif(not has_support_aspect64(), reason="Failed on Iris Xe") +@pytest.mark.usefixtures("allow_fall_back_on_numpy") class TestDistributionsUniform(TestDistribution): def test_extreme_value(self): low = 1.0 @@ -1070,6 +1080,7 @@ def test_seed(self): self.check_seed("zipf", {"a": a}) +@pytest.mark.usefixtures("allow_fall_back_on_numpy") class TestPermutationsTestShuffle: @pytest.mark.parametrize( "dtype", diff --git a/tests/test_sort.py b/tests/test_sort.py index b12889a674f..d60a27d2745 100644 --- a/tests/test_sort.py +++ b/tests/test_sort.py @@ -366,6 +366,7 @@ def test_complex(self, dtype): assert result.dtype == expected.dtype +@pytest.mark.usefixtures("allow_fall_back_on_numpy") @pytest.mark.parametrize("kth", [0, 1], ids=["0", "1"]) @pytest.mark.parametrize("dtype", get_all_dtypes(no_none=True)) @pytest.mark.parametrize( diff --git a/tests/test_statistics.py b/tests/test_statistics.py index ad617752d04..b508e98d9ad 100644 --- a/tests/test_statistics.py +++ b/tests/test_statistics.py @@ -18,6 +18,7 @@ ) +@pytest.mark.usefixtures("allow_fall_back_on_numpy") @pytest.mark.parametrize( "dtype", get_all_dtypes(no_none=True, no_bool=True, no_complex=True) ) diff --git a/tests/test_sycl_queue.py b/tests/test_sycl_queue.py index e705f809ea3..cd7bdec555c 100644 --- a/tests/test_sycl_queue.py +++ b/tests/test_sycl_queue.py @@ -1190,6 +1190,7 @@ def test_out_2in_1out(func, data1, data2, device): assert_sycl_queue_equal(result.sycl_queue, x2.sycl_queue) +@pytest.mark.usefixtures("allow_fall_back_on_numpy") @pytest.mark.parametrize( "device", valid_devices, diff --git a/tests/third_party/cupy/core_tests/test_dlpack.py b/tests/third_party/cupy/core_tests/test_dlpack.py index 18eba557409..77d346d7bd6 100644 --- a/tests/third_party/cupy/core_tests/test_dlpack.py +++ b/tests/third_party/cupy/core_tests/test_dlpack.py @@ -11,24 +11,18 @@ def _gen_array(dtype, alloc_q=None): if cupy.issubdtype(dtype, numpy.unsignedinteger): - array = cupy.random.randint( - 0, 10, size=(2, 3), sycl_queue=alloc_q - ).astype(dtype) + array = numpy.random.randint(0, 10, size=(2, 3)) elif cupy.issubdtype(dtype, cupy.integer): - array = cupy.random.randint( - -10, 10, size=(2, 3), sycl_queue=alloc_q - ).astype(dtype) + array = numpy.random.randint(-10, 10, size=(2, 3)) elif cupy.issubdtype(dtype, cupy.floating): - array = cupy.random.rand(2, 3, sycl_queue=alloc_q).astype(dtype) + array = numpy.random.rand(2, 3) elif cupy.issubdtype(dtype, cupy.complexfloating): - array = cupy.random.random((2, 3), sycl_queue=alloc_q).astype(dtype) + array = numpy.random.random((2, 3)) elif dtype == cupy.bool_: - array = cupy.random.randint( - 0, 2, size=(2, 3), sycl_queue=alloc_q - ).astype(cupy.bool_) + array = numpy.random.randint(0, 2, size=(2, 3)) else: assert False, f"unrecognized dtype: {dtype}" - return array + return cupy.asarray(array, sycl_queue=alloc_q).astype(dtype) class TestDLPackConversion(unittest.TestCase): diff --git a/tests/third_party/cupy/indexing_tests/test_indexing.py b/tests/third_party/cupy/indexing_tests/test_indexing.py index ca2f9a9cc6c..a74495cba04 100644 --- a/tests/third_party/cupy/indexing_tests/test_indexing.py +++ b/tests/third_party/cupy/indexing_tests/test_indexing.py @@ -205,6 +205,7 @@ def test_extract_empty_1dim(self, xp): return xp.extract(b, a) +@pytest.mark.usefixtures("allow_fall_back_on_numpy") class TestChoose(unittest.TestCase): @testing.for_all_dtypes() @testing.numpy_cupy_array_equal() @@ -213,7 +214,6 @@ def test_choose(self, xp, dtype): c = testing.shaped_arange((3, 4), xp, dtype) return a.choose(c) - @pytest.mark.usefixtures("allow_fall_back_on_numpy") @testing.for_all_dtypes() @testing.numpy_cupy_array_equal() def test_choose_broadcast(self, xp, dtype): @@ -221,7 +221,6 @@ def test_choose_broadcast(self, xp, dtype): c = xp.array([-10, 10]).astype(dtype) return a.choose(c) - @pytest.mark.usefixtures("allow_fall_back_on_numpy") @testing.for_all_dtypes() @testing.numpy_cupy_array_equal() def test_choose_broadcast2(self, xp, dtype): @@ -229,7 +228,6 @@ def test_choose_broadcast2(self, xp, dtype): c = testing.shaped_arange((3, 5, 2), xp, dtype) return a.choose(c) - @pytest.mark.usefixtures("allow_fall_back_on_numpy") @testing.for_all_dtypes() @testing.numpy_cupy_array_equal() def test_choose_wrap(self, xp, dtype): @@ -237,7 +235,6 @@ def test_choose_wrap(self, xp, dtype): c = testing.shaped_arange((3, 4), xp, dtype) return a.choose(c, mode="wrap") - @pytest.mark.usefixtures("allow_fall_back_on_numpy") @testing.for_all_dtypes() @testing.numpy_cupy_array_equal() def test_choose_clip(self, xp, dtype): @@ -245,7 +242,6 @@ def test_choose_clip(self, xp, dtype): c = testing.shaped_arange((3, 4), xp, dtype) return a.choose(c, mode="clip") - @pytest.mark.usefixtures("allow_fall_back_on_numpy") @testing.with_requires("numpy>=1.19") def test_unknown_clip(self): for xp in (numpy, cupy): @@ -254,14 +250,12 @@ def test_unknown_clip(self): with pytest.raises(ValueError): a.choose(c, mode="unknown") - @pytest.mark.usefixtures("allow_fall_back_on_numpy") def test_raise(self): a = cupy.array([2]) c = cupy.array([[0, 1]]) with self.assertRaises(ValueError): a.choose(c) - @pytest.mark.usefixtures("allow_fall_back_on_numpy") @testing.for_all_dtypes() def test_choose_broadcast_fail(self, dtype): for xp in (numpy, cupy): diff --git a/tests/third_party/cupy/linalg_tests/test_solve.py b/tests/third_party/cupy/linalg_tests/test_solve.py index dd15e8303af..35315b8d78b 100644 --- a/tests/third_party/cupy/linalg_tests/test_solve.py +++ b/tests/third_party/cupy/linalg_tests/test_solve.py @@ -61,8 +61,12 @@ def test_solve(self): def check_shape(self, a_shape, b_shape, error_types): for xp, error_type in error_types.items(): - a = xp.random.rand(*a_shape) - b = xp.random.rand(*b_shape) + if xp is cupy and cupy.is_cuda_backend(): + a = xp.asarray(numpy.random.rand(*a_shape)) + b = xp.asarray(numpy.random.rand(*b_shape)) + else: + a = xp.random.rand(*a_shape) + b = xp.random.rand(*b_shape) with pytest.raises(error_type): xp.linalg.solve(a, b) @@ -137,7 +141,7 @@ def check_x(self, a_shape, dtype): testing.assert_array_equal(a_gpu_copy, a_gpu) def check_shape(self, a_shape): - a = cupy.random.rand(*a_shape) + a = cupy.asarray(numpy.random.rand(*a_shape)) with self.assertRaises(cupy.linalg.LinAlgError): cupy.linalg.inv(a) @@ -254,8 +258,8 @@ def check_lstsq_solution( return results def check_invalid_shapes(self, a_shape, b_shape): - a = cupy.random.rand(*a_shape) - b = cupy.random.rand(*b_shape) + a = cupy.asarray(numpy.random.rand(*a_shape)) + b = cupy.asarray(numpy.random.rand(*b_shape)) with pytest.raises(cupy.linalg.LinAlgError): cupy.linalg.lstsq(a, b, rcond=None) @@ -330,12 +334,12 @@ def check_x(self, a_shape, ind, dtype): testing.assert_array_equal(a_gpu_copy, a_gpu) def check_shape(self, a_shape, ind): - a = cupy.random.rand(*a_shape) + a = cupy.asarray(numpy.random.rand(*a_shape)) with self.assertRaises(cupy.linalg.LinAlgError): cupy.linalg.tensorinv(a, ind=ind) def check_ind(self, a_shape, ind): - a = cupy.random.rand(*a_shape) + a = cupy.asarray(numpy.random.rand(*a_shape)) with self.assertRaises(ValueError): cupy.linalg.tensorinv(a, ind=ind) diff --git a/tests/third_party/cupy/math_tests/test_arithmetic.py b/tests/third_party/cupy/math_tests/test_arithmetic.py index ffbad20aadf..91bba92f733 100644 --- a/tests/third_party/cupy/math_tests/test_arithmetic.py +++ b/tests/third_party/cupy/math_tests/test_arithmetic.py @@ -685,6 +685,7 @@ def test_casting_dtype_unsafe_ignore_warnings( class TestArithmeticModf: @testing.for_float_dtypes() @testing.numpy_cupy_allclose() + @pytest.mark.usefixtures("allow_fall_back_on_numpy") def test_modf(self, xp, dtype): a = xp.array([-2.5, -1.5, -0.5, 0, 0.5, 1.5, 2.5], dtype=dtype) b, c = xp.modf(a) diff --git a/tests/third_party/cupy/random_tests/test_distributions.py b/tests/third_party/cupy/random_tests/test_distributions.py index d73fa996139..47fa6058aec 100644 --- a/tests/third_party/cupy/random_tests/test_distributions.py +++ b/tests/third_party/cupy/random_tests/test_distributions.py @@ -599,6 +599,7 @@ def test_rayleigh_for_negative_scale(self, scale_dtype): ) ) class TestDistributionsStandardCauchy(RandomDistributionsTestCase): + @pytest.mark.usefixtures("allow_fall_back_on_numpy") def test_standard_cauchy(self): self.check_distribution("standard_cauchy", {}) @@ -611,6 +612,7 @@ def test_standard_cauchy(self): ) ) class TestDistributionsStandardExponential(RandomDistributionsTestCase): + @pytest.mark.usefixtures("allow_fall_back_on_numpy") def test_standard_exponential(self): self.check_distribution("standard_exponential", {}) @@ -639,6 +641,7 @@ def test_standard_gamma(self, shape_dtype): ) ) class TestDistributionsStandardNormal(RandomDistributionsTestCase): + @pytest.mark.usefixtures("allow_fall_back_on_numpy") def test_standard_normal(self): self.check_distribution("standard_normal", {}) diff --git a/tests/third_party/cupy/random_tests/test_sample.py b/tests/third_party/cupy/random_tests/test_sample.py index 2ef8f2605e5..14be32ea13d 100644 --- a/tests/third_party/cupy/random_tests/test_sample.py +++ b/tests/third_party/cupy/random_tests/test_sample.py @@ -10,6 +10,7 @@ from tests.third_party.cupy.testing import _condition, _hypothesis +@pytest.mark.usefixtures("allow_fall_back_on_numpy") class TestRandint(unittest.TestCase): def test_lo_hi_reversed(self): with self.assertRaises(ValueError): @@ -52,7 +53,7 @@ def test_bound_1(self): @pytest.mark.usefixtures("allow_fall_back_on_numpy") @_condition.repeat(3, 10) def test_bound_2(self): - vals = [random.randint(0, 2) for _ in range(20)] + vals = [random.randint(0, 2, ()) for _ in range(20)] for val in vals: self.assertEqual(val.shape, ()) self.assertEqual(min(_.min() for _ in vals), 0) @@ -106,6 +107,7 @@ def test_goodness_of_fit_2(self): self.assertTrue(_hypothesis.chi_square_test(counts, expected)) +@pytest.mark.usefixtures("allow_fall_back_on_numpy") class TestRandintDtype(unittest.TestCase): # numpy.int8, numpy.uint8, numpy.int16, numpy.uint16, numpy.int32]) @testing.for_dtypes([numpy.int32]) @@ -131,11 +133,11 @@ def test_dtype2(self, dtype): self.assertLessEqual(max(x), iinfo.max) # Lower bound check - with self.assertRaises(OverflowError): + with self.assertRaises((OverflowError, ValueError)): random.randint(iinfo.min - 1, iinfo.min + 10, size, dtype) # Upper bound check - with self.assertRaises(OverflowError): + with self.assertRaises((OverflowError, ValueError)): random.randint(iinfo.max - 10, iinfo.max + 2, size, dtype) diff --git a/tests/third_party/cupy/statistics_tests/test_histogram.py b/tests/third_party/cupy/statistics_tests/test_histogram.py index 521bd4062fb..c416a8123ee 100644 --- a/tests/third_party/cupy/statistics_tests/test_histogram.py +++ b/tests/third_party/cupy/statistics_tests/test_histogram.py @@ -140,7 +140,7 @@ def test_histogram_float_weights_dtype(self, xp, dtype): return h def test_histogram_weights_basic(self): - v = cupy.random.rand(100) + v = cupy.asarray(numpy.random.rand(100)) w = cupy.ones(100) * 5 a, b = cupy.histogram(v) na, nb = cupy.histogram(v, density=True) diff --git a/tests/third_party/cupy/statistics_tests/test_meanvar.py b/tests/third_party/cupy/statistics_tests/test_meanvar.py index ce5de823d61..d74ab3005ed 100644 --- a/tests/third_party/cupy/statistics_tests/test_meanvar.py +++ b/tests/third_party/cupy/statistics_tests/test_meanvar.py @@ -11,6 +11,7 @@ ) +@pytest.mark.usefixtures("allow_fall_back_on_numpy") class TestMedian: @testing.for_all_dtypes() @testing.numpy_cupy_allclose(type_check=has_support_aspect64()) @@ -18,42 +19,36 @@ def test_median_noaxis(self, xp, dtype): a = testing.shaped_random((3, 4, 5), xp, dtype) return xp.median(a) - @pytest.mark.usefixtures("allow_fall_back_on_numpy") @testing.for_all_dtypes() @testing.numpy_cupy_allclose(type_check=has_support_aspect64()) def test_median_axis1(self, xp, dtype): a = testing.shaped_random((3, 4, 5), xp, dtype) return xp.median(a, axis=1) - @pytest.mark.usefixtures("allow_fall_back_on_numpy") @testing.for_all_dtypes() @testing.numpy_cupy_allclose(type_check=has_support_aspect64()) def test_median_axis2(self, xp, dtype): a = testing.shaped_random((3, 4, 5), xp, dtype) return xp.median(a, axis=2) - @pytest.mark.usefixtures("allow_fall_back_on_numpy") @testing.for_all_dtypes() @testing.numpy_cupy_allclose() def test_median_overwrite_input(self, xp, dtype): a = testing.shaped_random((3, 4, 5), xp, dtype) return xp.median(a, overwrite_input=True) - @pytest.mark.usefixtures("allow_fall_back_on_numpy") @testing.for_all_dtypes() @testing.numpy_cupy_allclose(type_check=has_support_aspect64()) def test_median_keepdims_axis1(self, xp, dtype): a = testing.shaped_random((3, 4, 5), xp, dtype) return xp.median(a, axis=1, keepdims=True) - @pytest.mark.usefixtures("allow_fall_back_on_numpy") @testing.for_all_dtypes() @testing.numpy_cupy_allclose(type_check=has_support_aspect64()) def test_median_keepdims_noaxis(self, xp, dtype): a = testing.shaped_random((3, 4, 5), xp, dtype) return xp.median(a, keepdims=True) - @pytest.mark.usefixtures("allow_fall_back_on_numpy") def test_median_invalid_axis(self): for xp in [numpy, cupy]: a = testing.shaped_random((3, 4, 5), xp) From 0c64722f898ef146362253b151d0f657de902962 Mon Sep 17 00:00:00 2001 From: Natalia Polina Date: Thu, 26 Sep 2024 13:10:51 -0700 Subject: [PATCH 04/11] Applied review comments --- dpnp/dpnp_iface.py | 9 ++++++--- tests/conftest.py | 10 +++------- tests/skipped_tests_cuda.tbl | 4 ++-- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/dpnp/dpnp_iface.py b/dpnp/dpnp_iface.py index a2f86783791..1643dae4e6f 100644 --- a/dpnp/dpnp_iface.py +++ b/dpnp/dpnp_iface.py @@ -760,14 +760,14 @@ def get_usm_ndarray_or_scalar(a): def is_cuda_backend(obj=None): """ - Checks that object has a cuda backend. + Checks that object has a CUDA backend. Parameters ---------- obj : {Device, SyclDevice, SyclQueue, dpnp.ndarray, usm_ndarray, None}, optional An input object with sycl_device property to check device backend. - If obj is ``None``, device backend will be checked for the default + If `obj` is ``None``, device backend will be checked for the default queue. Default: ``None``. @@ -784,7 +784,10 @@ def is_cuda_backend(obj=None): sycl_device = obj else: sycl_device = getattr(obj, "sycl_device", None) - if sycl_device is not None and "cuda" in sycl_device.backend.name: + if ( + sycl_device is not None + and sycl_device.backend == dpctl.backend_type.cuda + ): return True return False diff --git a/tests/conftest.py b/tests/conftest.py index a8b4c4e1dca..1608970061d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -65,14 +65,12 @@ def pytest_collection_modifyitems(config, items): ) # global skip file for cuda backend - test_exclude_file_cuda = os.path.join( - test_path, "skipped_tests_cuda.tbl" - ) + test_exclude_file_cuda = os.path.join(test_path, "skipped_tests_cuda.tbl") dev = dpctl.select_default_device() is_cpu = dev.is_cpu is_gpu_no_fp64 = not dev.has_aspect_fp64 - is_cuda = "cuda" in str(dev.backend.name) + is_cuda = dpnp.is_cuda_backend(dev) print("") print(f"DPNP current device is CPU: {is_cpu}") @@ -89,9 +87,7 @@ def pytest_collection_modifyitems(config, items): get_excluded_tests(test_exclude_file_gpu_no_fp64) ) if is_cuda: - excluded_tests.extend( - get_excluded_tests(test_exclude_file_cuda) - ) + excluded_tests.extend(get_excluded_tests(test_exclude_file_cuda)) else: excluded_tests.extend(get_excluded_tests(test_exclude_file)) diff --git a/tests/skipped_tests_cuda.tbl b/tests/skipped_tests_cuda.tbl index 377cfe57ac3..2d4860a6dd4 100644 --- a/tests/skipped_tests_cuda.tbl +++ b/tests/skipped_tests_cuda.tbl @@ -379,7 +379,7 @@ tests/test_random_state.py::TestNormal::test_distr[host-float32] tests/test_random_state.py::TestNormal::test_distr[host-float64] tests/test_random_state.py::TestNormal::test_distr[host-None] tests/test_random_state.py::TestNormal::test_distr[device-float32] -tests/test_random_state.py::TestNormal::test_distr[device-float64] +tests/test_random_state.py::TestNormal::test_distr[device-float64] tests/test_random_state.py::TestNormal::test_distr[device-None] tests/test_random_state.py::TestNormal::test_distr[shared-float32] tests/test_random_state.py::TestNormal::test_distr[shared-float64] @@ -391,7 +391,7 @@ tests/test_random_state.py::TestNormal::test_scale[device-float32] tests/test_random_state.py::TestNormal::test_scale[device-float64] tests/test_random_state.py::TestNormal::test_scale[device-None] tests/test_random_state.py::TestNormal::test_scale[shared-float32] -tests/test_random_state.py::TestNormal::test_scale[shared-float64] +tests/test_random_state.py::TestNormal::test_scale[shared-float64] tests/test_random_state.py::TestNormal::test_scale[shared-None] tests/test_random_state.py::TestNormal::test_inf_loc[numpy.inf] tests/test_random_state.py::TestNormal::test_inf_loc[-numpy.inf] From 6e2c3c72b112927895c4c7226237c974796acee7 Mon Sep 17 00:00:00 2001 From: Natalia Polina Date: Fri, 25 Oct 2024 00:45:46 -0700 Subject: [PATCH 05/11] Update test_indexing.py --- tests/test_indexing.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test_indexing.py b/tests/test_indexing.py index 9538f07d15c..dd4e42112c3 100644 --- a/tests/test_indexing.py +++ b/tests/test_indexing.py @@ -728,6 +728,8 @@ class TestTakeAlongAxis: ], ) def test_argequivalent(self, func, argfunc, kwargs): + # TODO: to roll back the change once the issue with CUDA support is resolved for random + # a = dpnp.random.random(size=(3, 4, 5)) a = dpnp.asarray(numpy.random.random(size=(3, 4, 5))) for axis in list(range(a.ndim)) + [None]: From 4e3c87c6a450e6bd749b52552687e83a1591dbff Mon Sep 17 00:00:00 2001 From: Natalia Polina Date: Fri, 25 Oct 2024 00:50:05 -0700 Subject: [PATCH 06/11] Update test_solve.py --- tests/third_party/cupy/linalg_tests/test_solve.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/third_party/cupy/linalg_tests/test_solve.py b/tests/third_party/cupy/linalg_tests/test_solve.py index 8a04ed21104..8f98a85f077 100644 --- a/tests/third_party/cupy/linalg_tests/test_solve.py +++ b/tests/third_party/cupy/linalg_tests/test_solve.py @@ -67,6 +67,9 @@ def test_solve(self): def check_shape(self, a_shape, b_shape, error_types): for xp, error_type in error_types.items(): + # TODO: to roll back the change once the issue with CUDA support is resolved for random + # a = xp.random.rand(*a_shape) + # b = xp.random.rand(*b_shape) if xp is cupy and cupy.is_cuda_backend(): a = xp.asarray(numpy.random.rand(*a_shape)) b = xp.asarray(numpy.random.rand(*b_shape)) @@ -149,6 +152,8 @@ def check_x(self, a_shape, dtype): testing.assert_array_equal(a_gpu_copy, a_gpu) def check_shape(self, a_shape): + # TODO: to roll back the change once the issue with CUDA support is resolved for random + # a = cupy.random.rand(*a_shape) a = cupy.asarray(numpy.random.rand(*a_shape)) with self.assertRaises(cupy.linalg.LinAlgError): cupy.linalg.inv(a) @@ -266,6 +271,9 @@ def check_lstsq_solution( return results def check_invalid_shapes(self, a_shape, b_shape): + # TODO: to roll back the change once the issue with CUDA support is resolved for random + # a = cupy.random.rand(*a_shape) + # b = cupy.random.rand(*b_shape) a = cupy.asarray(numpy.random.rand(*a_shape)) b = cupy.asarray(numpy.random.rand(*b_shape)) with pytest.raises(cupy.linalg.LinAlgError): @@ -342,11 +350,15 @@ def check_x(self, a_shape, ind, dtype): testing.assert_array_equal(a_gpu_copy, a_gpu) def check_shape(self, a_shape, ind): + # TODO: to roll back the change once the issue with CUDA support is resolved for random + # a = cupy.random.rand(*a_shape) a = cupy.asarray(numpy.random.rand(*a_shape)) with self.assertRaises(cupy.linalg.LinAlgError): cupy.linalg.tensorinv(a, ind=ind) def check_ind(self, a_shape, ind): + # TODO: to roll back the change once the issue with CUDA support is resolved for random + # a = cupy.random.rand(*a_shape) a = cupy.asarray(numpy.random.rand(*a_shape)) with self.assertRaises(ValueError): cupy.linalg.tensorinv(a, ind=ind) From 94a418ed6b923e7b7ab7d01c0bc22b04d39d5585 Mon Sep 17 00:00:00 2001 From: Natalia Polina Date: Fri, 25 Oct 2024 00:50:46 -0700 Subject: [PATCH 07/11] Update test_histogram.py --- tests/third_party/cupy/statistics_tests/test_histogram.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/third_party/cupy/statistics_tests/test_histogram.py b/tests/third_party/cupy/statistics_tests/test_histogram.py index c416a8123ee..b917d9115df 100644 --- a/tests/third_party/cupy/statistics_tests/test_histogram.py +++ b/tests/third_party/cupy/statistics_tests/test_histogram.py @@ -140,6 +140,8 @@ def test_histogram_float_weights_dtype(self, xp, dtype): return h def test_histogram_weights_basic(self): + # TODO: to roll back the change once the issue with CUDA support is resolved for random + # v = cupy.random.rand(100)) v = cupy.asarray(numpy.random.rand(100)) w = cupy.ones(100) * 5 a, b = cupy.histogram(v) From 1461e812c66f6f49a076c78d11c2c053b9b3635c Mon Sep 17 00:00:00 2001 From: Natalia Polina Date: Fri, 25 Oct 2024 00:52:08 -0700 Subject: [PATCH 08/11] Update test_histogram.py --- tests/third_party/cupy/statistics_tests/test_histogram.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/third_party/cupy/statistics_tests/test_histogram.py b/tests/third_party/cupy/statistics_tests/test_histogram.py index b917d9115df..10984fe0f0e 100644 --- a/tests/third_party/cupy/statistics_tests/test_histogram.py +++ b/tests/third_party/cupy/statistics_tests/test_histogram.py @@ -141,7 +141,7 @@ def test_histogram_float_weights_dtype(self, xp, dtype): def test_histogram_weights_basic(self): # TODO: to roll back the change once the issue with CUDA support is resolved for random - # v = cupy.random.rand(100)) + # v = cupy.random.rand(100) v = cupy.asarray(numpy.random.rand(100)) w = cupy.ones(100) * 5 a, b = cupy.histogram(v) From 519008e555a11358a030bcd6009322fbb6dbc73a Mon Sep 17 00:00:00 2001 From: Vladislav Perevezentsev Date: Thu, 14 Nov 2024 07:40:49 -0800 Subject: [PATCH 09/11] Update skipped_tests_cuda.tbl --- tests/skipped_tests_cuda.tbl | 205 ++++++++++++++++++----------------- 1 file changed, 107 insertions(+), 98 deletions(-) diff --git a/tests/skipped_tests_cuda.tbl b/tests/skipped_tests_cuda.tbl index 2d4860a6dd4..99201a47740 100644 --- a/tests/skipped_tests_cuda.tbl +++ b/tests/skipped_tests_cuda.tbl @@ -41,7 +41,6 @@ tests/test_fft.py::TestFftn::test_fftn_out[s1-axes0] tests/test_fft.py::TestFftn::test_fftn_out[s2-axes0] tests/test_fft.py::TestFftn::test_fftn_out[s2-axes1] tests/test_fft.py::TestFftn::test_fftn_out[s2-axes2] -tests/test_fft.py::TestRfftn::test_rfftn_out[s1-axes1] tests/test_fft.py::TestRfftn::test_rfftn_out[s2-axes0] tests/third_party/cupy/fft_tests/test_fft.py::TestFft2::test_fft2[_param_50_{axes=None, norm=None, s=None, shape=(2, 3, 4, 5)}] tests/third_party/cupy/fft_tests/test_fft.py::TestFft2::test_fft2[_param_51_{axes=None, norm='backward', s=None, shape=(2, 3, 4, 5)}] @@ -60,7 +59,7 @@ tests/third_party/cupy/fft_tests/test_fft.py::TestFftn::test_ifftn[_param_61_{ax tests/third_party/cupy/fft_tests/test_fft.py::TestFftn::test_ifftn[_param_62_{axes=None, norm='ortho', s=None, shape=(2, 3, 4, 5)}] tests/third_party/cupy/fft_tests/test_fft.py::TestFftn::test_ifftn[_param_63_{axes=None, norm='forward', s=None, shape=(2, 3, 4, 5)}] -# std +# linalg tests/test_linalg.py::TestCond::test_cond_nan_input[-dpnp.inf] tests/test_linalg.py::TestCond::test_cond_nan_input[-1] tests/test_linalg.py::TestCond::test_cond_nan_input[1] @@ -71,7 +70,7 @@ tests/test_linalg.py::TestCond::test_cond_nan[-1] tests/test_linalg.py::TestCond::test_cond_nan[1] tests/test_linalg.py::TestCond::test_cond_nan[dpnp.inf] tests/test_linalg.py::TestCond::test_cond_nan[fro] -tests/test_linalg.py::TestLstsq::test_lstsq[a_shape6-b_shape6-bool_] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape6-b_shape6-bool] tests/test_linalg.py::TestLstsq::test_lstsq[a_shape6-b_shape6-int32] tests/test_linalg.py::TestLstsq::test_lstsq[a_shape6-b_shape6-int64] tests/test_linalg.py::TestLstsq::test_lstsq[a_shape6-b_shape6-float32] @@ -79,7 +78,7 @@ tests/test_linalg.py::TestLstsq::test_lstsq[a_shape6-b_shape6-float64] tests/test_linalg.py::TestLstsq::test_lstsq[a_shape6-b_shape6-complex64] tests/test_linalg.py::TestLstsq::test_lstsq[a_shape6-b_shape6-complex128] tests/test_linalg.py::TestLstsq::test_lstsq[a_shape6-b_shape6-None] -tests/test_linalg.py::TestLstsq::test_lstsq[a_shape7-b_shape7-bool_] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape7-b_shape7-bool] tests/test_linalg.py::TestLstsq::test_lstsq[a_shape7-b_shape7-int32] tests/test_linalg.py::TestLstsq::test_lstsq[a_shape7-b_shape7-int64] tests/test_linalg.py::TestLstsq::test_lstsq[a_shape7-b_shape7-float32] @@ -87,7 +86,7 @@ tests/test_linalg.py::TestLstsq::test_lstsq[a_shape7-b_shape7-float64] tests/test_linalg.py::TestLstsq::test_lstsq[a_shape7-b_shape7-complex64] tests/test_linalg.py::TestLstsq::test_lstsq[a_shape7-b_shape7-complex128] tests/test_linalg.py::TestLstsq::test_lstsq[a_shape7-b_shape7-None] -tests/test_linalg.py::TestLstsq::test_lstsq[a_shape8-b_shape8-bool_] +tests/test_linalg.py::TestLstsq::test_lstsq[a_shape8-b_shape8-bool] tests/test_linalg.py::TestLstsq::test_lstsq[a_shape8-b_shape8-int32] tests/test_linalg.py::TestLstsq::test_lstsq[a_shape8-b_shape8-int64] tests/test_linalg.py::TestLstsq::test_lstsq[a_shape8-b_shape8-float32] @@ -95,103 +94,109 @@ tests/test_linalg.py::TestLstsq::test_lstsq[a_shape8-b_shape8-float64] tests/test_linalg.py::TestLstsq::test_lstsq[a_shape8-b_shape8-complex64] tests/test_linalg.py::TestLstsq::test_lstsq[a_shape8-b_shape8-complex128] tests/test_linalg.py::TestLstsq::test_lstsq[a_shape8-b_shape8-None] -tests/test_linalg.py::TestNorm::test_norm_2D[True-None--2-bool_] +tests/test_linalg.py::TestNorm::test_matrix_norm[True--2] +tests/test_linalg.py::TestNorm::test_matrix_norm[True-2] +tests/test_linalg.py::TestNorm::test_matrix_norm[True-nuc] +tests/test_linalg.py::TestNorm::test_matrix_norm[False--2] +tests/test_linalg.py::TestNorm::test_matrix_norm[False-2] +tests/test_linalg.py::TestNorm::test_matrix_norm[False-nuc] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None--2-bool] tests/test_linalg.py::TestNorm::test_norm_2D[True-None--2-int32] tests/test_linalg.py::TestNorm::test_norm_2D[True-None--2-int64] tests/test_linalg.py::TestNorm::test_norm_2D[True-None--2-float32] tests/test_linalg.py::TestNorm::test_norm_2D[True-None--2-float64] tests/test_linalg.py::TestNorm::test_norm_2D[True-None--2-None] -tests/test_linalg.py::TestNorm::test_norm_2D[True-None-2-bool_] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None-2-bool] tests/test_linalg.py::TestNorm::test_norm_2D[True-None-2-int32] tests/test_linalg.py::TestNorm::test_norm_2D[True-None-2-int64] tests/test_linalg.py::TestNorm::test_norm_2D[True-None-2-float32] tests/test_linalg.py::TestNorm::test_norm_2D[True-None-2-float64] tests/test_linalg.py::TestNorm::test_norm_2D[True-None-2-None] -tests/test_linalg.py::TestNorm::test_norm_2D[True-None-"nuc"-bool_] -tests/test_linalg.py::TestNorm::test_norm_2D[True-None-"nuc"-int32] -tests/test_linalg.py::TestNorm::test_norm_2D[True-None-"nuc"-int64] -tests/test_linalg.py::TestNorm::test_norm_2D[True-None-"nuc"-float32] -tests/test_linalg.py::TestNorm::test_norm_2D[True-None-"nuc"-float64] -tests/test_linalg.py::TestNorm::test_norm_2D[True-None-"nuc"-None] -tests/test_linalg.py::TestNorm::test_norm_2D[False-None--2-bool_] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None-nuc-bool] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None-nuc-int32] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None-nuc-int64] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None-nuc-float32] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None-nuc-float64] +tests/test_linalg.py::TestNorm::test_norm_2D[True-None-nuc-None] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None--2-bool] tests/test_linalg.py::TestNorm::test_norm_2D[False-None--2-int32] tests/test_linalg.py::TestNorm::test_norm_2D[False-None--2-int64] tests/test_linalg.py::TestNorm::test_norm_2D[False-None--2-float32] tests/test_linalg.py::TestNorm::test_norm_2D[False-None--2-float64] tests/test_linalg.py::TestNorm::test_norm_2D[False-None--2-None] -tests/test_linalg.py::TestNorm::test_norm_2D[False-None-2-bool_] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None-2-bool] tests/test_linalg.py::TestNorm::test_norm_2D[False-None-2-int32] tests/test_linalg.py::TestNorm::test_norm_2D[False-None-2-int64] tests/test_linalg.py::TestNorm::test_norm_2D[False-None-2-float32] tests/test_linalg.py::TestNorm::test_norm_2D[False-None-2-float64] tests/test_linalg.py::TestNorm::test_norm_2D[False-None-2-None] -tests/test_linalg.py::TestNorm::test_norm_2D[False-None-"nuc"-bool_] -tests/test_linalg.py::TestNorm::test_norm_2D[False-None-"nuc"-int32] -tests/test_linalg.py::TestNorm::test_norm_2D[False-None-"nuc"-int64] -tests/test_linalg.py::TestNorm::test_norm_2D[False-None-"nuc"-float32] -tests/test_linalg.py::TestNorm::test_norm_2D[False-None-"nuc"-float64] -tests/test_linalg.py::TestNorm::test_norm_2D[False-None-"nuc"-None] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None-nuc-bool] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None-nuc-int32] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None-nuc-int64] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None-nuc-float32] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None-nuc-float64] +tests/test_linalg.py::TestNorm::test_norm_2D[False-None-nuc-None] tests/test_linalg.py::TestNorm::test_norm_2D_complex[True-None--2-complex64] tests/test_linalg.py::TestNorm::test_norm_2D_complex[True-None--2-complex128] tests/test_linalg.py::TestNorm::test_norm_2D_complex[True-None-2-complex64] tests/test_linalg.py::TestNorm::test_norm_2D_complex[True-None-2-complex128] -tests/test_linalg.py::TestNorm::test_norm_2D_complex[True-None-"nuc"-complex64] -tests/test_linalg.py::TestNorm::test_norm_2D_complex[True-None-"nuc"-complex128] +tests/test_linalg.py::TestNorm::test_norm_2D_complex[True-None-nuc-complex64] +tests/test_linalg.py::TestNorm::test_norm_2D_complex[True-None-nuc-complex128] tests/test_linalg.py::TestNorm::test_norm_2D_complex[False-None--2-complex64] tests/test_linalg.py::TestNorm::test_norm_2D_complex[False-None--2-complex128] tests/test_linalg.py::TestNorm::test_norm_2D_complex[False-None-2-complex64] tests/test_linalg.py::TestNorm::test_norm_2D_complex[False-None-2-complex128] -tests/test_linalg.py::TestNorm::test_norm_2D_complex[False-None-"nuc"-complex64] -tests/test_linalg.py::TestNorm::test_norm_2D_complex[False-None-"nuc"-complex128] -tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)--2-bool_] +tests/test_linalg.py::TestNorm::test_norm_2D_complex[False-None-nuc-complex64] +tests/test_linalg.py::TestNorm::test_norm_2D_complex[False-None-nuc-complex128] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)--2-bool] tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)--2-int32] tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)--2-int64] tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)--2-float32] tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)--2-float64] tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)--2-None] -tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-2-bool_] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-2-bool] tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-2-int32] tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-2-int64] tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-2-float32] tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-2-float64] tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-2-None] -tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-"nuc"-bool_] -tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-"nuc"-int32] -tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-"nuc"-int64] -tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-"nuc"-float32] -tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-"nuc"-float64] -tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-"nuc"-None] -tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)--2-bool_] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-nuc-bool] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-nuc-int32] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-nuc-int64] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-nuc-float32] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-nuc-float64] +tests/test_linalg.py::TestNorm::test_norm_ND[True-(0, 1)-nuc-None] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)--2-bool] tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)--2-int32] tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)--2-int64] tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)--2-float32] tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)--2-float64] tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)--2-None] -tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-2-bool_] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-2-bool] tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-2-int32] tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-2-int64] tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-2-float32] tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-2-float64] tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-2-None] -tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-"nuc"-bool_] -tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-"nuc"-int32] -tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-"nuc"-int64] -tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-"nuc"-float32] -tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-"nuc"-float64] -tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-"nuc"-None] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-nuc-bool] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-nuc-int32] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-nuc-int64] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-nuc-float32] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-nuc-float64] +tests/test_linalg.py::TestNorm::test_norm_ND[False-(0, 1)-nuc-None] tests/test_linalg.py::TestNorm::test_norm_ND_complex[True-(0, 1)--2-complex64] tests/test_linalg.py::TestNorm::test_norm_ND_complex[True-(0, 1)--2-complex128] tests/test_linalg.py::TestNorm::test_norm_ND_complex[True-(0, 1)-2-complex64] tests/test_linalg.py::TestNorm::test_norm_ND_complex[True-(0, 1)-2-complex128] -tests/test_linalg.py::TestNorm::test_norm_ND_complex[True-(0, 1)-"nuc"-complex64] -tests/test_linalg.py::TestNorm::test_norm_ND_complex[True-(0, 1)-"nuc"-complex128] +tests/test_linalg.py::TestNorm::test_norm_ND_complex[True-(0, 1)-nuc-complex64] +tests/test_linalg.py::TestNorm::test_norm_ND_complex[True-(0, 1)-nuc-complex128] tests/test_linalg.py::TestNorm::test_norm_ND_complex[False-(0, 1)--2-complex64] tests/test_linalg.py::TestNorm::test_norm_ND_complex[False-(0, 1)--2-complex128] tests/test_linalg.py::TestNorm::test_norm_ND_complex[False-(0, 1)-2-complex64] tests/test_linalg.py::TestNorm::test_norm_ND_complex[False-(0, 1)-2-complex128] -tests/test_linalg.py::TestNorm::test_norm_ND_complex[False-(0, 1)-"nuc"-complex64] -tests/test_linalg.py::TestNorm::test_norm_ND_complex[False-(0, 1)-"nuc"-complex128] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)--2-bool_] +tests/test_linalg.py::TestNorm::test_norm_ND_complex[False-(0, 1)-nuc-complex64] +tests/test_linalg.py::TestNorm::test_norm_ND_complex[False-(0, 1)-nuc-complex128] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)--2-bool] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)--2-int32] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)--2-int64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)--2-float32] @@ -199,7 +204,7 @@ tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)--2-float64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)--2-complex64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)--2-complex128] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)--2-None] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-2-bool_] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-2-bool] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-2-int32] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-2-int64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-2-float32] @@ -207,15 +212,15 @@ tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-2-float64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-2-complex64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-2-complex128] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-2-None] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-"nuc"-bool_] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-"nuc"-int32] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-"nuc"-int64] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-"nuc"-float32] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-"nuc"-float64] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-"nuc"-complex64] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-"nuc"-complex128] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-"nuc"-None] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)--2-bool_] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-nuc-bool] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-nuc-int32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-nuc-int64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-nuc-float32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-nuc-float64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-nuc-complex64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-nuc-complex128] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(0, 1)-nuc-None] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)--2-bool] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)--2-int32] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)--2-int64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)--2-float32] @@ -223,7 +228,7 @@ tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)--2-float64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)--2-complex64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)--2-complex128] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)--2-None] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-2-bool_] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-2-bool] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-2-int32] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-2-int64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-2-float32] @@ -231,15 +236,15 @@ tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-2-float64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-2-complex64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-2-complex128] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-2-None] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-"nuc"-bool_] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-"nuc"-int32] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-"nuc"-int64] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-"nuc"-float32] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-"nuc"-float64] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-"nuc"-complex64] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-"nuc"-complex128] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-"nuc"-None] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)--2-bool_] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-nuc-bool] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-nuc-int32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-nuc-int64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-nuc-float32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-nuc-float64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-nuc-complex64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-nuc-complex128] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[True-(-2, -1)-nuc-None] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)--2-bool] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)--2-int32] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)--2-int64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)--2-float32] @@ -247,7 +252,7 @@ tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)--2-float64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)--2-complex64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)--2-complex128] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)--2-None] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-2-bool_] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-2-bool] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-2-int32] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-2-int64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-2-float32] @@ -255,15 +260,15 @@ tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-2-float64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-2-complex64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-2-complex128] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-2-None] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-"nuc"-bool_] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-"nuc"-int32] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-"nuc"-int64] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-"nuc"-float32] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-"nuc"-float64] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-"nuc"-complex64] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-"nuc"-complex128] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-"nuc"-None] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)--2-bool_] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-nuc-bool] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-nuc-int32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-nuc-int64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-nuc-float32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-nuc-float64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-nuc-complex64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-nuc-complex128] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(0, 1)-nuc-None] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)--2-bool] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)--2-int32] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)--2-int64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)--2-float32] @@ -271,7 +276,7 @@ tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)--2-float64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)--2-complex64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)--2-complex128] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)--2-None] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-2-bool_] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-2-bool] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-2-int32] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-2-int64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-2-float32] @@ -279,14 +284,14 @@ tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-2-float64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-2-complex64] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-2-complex128] tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-2-None] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-"nuc"-bool_] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-"nuc"-int32] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-"nuc"-int64] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-"nuc"-float32] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-"nuc"-float64] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-"nuc"-complex64] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-"nuc"-complex128] -tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-"nuc"-None] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-nuc-bool] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-nuc-int32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-nuc-int64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-nuc-float32] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-nuc-float64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-nuc-complex64] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-nuc-complex128] +tests/test_linalg.py::TestNorm::test_norm_usm_ndarray[False-(-2, -1)-nuc-None] tests/test_linalg.py::TestSvd::test_svd[(3,4)-int32] tests/test_linalg.py::TestSvd::test_svd[(3,4)-int64] tests/test_linalg.py::TestSvd::test_svd[(3,4)-float32] @@ -294,6 +299,13 @@ tests/test_linalg.py::TestSvd::test_svd[(3,4)-float64] tests/test_linalg.py::TestSvd::test_svd[(3,4)-complex64] tests/test_linalg.py::TestSvd::test_svd[(3,4)-complex128] tests/test_linalg.py::TestSvd::test_svd[(3,4)-None] +tests/test_linalg.py::TestSvdvals::test_svdvals[(3,5)-int32] +tests/test_linalg.py::TestSvdvals::test_svdvals[(3,5)-int64] +tests/test_linalg.py::TestSvdvals::test_svdvals[(3,5)-float32] +tests/test_linalg.py::TestSvdvals::test_svdvals[(3,5)-float64] +tests/test_linalg.py::TestSvdvals::test_svdvals[(3,5)-complex64] +tests/test_linalg.py::TestSvdvals::test_svdvals[(3,5)-complex128] +tests/test_linalg.py::TestSvdvals::test_svdvals[(3,5)-None] tests/test_linalg.py::TestPinv::test_pinv[(3, 4)-int32] tests/test_linalg.py::TestPinv::test_pinv[(3, 4)-int64] tests/test_linalg.py::TestPinv::test_pinv[(3, 4)-float32] @@ -308,27 +320,27 @@ tests/test_linalg.py::TestPinv::test_pinv[(2, 2, 4)-float64] tests/test_linalg.py::TestPinv::test_pinv[(2, 2, 4)-complex64] tests/test_linalg.py::TestPinv::test_pinv[(2, 2, 4)-complex128] tests/test_linalg.py::TestPinv::test_pinv[(2, 2, 4)-None] -tests/test_usm_type.py::test_cond[-dpnp.inf-device] -tests/test_usm_type.py::test_cond[-dpnp.inf-shared] -tests/test_usm_type.py::test_cond[-dpnp.inf-host] +tests/test_usm_type.py::test_cond[-inf-device] +tests/test_usm_type.py::test_cond[-inf-shared] +tests/test_usm_type.py::test_cond[-inf-host] tests/test_usm_type.py::test_cond[-1-device] tests/test_usm_type.py::test_cond[-1-shared] tests/test_usm_type.py::test_cond[-1-host] tests/test_usm_type.py::test_cond[1-device] tests/test_usm_type.py::test_cond[1-shared] tests/test_usm_type.py::test_cond[1-host] -tests/test_usm_type.py::test_cond[dpnp.inf-device] -tests/test_usm_type.py::test_cond[dpnp.inf-shared] -tests/test_usm_type.py::test_cond[dpnp.inf-host] +tests/test_usm_type.py::test_cond[inf-device] +tests/test_usm_type.py::test_cond[inf-shared] +tests/test_usm_type.py::test_cond[inf-host] tests/test_usm_type.py::test_cond[fro-device] tests/test_usm_type.py::test_cond[fro-shared] tests/test_usm_type.py::test_cond[fro-host] tests/test_sycl_queue.py::test_norm[(0, 1)--2-cuda:gpu:0] tests/test_sycl_queue.py::test_norm[(0, 1)-2-cuda:gpu:0] -tests/test_sycl_queue.py::test_norm[(0, 1)-"nuc"-cuda:gpu:0] +tests/test_sycl_queue.py::test_norm[(0, 1)-nuc-cuda:gpu:0] tests/test_sycl_queue.py::test_norm[(-2, -1)--2-cuda:gpu:0] tests/test_sycl_queue.py::test_norm[(-2, -1)-2-cuda:gpu:0] -tests/test_sycl_queue.py::test_norm[(-2, -1)-"nuc"-cuda:gpu:0] +tests/test_sycl_queue.py::test_norm[(-2, -1)-nuc-cuda:gpu:0] tests/test_sycl_queue.py::test_pinv[cuda:gpu:0-(2, 2, 3)] tests/test_sycl_queue.py::test_pinv[cuda:gpu:0-(2, 2, 3), rcond_as_array] tests/third_party/cupy/linalg_tests/test_decomposition.py::TestSVD_param_0_{full_matrices=True}::test_svd_rank2 @@ -368,11 +380,8 @@ tests/third_party/cupy/linalg_tests/test_solve.py::TestPinv::test_pinv_batched tests/third_party/cupy/linalg_tests/test_solve.py::TestPinv::test_pinv_batched_vector_rcond tests/third_party/cupy/linalg_tests/test_solve.py::TestLstsq::test_lstsq_solutions -# matmul -tests/third_party/cupy/math_tests/test_matmul.py::TestMatmulIntegralLargeBatch::test_cupy_matmul[shape10-shape20] -tests/third_party/cupy/math_tests/test_matmul.py::TestMatmulIntegralLargeBatch::test_cupy_matmul[shape11-shape21] -tests/third_party/cupy/math_tests/test_matmul.py::TestMatmulIntegralLargeBatch::test_operator_matmul[shape10-shape20] -tests/third_party/cupy/math_tests/test_matmul.py::TestMatmulIntegralLargeBatch::test_operator_matmul[shape11-shape21] +# spacing +tests/test_mathematical.py::TestSpacing::test_zeros[float32] # random state tests/test_random_state.py::TestNormal::test_distr[host-float32] From a38949d7dbd81d51aa1c45bb4f0d0e17e6817c19 Mon Sep 17 00:00:00 2001 From: Vladislav Perevezentsev Date: Thu, 14 Nov 2024 07:44:57 -0800 Subject: [PATCH 10/11] Apply fallback to numpy for TestRational and test_copy_multigpu --- tests/third_party/cupy/creation_tests/test_from_data.py | 1 + tests/third_party/cupy/math_tests/test_rational.py | 2 ++ 2 files changed, 3 insertions(+) diff --git a/tests/third_party/cupy/creation_tests/test_from_data.py b/tests/third_party/cupy/creation_tests/test_from_data.py index a2abbf608c7..ce5c489c5c4 100644 --- a/tests/third_party/cupy/creation_tests/test_from_data.py +++ b/tests/third_party/cupy/creation_tests/test_from_data.py @@ -516,6 +516,7 @@ def test_copy(self, xp, dtype, order): @testing.for_CF_orders() @testing.for_all_dtypes() + @pytest.mark.usefixtures("allow_fall_back_on_numpy") def test_copy_multigpu(self, dtype, order): q1 = dpctl.SyclQueue() q2 = dpctl.SyclQueue() diff --git a/tests/third_party/cupy/math_tests/test_rational.py b/tests/third_party/cupy/math_tests/test_rational.py index 6dd2a863a4c..594530d739b 100644 --- a/tests/third_party/cupy/math_tests/test_rational.py +++ b/tests/third_party/cupy/math_tests/test_rational.py @@ -7,6 +7,7 @@ class TestRational(unittest.TestCase): + @pytest.mark.usefixtures("allow_fall_back_on_numpy") @testing.for_dtypes(["?", "e", "f", "d", "F", "D"]) def test_gcd_dtype_check(self, dtype): a = cupy.random.randint(-10, 10, size=(10, 10)).astype(dtype) @@ -21,6 +22,7 @@ def test_gcd_check_boundary_cases(self, xp, dtype): b = xp.array([0, 5, -10, -5, 20, 51, 6, 42]) return xp.gcd(a, b) + @pytest.mark.usefixtures("allow_fall_back_on_numpy") @testing.for_dtypes(["?", "e", "f", "d", "F", "D"]) def test_lcm_dtype_check(self, dtype): a = cupy.random.randint(-10, 10, size=(10, 10)).astype(dtype) From 139c7843f253bd8b66a957a9db3e29ddd9888746 Mon Sep 17 00:00:00 2001 From: Vladislav Perevezentsev Date: Thu, 14 Nov 2024 07:56:30 -0800 Subject: [PATCH 11/11] Address remarks --- dpnp/dpnp_iface.py | 2 +- tests/third_party/cupy/core_tests/test_dlpack.py | 1 + tests/third_party/cupy/statistics_tests/test_meanvar.py | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dpnp/dpnp_iface.py b/dpnp/dpnp_iface.py index a2b4478d9ee..c2c30d007cb 100644 --- a/dpnp/dpnp_iface.py +++ b/dpnp/dpnp_iface.py @@ -750,7 +750,7 @@ def is_cuda_backend(obj=None): Returns ------- out : bool - Return ``True`` if object has a cuda backend, otherwise``False``. + Return ``True`` if object has a CUDA backend, otherwise ``False``. """ diff --git a/tests/third_party/cupy/core_tests/test_dlpack.py b/tests/third_party/cupy/core_tests/test_dlpack.py index 77d346d7bd6..8e4e9c05917 100644 --- a/tests/third_party/cupy/core_tests/test_dlpack.py +++ b/tests/third_party/cupy/core_tests/test_dlpack.py @@ -9,6 +9,7 @@ from tests.third_party.cupy import testing +# TODO: to roll back the changes once the issue with CUDA support is resolved for random def _gen_array(dtype, alloc_q=None): if cupy.issubdtype(dtype, numpy.unsignedinteger): array = numpy.random.randint(0, 10, size=(2, 3)) diff --git a/tests/third_party/cupy/statistics_tests/test_meanvar.py b/tests/third_party/cupy/statistics_tests/test_meanvar.py index 30f6e9f8bba..465d0e8e511 100644 --- a/tests/third_party/cupy/statistics_tests/test_meanvar.py +++ b/tests/third_party/cupy/statistics_tests/test_meanvar.py @@ -11,7 +11,6 @@ ) -@pytest.mark.usefixtures("allow_fall_back_on_numpy") class TestMedian: @testing.for_all_dtypes() @testing.numpy_cupy_allclose(type_check=has_support_aspect64())