IntelPython / dpctl

Python SYCL bindings and SYCL-based Python Array API library
https://intelpython.github.io/dpctl/
Apache License 2.0
97 stars 29 forks source link

`searchsorted` raises RuntimeError: USM-host allocation failure #1689

Closed vlad-perevezentsev closed 1 month ago

vlad-perevezentsev commented 1 month ago

When I try to pass an input array with negative strides along with values as scalar (usm_ndarray) I get a RuntimeError: USM-host allocation failure while with positive strides dpt.searchsorted works

import dpctl.tensor as dpt

a = dpt.asarray([1,2,3])
a.strides
>>> (1,)
v = dpt.asarray(1)

dpt.searchsorted(a,v)
>>> usm_ndarray(0)

a = dpt.asarray([3,2,1])[::-1]
a.strides
>>> (-1,)

dpt.searchsorted(a,v)
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
Cell In[14], line 1
----> 1 dpt.searchsorted(a,v)

File ~/miniconda3/envs/test/lib/python3.10/site-packages/dpctl/tensor/_searchsorted.py:153, in searchsorted(x1, x2, side, sorter)
    150 dst = _empty_like_orderK(x2, index_dt, usm_type=dst_usm_type)
    152 if side == "left":
--> 153     ht_ev, _ = _searchsorted_left(
    154         hay=x1,
    155         needles=x2,
    156         positions=dst,
    157         sycl_queue=q,
    158         depends=[
    159             ev,
    160         ],
    161     )
    162 else:
    163     ht_ev, _ = _searchsorted_right(
    164         hay=x1,
    165         needles=x2,
   (...)
    170         ],
    171     )

RuntimeError: USM-host allocation failure

If values are usm_ndarray 1-D array dpt.searchsorted works correctly

import dpctl.tensor as dpt

a = dpt.asarray([3,2,1])[::-1]
a.strides
>>> (-1,)

v = dpt.asarray([1])
>>> usm_ndarray([0])
Environment details ```bash $ conda list # Name Version Build Channel _libgcc_mutex 0.1 conda_forge conda-forge _openmp_mutex 4.5 2_gnu conda-forge _sysroot_linux-64_curr_repodata_hack 3 h69a702a_14 conda-forge astroid 3.1.0 pypi_0 pypi asttokens 2.4.1 pyhd8ed1ab_0 conda-forge attrs 23.2.0 pypi_0 pypi bandit 1.7.8 pypi_0 pypi black 23.12.1 pypi_0 pypi boto3 1.34.88 pypi_0 pypi botocore 1.34.88 pypi_0 pypi bzip2 1.0.8 hd590300_5 conda-forge c-ares 1.28.1 hd590300_0 conda-forge ca-certificates 2024.3.11 h06a4308_0 cachetools 5.3.3 pypi_0 pypi certifi 2024.2.2 pypi_0 pypi cfgv 3.4.0 pypi_0 pypi charset-normalizer 3.3.2 pypi_0 pypi clang-format 12.0.1.2 pypi_0 pypi click 8.1.7 pypi_0 pypi cmake 3.29.2 hcfe8598_0 conda-forge colorama 0.4.6 pyhd8ed1ab_0 conda-forge cython 3.0.10 py310hc6cd4ac_0 conda-forge decorator 5.1.1 pyhd8ed1ab_0 conda-forge dill 0.3.8 pypi_0 pypi distlib 0.3.8 pypi_0 pypi distro 1.9.0 pyhd8ed1ab_0 conda-forge dpcpp-cpp-rt 2024.2.0 intel_455 http://satpkgserver.an.intel.com:8081 dpcpp-sycl-rt 2024.2.0 intel_455 http://satpkgserver.an.intel.com:8081 dpcpp_cpp_rt 2024.2.0 intel_455 http://satpkgserver.an.intel.com:8081 dpcpp_impl_linux-64 2024.2.0 intel_455 http://satpkgserver.an.intel.com:8081 dpcpp_linux-64 2024.2.0 intel_455 http://satpkgserver.an.intel.com:8081 dpctl 0.18.0dev0 py310h15de555_6 dppy/label/dev dpnp 0.15.0.dev1+75.gb988e9c4df.dirty dev_0 exceptiongroup 1.2.0 pyhd8ed1ab_2 conda-forge executing 2.0.1 pyhd8ed1ab_0 conda-forge filelock 3.14.0 pypi_0 pypi google-api-core 2.18.0 pypi_0 pypi google-api-python-client 2.126.0 pypi_0 pypi google-auth 2.29.0 pypi_0 pypi google-auth-httplib2 0.2.0 pypi_0 pypi googleapis-common-protos 1.63.0 pypi_0 pypi h11 0.14.0 pypi_0 pypi httplib2 0.22.0 pypi_0 pypi hypothesis 6.100.5 pypi_0 pypi icc_rt 2024.2.0 intel_455 http://satpkgserver.an.intel.com:8081 identify 2.5.36 pypi_0 pypi idna 3.7 pypi_0 pypi iniconfig 2.0.0 pyhd8ed1ab_0 conda-forge intel-cmplr-lib-rt 2024.2.0 intel_455 http://satpkgserver.an.intel.com:8081 intel-cmplr-lib-ur 2024.2.0 intel_455 http://satpkgserver.an.intel.com:8081 intel-cmplr-lic-rt 2024.2.0 intel_455 http://satpkgserver.an.intel.com:8081 intel-opencl-rt 2024.2.0 intel_455 http://satpkgserver.an.intel.com:8081 intel-openmp 2024.2.0 intel_455 http://satpkgserver.an.intel.com:8081 intelpython 2024.1.0 0 http://satpkgserver.an.intel.com:8081 ipython 8.22.2 pyh707e725_0 conda-forge isort 5.13.2 pypi_0 pypi jedi 0.19.1 pyhd8ed1ab_0 conda-forge jmespath 1.0.1 pypi_0 pypi kernel-headers_linux-64 4.18.0 he073ed8_2 conda-forge keyutils 1.6.1 h166bdaf_0 conda-forge krb5 1.21.2 h659d440_0 conda-forge level-zero 1.16.14 h00ab1b0_0 conda-forge libcurl 8.7.1 hca28451_0 conda-forge libedit 3.1.20191231 he28a2e2_2 conda-forge libev 4.33 hd590300_2 conda-forge libexpat 2.6.2 h59595ed_0 conda-forge libffi 3.4.2 h7f98852_5 conda-forge libgcc-ng 13.2.0 h807b86a_5 conda-forge libgomp 13.2.0 h807b86a_5 conda-forge libnghttp2 1.58.0 h47da74e_1 conda-forge libnsl 2.0.1 hd590300_0 conda-forge libsqlite 3.45.3 h2797004_0 conda-forge libssh2 1.11.0 h0841786_0 conda-forge libstdcxx-ng 13.2.0 h7e041cc_5 conda-forge libuuid 2.38.1 h0b41bf4_0 conda-forge libuv 1.48.0 hd590300_0 conda-forge libxcrypt 4.4.36 hd590300_1 conda-forge libzlib 1.2.13 hd590300_5 conda-forge markdown-it-py 3.0.0 pypi_0 pypi matplotlib-inline 0.1.7 pyhd8ed1ab_0 conda-forge mccabe 0.7.0 pypi_0 pypi mdurl 0.1.2 pypi_0 pypi mkl 2024.2.0 intel_243 http://satpkgserver.an.intel.com:8081 mkl-devel 2024.2.0 intel_243 http://satpkgserver.an.intel.com:8081 mkl-devel-dpcpp 2024.2.0 intel_243 http://satpkgserver.an.intel.com:8081 mkl-dpcpp 2024.2.0 intel_243 http://satpkgserver.an.intel.com:8081 mkl-include 2024.2.0 intel_243 http://satpkgserver.an.intel.com:8081 mkl-service 2.4.1 py310h1e356de_0 http://satpkgserver.an.intel.com:8081 mkl_fft 1.3.8 py310h977b55c_70 http://satpkgserver.an.intel.com:8081 mkl_random 1.2.4 py310hae8aba8_90 http://satpkgserver.an.intel.com:8081 mkl_umath 0.1.1 py310h9ab9c7e_100 http://satpkgserver.an.intel.com:8081 mypy-extensions 1.0.0 pypi_0 pypi ncurses 6.4.20240210 h59595ed_0 conda-forge ndindex 1.8 pypi_0 pypi ninja 1.12.0 h00ab1b0_0 conda-forge nodeenv 1.8.0 pypi_0 pypi numpy 1.26.4 py310h689b997_1 http://satpkgserver.an.intel.com:8081 numpy-base 1.26.4 py310h8eeea18_1 http://satpkgserver.an.intel.com:8081 onedpl-devel 2022.6.0 intel_250 http://satpkgserver.an.intel.com:8081 onemkl-sycl-blas 2024.2.0 intel_243 http://satpkgserver.an.intel.com:8081 onemkl-sycl-datafitting 2024.2.0 intel_243 http://satpkgserver.an.intel.com:8081 onemkl-sycl-dft 2024.2.0 intel_243 http://satpkgserver.an.intel.com:8081 onemkl-sycl-lapack 2024.2.0 intel_243 http://satpkgserver.an.intel.com:8081 onemkl-sycl-rng 2024.2.0 intel_243 http://satpkgserver.an.intel.com:8081 onemkl-sycl-sparse 2024.2.0 intel_243 http://satpkgserver.an.intel.com:8081 onemkl-sycl-stats 2024.2.0 intel_243 http://satpkgserver.an.intel.com:8081 onemkl-sycl-vm 2024.2.0 intel_243 http://satpkgserver.an.intel.com:8081 openssl 3.2.1 hd590300_1 conda-forge outcome 1.3.0.post0 pypi_0 pypi packaging 24.0 pyhd8ed1ab_0 conda-forge parso 0.8.4 pyhd8ed1ab_0 conda-forge pathspec 0.12.1 pypi_0 pypi pbr 6.0.0 pypi_0 pypi pexpect 4.9.0 pyhd8ed1ab_0 conda-forge pickleshare 0.7.5 py_1003 conda-forge pip 24.0 pyhd8ed1ab_0 conda-forge platformdirs 4.2.0 pypi_0 pypi pluggy 1.4.0 pyhd8ed1ab_0 conda-forge pre-commit 3.7.0 pypi_0 pypi prompt-toolkit 3.0.42 pyha770c72_0 conda-forge proto-plus 1.23.0 pypi_0 pypi protobuf 4.25.3 pypi_0 pypi ptyprocess 0.7.0 pyhd3deb0d_0 conda-forge pure_eval 0.2.2 pyhd8ed1ab_0 conda-forge pyasn1 0.6.0 pypi_0 pypi pyasn1-modules 0.4.0 pypi_0 pypi pygments 2.17.2 pyhd8ed1ab_0 conda-forge pylint 3.1.0 pypi_0 pypi pyparsing 3.1.2 pypi_0 pypi pysocks 1.7.1 pypi_0 pypi pytest 8.1.1 pyhd8ed1ab_0 conda-forge pytest-json-report 1.5.0 pypi_0 pypi pytest-metadata 3.1.1 pypi_0 pypi pytest-repeat 0.9.3 pypi_0 pypi python 3.10.14 h4499717_1 http://satpkgserver.an.intel.com:8081 python-dateutil 2.9.0.post0 pypi_0 pypi python-magic 0.4.27 pypi_0 pypi python_abi 3.10 2_cp310 conda-forge pyyaml 6.0.1 pypi_0 pypi readline 8.2 h8228510_1 conda-forge requests 2.31.0 pypi_0 pypi rhash 1.4.4 hd590300_0 conda-forge rich 13.7.1 pypi_0 pypi rsa 4.9 pypi_0 pypi s3transfer 0.10.1 pypi_0 pypi scikit-build 0.17.6 pyh4af843d_0 conda-forge scipy 1.13.0 pypi_0 pypi selenium 4.19.0 pypi_0 pypi setuptools 69.5.1 pyhd8ed1ab_0 conda-forge six 1.16.0 pyh6c4a22f_0 conda-forge sniffio 1.3.1 pypi_0 pypi sortedcontainers 2.4.0 pypi_0 pypi stack_data 0.6.2 pyhd8ed1ab_0 conda-forge stevedore 5.2.0 pypi_0 pypi sysroot_linux-64 2.28 he073ed8_2 conda-forge tbb 2021.13.0 intel_314 http://satpkgserver.an.intel.com:8081 tbb-devel 2021.13.0 intel_314 http://satpkgserver.an.intel.com:8081 tbb4py 2021.13.0 py310_intel_314 http://satpkgserver.an.intel.com:8081 tk 8.6.13 noxft_h4845f30_101 conda-forge tomli 2.0.1 pyhd8ed1ab_0 conda-forge tomlkit 0.12.5 pypi_0 pypi traitlets 5.14.2 pyhd8ed1ab_0 conda-forge trio 0.25.0 pypi_0 pypi trio-websocket 0.11.1 pypi_0 pypi typing-extensions 4.11.0 hd8ed1ab_0 conda-forge typing_extensions 4.11.0 pyha770c72_0 conda-forge tzdata 2024a h0c530f3_0 conda-forge uritemplate 4.1.1 pypi_0 pypi urllib3 2.2.1 pypi_0 pypi virtualenv 20.26.1 pypi_0 pypi wcwidth 0.2.13 pyhd8ed1ab_0 conda-forge wheel 0.43.0 pyhd8ed1ab_1 conda-forge wsproto 1.2.0 pypi_0 pypi xz 5.2.6 h166bdaf_0 conda-forge zstd 1.5.5 hfc55251_0 conda-forge ``` ### Driver versions ```bash $ python -m dpctl -f Platform 0 :: Name Intel(R) OpenCL Version OpenCL 3.0 LINUX Vendor Intel(R) Corporation Backend opencl Num Devices 1 # 0 Name 12th Gen Intel(R) Core(TM) i7-1270P Version 2024.18.4.0.15_160000 Filter string opencl:cpu:0 Platform 1 :: Name Intel(R) OpenCL Graphics Version OpenCL 3.0 Vendor Intel(R) Corporation Backend opencl Num Devices 1 # 0 Name Intel(R) Graphics [0x46a6] Version 23.26.26690.22 Filter string opencl:gpu:0 Platform 2 :: Name Intel(R) FPGA Emulation Platform for OpenCL(TM) Version OpenCL 1.2 Intel(R) FPGA SDK for OpenCL(TM), Version 20.3 Vendor Intel(R) Corporation Backend opencl Num Devices 1 # 0 Name Intel(R) FPGA Emulation Device Version 2024.18.4.0.15_160000 Filter string opencl:accelerator:0 Platform 3 :: Name Intel(R) Level-Zero Version 1.3 Vendor Intel(R) Corporation Backend ext_oneapi_level_zero Num Devices 1 # 0 Name Intel(R) Graphics [0x46a6] Version 1.3.26690 Filter string level_zero:gpu:0 ``` ### WSL info ```bash $ uname -a Linux vperevez-mobl2 5.10.102.1-microsoft-standard-WSL2 #1 SMP Wed Mar 2 00:30:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux ```