Repository: cupy/cupy

Issue:
Drop support for Python 3.7, NumPy 1.20, and SciPy 1.6 on document and setup.py
#7405 has some CI issues, so we update the documentation and setup.py first for the next release.


Discussion:

Resolving patch:
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -105,7 +105,6 @@
 License :: OSI Approved :: MIT License
 Programming Language :: Python
 Programming Language :: Python :: 3
-Programming Language :: Python :: 3.7
 Programming Language :: Python :: 3.8
 Programming Language :: Python :: 3.9
 Programming Language :: Python :: 3.10
@@ -138,7 +137,7 @@
     packages=find_packages(exclude=['install', 'tests']),
     package_data=package_data,
     zip_safe=False,
-    python_requires='>=3.7',
+    python_requires='>=3.8',
     setup_requires=setup_requires,
     install_requires=install_requires,
     tests_require=tests_require,


Test patch:
diff --git a/.pfnci/linux/tests/cuda102.Dockerfile b/.pfnci/linux/tests/cuda102.Dockerfile
--- a/.pfnci/linux/tests/cuda102.Dockerfile
+++ b/.pfnci/linux/tests/cuda102.Dockerfile
@@ -27,8 +27,8 @@ ENV PATH "/usr/lib/ccache:${PATH}"
 RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
 ENV PYENV_ROOT "/opt/pyenv"
 ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.7.11 && \
-    pyenv global 3.7.11 && \
+RUN pyenv install 3.8.11 && \
+    pyenv global 3.8.11 && \
     pip install -U setuptools pip
 
 RUN pip install -U 'numpy==1.20.*' 'scipy==1.6.*' 'optuna==3.*' 'cython==0.29.*'
diff --git a/.pfnci/linux/tests/cuda102.multi.Dockerfile b/.pfnci/linux/tests/cuda102.multi.Dockerfile
--- a/.pfnci/linux/tests/cuda102.multi.Dockerfile
+++ b/.pfnci/linux/tests/cuda102.multi.Dockerfile
@@ -27,8 +27,8 @@ ENV PATH "/usr/lib/ccache:${PATH}"
 RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
 ENV PYENV_ROOT "/opt/pyenv"
 ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.7.11 && \
-    pyenv global 3.7.11 && \
+RUN pyenv install 3.8.11 && \
+    pyenv global 3.8.11 && \
     pip install -U setuptools pip
 
 RUN pip install -U 'numpy==1.20.*' 'scipy==1.6.*' 'optuna==3.*' 'mpi4py==3.*' 'cython==0.29.*'
diff --git a/.pfnci/linux/tests/cuda111.Dockerfile b/.pfnci/linux/tests/cuda111.Dockerfile
--- a/.pfnci/linux/tests/cuda111.Dockerfile
+++ b/.pfnci/linux/tests/cuda111.Dockerfile
@@ -23,8 +23,8 @@ RUN /update-alternatives-cutensor.sh
 RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
 ENV PYENV_ROOT "/opt/pyenv"
 ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.7.11 && \
-    pyenv global 3.7.11 && \
+RUN pyenv install 3.8.11 && \
+    pyenv global 3.8.11 && \
     pip install -U setuptools pip
 
 RUN pip install -U 'numpy==1.20.*' 'cython==0.29.*'
diff --git a/.pfnci/linux/tests/cuda111.multi.Dockerfile b/.pfnci/linux/tests/cuda111.multi.Dockerfile
--- a/.pfnci/linux/tests/cuda111.multi.Dockerfile
+++ b/.pfnci/linux/tests/cuda111.multi.Dockerfile
@@ -23,8 +23,8 @@ RUN /update-alternatives-cutensor.sh
 RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
 ENV PYENV_ROOT "/opt/pyenv"
 ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.7.11 && \
-    pyenv global 3.7.11 && \
+RUN pyenv install 3.8.11 && \
+    pyenv global 3.8.11 && \
     pip install -U setuptools pip
 
 RUN pip install -U 'numpy==1.20.*' 'cython==0.29.*'
diff --git a/.pfnci/linux/tests/cuda112.Dockerfile b/.pfnci/linux/tests/cuda112.Dockerfile
--- a/.pfnci/linux/tests/cuda112.Dockerfile
+++ b/.pfnci/linux/tests/cuda112.Dockerfile
@@ -23,8 +23,8 @@ RUN /update-alternatives-cutensor.sh
 RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
 ENV PYENV_ROOT "/opt/pyenv"
 ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.7.11 && \
-    pyenv global 3.7.11 && \
+RUN pyenv install 3.8.11 && \
+    pyenv global 3.8.11 && \
     pip install -U setuptools pip
 
 RUN pip install -U 'numpy==1.21.*' 'scipy==1.7.*' 'optuna==3.*' 'cython==0.29.*'
diff --git a/.pfnci/linux/tests/cuda112.multi.Dockerfile b/.pfnci/linux/tests/cuda112.multi.Dockerfile
--- a/.pfnci/linux/tests/cuda112.multi.Dockerfile
+++ b/.pfnci/linux/tests/cuda112.multi.Dockerfile
@@ -23,8 +23,8 @@ RUN /update-alternatives-cutensor.sh
 RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
 ENV PYENV_ROOT "/opt/pyenv"
 ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.7.11 && \
-    pyenv global 3.7.11 && \
+RUN pyenv install 3.8.11 && \
+    pyenv global 3.8.11 && \
     pip install -U setuptools pip
 
 RUN pip install -U 'numpy==1.21.*' 'scipy==1.7.*' 'optuna==3.*' 'cython==0.29.*'
diff --git a/.pfnci/linux/tests/rocm-4-3.Dockerfile b/.pfnci/linux/tests/rocm-4-3.Dockerfile
--- a/.pfnci/linux/tests/rocm-4-3.Dockerfile
+++ b/.pfnci/linux/tests/rocm-4-3.Dockerfile
@@ -30,8 +30,8 @@ ENV LDFLAGS "-L${ROCM_HOME}/lib"
 RUN git clone https://github.com/pyenv/pyenv.git /opt/pyenv
 ENV PYENV_ROOT "/opt/pyenv"
 ENV PATH "${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
-RUN pyenv install 3.7.11 && \
-    pyenv global 3.7.11 && \
+RUN pyenv install 3.8.11 && \
+    pyenv global 3.8.11 && \
     pip install -U setuptools pip
 
 RUN pip install -U 'numpy==1.20.*' 'scipy==1.6.*' 'optuna==3.*' 'cython==0.29.*'
diff --git a/tests/cupy_tests/lib_tests/test_polynomial.py b/tests/cupy_tests/lib_tests/test_polynomial.py
--- a/tests/cupy_tests/lib_tests/test_polynomial.py
+++ b/tests/cupy_tests/lib_tests/test_polynomial.py
@@ -237,7 +237,7 @@ def test_poly1d_str(self, xp, dtype):
         return str(xp.poly1d(a))
 
     @testing.for_all_dtypes()
-    @testing.numpy_cupy_allclose(rtol=1e-6)
+    @testing.numpy_cupy_allclose(rtol={numpy.float16: 1e-2, 'default': 1e-6})
     def test_poly1d_call(self, xp, dtype):
         a = testing.shaped_arange((5,), xp, dtype)
         b = xp.poly1d(a)
@@ -713,7 +713,7 @@ def test_polyfit_weighted_diff_types(self, xp, dtype1, dtype2, dtype3):
 class TestPolyval(Poly1dTestBase):
 
     @testing.for_all_dtypes()
-    @testing.numpy_cupy_allclose(rtol=1e-3)
+    @testing.numpy_cupy_allclose(rtol={numpy.float16: 1e-2, 'default': 1e-3})
     def test_polyval(self, xp, dtype):
         a1 = self._get_input(xp, self.type_l, dtype, size=5)
         a2 = self._get_input(xp, self.type_r, dtype, size=5)
@@ -744,7 +744,7 @@ def test_polyval(self, dtype):
 class TestPolyvalShapeCombination:
 
     @testing.for_all_dtypes()
-    @testing.numpy_cupy_allclose(rtol=1e-6)
+    @testing.numpy_cupy_allclose(rtol={numpy.float16: 1e-2, 'default': 1e-6})
     def test_polyval(self, xp, dtype):
         a = testing.shaped_arange(self.shape1, xp, dtype)
         b = testing.shaped_arange(self.shape2, xp, dtype)
@@ -770,7 +770,7 @@ def test_polyval(self, dtype):
 class TestPolyvalDtypesCombination:
 
     @testing.for_all_dtypes_combination(names=['dtype1', 'dtype2'], full=True)
-    @testing.numpy_cupy_allclose(rtol=1e-6)
+    @testing.numpy_cupy_allclose(rtol={numpy.float16: 1e-2, 'default': 1e-6})
     def test_polyval_diff_types_array_array(self, xp, dtype1, dtype2):
         a = testing.shaped_arange((10,), xp, dtype1)
         b = testing.shaped_arange((3,), xp, dtype2)
diff --git a/tests/cupy_tests/linalg_tests/test_einsum.py b/tests/cupy_tests/linalg_tests/test_einsum.py
--- a/tests/cupy_tests/linalg_tests/test_einsum.py
+++ b/tests/cupy_tests/linalg_tests/test_einsum.py
@@ -339,7 +339,8 @@ def test_numpy_15961_list(self, xp, do_opt):
 class TestEinSumUnaryOperation:
 
     @testing.for_all_dtypes(no_bool=False)
-    @testing.numpy_cupy_allclose(contiguous_check=False)
+    @testing.numpy_cupy_allclose(
+        rtol={numpy.float16: 1e-1, 'default': 1e-7}, contiguous_check=False)
     def test_einsum_unary(self, xp, dtype):
         a = testing.shaped_arange(self.shape_a, xp, dtype)
         out = xp.einsum(self.subscripts, a)
@@ -360,7 +361,8 @@ def test_einsum_unary_views(self, xp, dtype):
         ['dtype_a', 'dtype_out'],
         no_bool=False,
         no_complex=True)  # avoid ComplexWarning
-    @testing.numpy_cupy_allclose(contiguous_check=False)
+    @testing.numpy_cupy_allclose(
+        rtol={numpy.float16: 1e-1, 'default': 1e-7}, contiguous_check=False)
     def test_einsum_unary_dtype(self, xp, dtype_a, dtype_out):
         if not numpy.can_cast(dtype_a, dtype_out):
             pytest.skip()
@@ -436,7 +438,8 @@ class TestEinSumBinaryOperation:
         ['dtype_a', 'dtype_b'],
         no_bool=False,
         no_float16=False)
-    @testing.numpy_cupy_allclose(contiguous_check=False)
+    @testing.numpy_cupy_allclose(
+        rtol={numpy.float16: 1e-2, 'default': 1e-7}, contiguous_check=False)
     def test_einsum_binary(self, xp, dtype_a, dtype_b):
         a = testing.shaped_arange(self.shape_a, xp, dtype_a)
         b = testing.shaped_arange(self.shape_b, xp, dtype_b)
diff --git a/tests/cupy_tests/math_tests/test_sumprod.py b/tests/cupy_tests/math_tests/test_sumprod.py
--- a/tests/cupy_tests/math_tests/test_sumprod.py
+++ b/tests/cupy_tests/math_tests/test_sumprod.py
@@ -143,7 +143,7 @@ def test_sum_dtype(self, xp, src_dtype, dst_dtype):
         return a.sum(dtype=dst_dtype)
 
     @testing.for_all_dtypes_combination(names=['src_dtype', 'dst_dtype'])
-    @testing.numpy_cupy_allclose()
+    @testing.numpy_cupy_allclose(rtol={numpy.float16: 1e-2, 'default': 1e-7})
     def test_sum_keepdims_and_dtype(self, xp, src_dtype, dst_dtype):
         if not xp.can_cast(src_dtype, dst_dtype):
             pytest.skip()
@@ -1107,51 +1107,51 @@ def test_ediff1d_ed2(self, xp, dtype):
 class TestTrapz:
 
     @testing.for_all_dtypes()
-    @testing.numpy_cupy_allclose()
+    @testing.numpy_cupy_allclose(rtol={numpy.float16: 1e-1, 'default': 1e-7})
     def test_trapz_1dim(self, xp, dtype):
         a = testing.shaped_arange((5,), xp, dtype)
         return xp.trapz(a)
 
     @testing.for_all_dtypes()
-    @testing.numpy_cupy_allclose()
+    @testing.numpy_cupy_allclose(rtol={numpy.float16: 1e-1, 'default': 1e-7})
     def test_trapz_1dim_with_x(self, xp, dtype):
         a = testing.shaped_arange((5,), xp, dtype)
         x = testing.shaped_arange((5,), xp, dtype)
         return xp.trapz(a, x=x)
 
     @testing.for_all_dtypes()
-    @testing.numpy_cupy_allclose()
+    @testing.numpy_cupy_allclose(rtol={numpy.float16: 1e-1, 'default': 1e-7})
     def test_trapz_1dim_with_dx(self, xp, dtype):
         a = testing.shaped_arange((5,), xp, dtype)
         return xp.trapz(a, dx=0.1)
 
     @testing.for_all_dtypes()
-    @testing.numpy_cupy_allclose()
+    @testing.numpy_cupy_allclose(rtol={numpy.float16: 1e-1, 'default': 1e-7})
     def test_trapz_2dim_without_axis(self, xp, dtype):
         a = testing.shaped_arange((4, 5), xp, dtype)
         return xp.trapz(a)
 
     @testing.for_all_dtypes()
-    @testing.numpy_cupy_allclose()
+    @testing.numpy_cupy_allclose(rtol={numpy.float16: 1e-1, 'default': 1e-7})
     def test_trapz_2dim_with_axis(self, xp, dtype):
         a = testing.shaped_arange((4, 5), xp, dtype)
         return xp.trapz(a, axis=-2)
 
     @testing.for_all_dtypes()
-    @testing.numpy_cupy_allclose(rtol={numpy.float16: 1e-3, 'default': 1e-7})
+    @testing.numpy_cupy_allclose(rtol={numpy.float16: 1e-1, 'default': 1e-7})
     def test_trapz_2dim_with_x_and_axis(self, xp, dtype):
         a = testing.shaped_arange((4, 5), xp, dtype)
         x = testing.shaped_arange((5,), xp, dtype)
         return xp.trapz(a, x=x, axis=1)
 
     @testing.for_all_dtypes()
-    @testing.numpy_cupy_allclose(rtol={numpy.float16: 1e-3, 'default': 1e-7})
+    @testing.numpy_cupy_allclose(rtol={numpy.float16: 1e-1, 'default': 1e-7})
     def test_trapz_2dim_with_dx_and_axis(self, xp, dtype):
         a = testing.shaped_arange((4, 5), xp, dtype)
         return xp.trapz(a, dx=0.1, axis=1)
 
     @testing.for_all_dtypes()
-    @testing.numpy_cupy_allclose(rtol={numpy.float16: 1e-3, 'default': 1e-7})
+    @testing.numpy_cupy_allclose(rtol={numpy.float16: 1e-1, 'default': 1e-7})
     def test_trapz_1dim_with_x_and_dx(self, xp, dtype):
         a = testing.shaped_arange((5,), xp, dtype)
         x = testing.shaped_arange((5,), xp, dtype)
diff --git a/tests/cupy_tests/statistics_tests/test_meanvar.py b/tests/cupy_tests/statistics_tests/test_meanvar.py
--- a/tests/cupy_tests/statistics_tests/test_meanvar.py
+++ b/tests/cupy_tests/statistics_tests/test_meanvar.py
@@ -160,7 +160,7 @@ def test_average_weights(self, xp, dtype):
         return xp.average(a, weights=w)
 
     @testing.for_all_dtypes()
-    @testing.numpy_cupy_allclose()
+    @testing.numpy_cupy_allclose(rtol={numpy.float16: 1e-1, 'default': 1e-7})
     @pytest.mark.parametrize(
         'axis,weights', [(1, False), (None, True), (1, True)])
     def test_returned(self, xp, dtype, axis, weights):
@@ -172,7 +172,7 @@ def test_returned(self, xp, dtype, axis, weights):
         return xp.average(a, axis=axis, weights=w, returned=True)
 
     @testing.for_all_dtypes()
-    @testing.numpy_cupy_allclose(rtol={'default': 5e-7})
+    @testing.numpy_cupy_allclose(rtol={numpy.float16: 1e-2, 'default': 5e-7})
     @pytest.mark.parametrize('returned', [True, False])
     @testing.with_requires('numpy>=1.23.1')
     def test_average_keepdims_axis1(self, xp, dtype, returned):
diff --git a/tests/cupyx_tests/scipy_tests/interpolate_tests/test_polyint.py b/tests/cupyx_tests/scipy_tests/interpolate_tests/test_polyint.py
--- a/tests/cupyx_tests/scipy_tests/interpolate_tests/test_polyint.py
+++ b/tests/cupyx_tests/scipy_tests/interpolate_tests/test_polyint.py
@@ -16,11 +16,21 @@
     pass
 
 
+if cupy.cuda.runtime.runtimeGetVersion() < 11000:
+    # Workarounds precison issues in CUDA 10.2 + float16
+    default_atol = 5e-2
+    default_rtol = 1e-1
+else:
+    default_atol = 0
+    default_rtol = 1e-7
+
+
 @testing.with_requires("scipy")
 class TestBarycentric:
 
     @testing.for_all_dtypes(no_bool=True, no_complex=True)
-    @testing.numpy_cupy_allclose(scipy_name='scp')
+    @testing.numpy_cupy_allclose(
+        atol=default_atol, rtol=default_rtol, scipy_name='scp')
     def test_lagrange(self, xp, scp, dtype):
         if xp.dtype(dtype).kind == 'u':
             pytest.skip()
@@ -32,7 +42,7 @@ def test_lagrange(self, xp, scp, dtype):
         return P(test_xs)
 
     @testing.for_all_dtypes(no_bool=True, no_float16=True, no_complex=True)
-    @testing.numpy_cupy_allclose(scipy_name='scp', atol=1e-5, rtol=1e-5)
+    @testing.numpy_cupy_allclose(scipy_name='scp', atol=1e-5, rtol=1e-4)
     def test_scalar(self, xp, scp, dtype):
         if xp.dtype(dtype).kind in 'iu':
             pytest.skip()
@@ -46,7 +56,8 @@ def test_scalar(self, xp, scp, dtype):
         return P(xp.array(7, dtype=dtype))
 
     @testing.for_all_dtypes(no_bool=True, no_complex=True)
-    @testing.numpy_cupy_allclose(scipy_name='scp')
+    @testing.numpy_cupy_allclose(
+        atol=default_atol, rtol=default_rtol, scipy_name='scp')
     def test_delayed(self, xp, scp, dtype):
         if xp.dtype(dtype).kind == 'u':
             pytest.skip()
@@ -59,7 +70,8 @@ def test_delayed(self, xp, scp, dtype):
         return P(test_xs)
 
     @testing.for_all_dtypes(no_bool=True, no_complex=True)
-    @testing.numpy_cupy_allclose(scipy_name='scp')
+    @testing.numpy_cupy_allclose(
+        atol=default_atol, rtol=default_rtol, scipy_name='scp')
     def test_append(self, xp, scp, dtype):
         if xp.dtype(dtype).kind == 'u':
             pytest.skip()
@@ -136,7 +148,8 @@ def test_complex(self, xp, scp):
         return scp.interpolate.BarycentricInterpolator(x, y)(xi)
 
     @testing.for_all_dtypes(no_bool=True, no_complex=True)
-    @testing.numpy_cupy_allclose(scipy_name='scp', atol=1e-6, rtol=1e-6)
+    @testing.numpy_cupy_allclose(
+        atol=default_atol, rtol=default_rtol, scipy_name='scp')
     def test_wrapper(self, xp, scp, dtype):
         if xp.dtype(dtype).kind == 'u':
             pytest.skip()
@@ -159,7 +172,8 @@ def test_array_input(self, xp, scp, dtype):
 class TestKrogh:
 
     @testing.for_all_dtypes(no_bool=True, no_complex=True)
-    @testing.numpy_cupy_allclose(scipy_name='scp', atol=1e-7, rtol=1e-7)
+    @testing.numpy_cupy_allclose(
+        atol=default_atol, rtol=default_rtol, scipy_name='scp')
     def test_lagrange(self, xp, scp, dtype):
         if xp.dtype(dtype).kind in 'u':
             pytest.skip()
@@ -168,7 +182,9 @@ def test_lagrange(self, xp, scp, dtype):
         xs = xp.linspace(-1, 1, 5, dtype=dtype)
         ys = true_poly(xs)
         P = scp.interpolate.KroghInterpolator(xs, ys)
-        return P(test_xs)
+        out = P(test_xs)
+        print(out.dtype)
+        return out
 
     @testing.for_all_dtypes(no_bool=True, no_float16=True, no_complex=True)
     @testing.numpy_cupy_allclose(scipy_name='scp', atol=1e-6, rtol=1e-6)
@@ -185,7 +201,8 @@ def test_scalar(self, xp, scp, dtype):
         return P(xp.array(7, dtype=dtype))
 
     @testing.for_all_dtypes(no_bool=True, no_complex=True)
-    @testing.numpy_cupy_allclose(scipy_name='scp', atol=1e-7, rtol=1e-7)
+    @testing.numpy_cupy_allclose(
+        atol=default_atol, rtol=default_rtol, scipy_name='scp')
     def test_derivatives(self, xp, scp, dtype):
         if xp.dtype(dtype).kind in 'u':
             pytest.skip()
@@ -198,7 +215,8 @@ def test_derivatives(self, xp, scp, dtype):
         return D
 
     @testing.for_all_dtypes(no_bool=True, no_complex=True)
-    @testing.numpy_cupy_allclose(scipy_name='scp', atol=1e-7, rtol=1e-7)
+    @testing.numpy_cupy_allclose(
+        atol=default_atol, rtol=default_rtol, scipy_name='scp')
     def test_low_derivatives(self, xp, scp, dtype):
         if xp.dtype(dtype).kind in 'u':
             pytest.skip()
@@ -211,7 +229,8 @@ def test_low_derivatives(self, xp, scp, dtype):
         return D
 
     @testing.for_all_dtypes(no_bool=True, no_complex=True)
-    @testing.numpy_cupy_allclose(scipy_name='scp', atol=1e-7, rtol=1e-7)
+    @testing.numpy_cupy_allclose(
+        atol=default_atol, rtol=default_rtol, scipy_name='scp')
     def test_derivative(self, xp, scp, dtype):
         if xp.dtype(dtype).kind in 'u':
             pytest.skip()
@@ -237,7 +256,8 @@ def test_high_derivative(self, xp, scp, dtype):
         return D
 
     @testing.for_all_dtypes(no_bool=True, no_complex=True)
-    @testing.numpy_cupy_allclose(scipy_name='scp', atol=1e-7, rtol=1e-7)
+    @testing.numpy_cupy_allclose(
+        atol=default_atol, rtol=default_rtol, scipy_name='scp')
     def test_hermite(self, xp, scp, dtype):
         if xp.dtype(dtype).kind in 'u':
             pytest.skip()
@@ -334,7 +354,8 @@ def test_shapes_1d_vectorvalue(self, xp, scp, test_xs):
         return xp.shape(P(test_xs))
 
     @testing.for_all_dtypes(no_bool=True, no_complex=True)
-    @testing.numpy_cupy_allclose(scipy_name='scp')
+    @testing.numpy_cupy_allclose(
+        atol=default_atol, rtol=default_rtol, scipy_name='scp')
     def test_wrapper(self, xp, scp, dtype):
         if xp.dtype(dtype).kind == 'u':
             pytest.skip()
@@ -345,7 +366,8 @@ def test_wrapper(self, xp, scp, dtype):
         return scp.interpolate.krogh_interpolate(xs, ys, test_xs)
 
     @testing.for_all_dtypes(no_bool=True, no_complex=True)
-    @testing.numpy_cupy_allclose(scipy_name='scp')
+    @testing.numpy_cupy_allclose(
+        atol=default_atol, rtol=default_rtol, scipy_name='scp')
     def test_wrapper2(self, xp, scp, dtype):
         if xp.dtype(dtype).kind == 'u':
             pytest.skip()
diff --git a/tests/cupyx_tests/scipy_tests/special_tests/test_softmax.py b/tests/cupyx_tests/scipy_tests/special_tests/test_softmax.py
--- a/tests/cupyx_tests/scipy_tests/special_tests/test_softmax.py
+++ b/tests/cupyx_tests/scipy_tests/special_tests/test_softmax.py
@@ -8,11 +8,11 @@
 
 atol = {
     'default': 1e-6,
-    cupy.float16: 1e-3,
+    cupy.float16: 1e-2,
 }
 rtol = {
     'default': 1e-6,
-    cupy.float16: 1e-3,
+    cupy.float16: 1e-2,
 }