Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Sorting multidimensional array along axis of length zero raises ZeroDivisionError #9816

Description

@mdhaber

Description

This is fine:

import cupy as xp
xp.sort(xp.empty((0,)), axis=0)
# array([], dtype=float64)

and so is this:

xp.sort(xp.empty((2, 0,)), axis=0)
# array([], shape=(2, 0), dtype=float64)

But along the axis of zero length:

xp.sort(xp.empty((2, 0,)), axis=-1)
# ZeroDivisionError: integer division or modulo by zero

To Reproduce

import cupy as xp
xp.sort(xp.empty((2, 0,)), axis=-1)
# ZeroDivisionError: integer division or modulo by zero

Installation

Conda-Forge (conda install ...)

Environment

OS                           : Windows-11-10.0.26200-SP0
Python Version               : 3.13.12
CuPy Version                 : 14.0.1
CuPy Platform                : NVIDIA CUDA
NumPy Version                : 2.3.5
SciPy Version                : 1.18.0.dev0+git20260320.75eb555
Cython Build Version         : 3.1.8
Cython Runtime Version       : 3.2.4
CUDA Root                    : E:\miniforge3\envs\scipy-dev\Library
NVCC PATH                    : None
CUDA Build Version           : 12090
CUDA Driver Version          : 13000
CUDA Runtime Version         : 12090 (linked to CuPy) / 12090 (locally installed)
CUDA Runtime Path            : E:\miniforge3\envs\scipy-dev\Library\bin\cudart64_12.dll (locally installed)
CUDA Extra Include Dirs      : ['E:\\miniforge3\\envs\\scipy-dev\\Library\\include']
cuBLAS Version               : 120901
cuBLAS Path                  : E:\miniforge3\envs\scipy-dev\Library\bin\cublas64_12.dll
cuFFT Version                : 11401
cuFFT Path                   : E:\miniforge3\envs\scipy-dev\Library\bin\cufft64_11.dll
cuRAND Version               : 10310
cuRAND Path                  : E:\miniforge3\envs\scipy-dev\Library\bin\curand64_10.dll
cuSOLVER Version             : (11, 7, 5)
cuSOLVER Path                : E:\miniforge3\envs\scipy-dev\Library\bin\cusolver64_11.dll
cuSPARSE Version             : 12510
cuSPARSE Path                : E:\miniforge3\envs\scipy-dev\Library\bin\cusparse64_12.dll
NVRTC Version                : (12, 9)
NVRTC Path                   : E:\miniforge3\envs\scipy-dev\Library\bin\nvrtc64_120_0.dll
Thrust Version               : 300102
CUB Build Version            : 300102
Jitify Build Version         : <unknown>
NCCL Build Version           : None
NCCL Runtime Version         : None
NCCL Path                    : None
cuTENSOR Version             : None
cuTENSOR Path                : None
cuSPARSELt Build Version     : None
cuSPARSELt Path              : None
Device 0 Name                : Quadro P400
Device 0 Compute Capability  : 61
Device 0 PCI Bus ID          : 0000:01:00.0

Additional Information

Discovered when developing edge case unit tests for the new scipy.stats.estimated_cdf; see https://github.com/scipy/scipy/pull/23949/changes#r2969252454.

Metadata

Metadata

Assignees

Labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions