Skip to content

ValueError with cuda backend #593

@kmohrman

Description

@kmohrman

Version of Awkward Array

2.8.1

Description and code to reproduce

For an operation that works fine for the cpu backend, I am getting a ValueError error when running with the cuda backend. This code reproduces the issue:

import awkward as ak
from coffea.nanoevents.methods import candidate

def test(pt,eta,phi,mass,backend_type):
    jets = ak.zip(
        {
            "pt"  : ak.Array(pt,   backend=backend_type),
            "eta" : ak.Array(eta,  backend=backend_type),
            "phi" : ak.Array(phi,  backend=backend_type),
            "mass": ak.Array(mass, backend=backend_type)
        },
        with_name="PtEtaPhiMLorentzVector",
        behavior=candidate.behavior,
    )

    jet_combs = ak.combinations(jets, 2, fields=["j1", "j2"])
    print("\njet_combs backend:",ak.backend(jet_combs))
    result = jet_combs.j1 + jet_combs.j2

pt   = [[23.1, 21.0, 17.3], [72.6, 51.3, 33.7]]
eta  = [[-2.3, 3.4, -0.5], [1.7, 2.2, 0.7]]
phi  = [[0.2, -0.7, -2.8], [-2.5, -0.1, 2.1]]
mass = [[4.6, 5.5, 3.4], [12.0, 9.5, 7.8]]

test(pt,eta,phi,mass,"cpu")
test(pt,eta,phi,mass,"cuda")

The result = jet_combs.j1 + jet_combs.j2 line runs fine with cpu, but with cuda, the same line gives an error ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all(). The full error is pasted here:

Traceback (most recent call last):
  File "/home/k.mohrman/coffea_dir/gpu_studies/columnar_gpu/t.py", line 28, in <module>
    test(pt,eta,phi,mass,"cuda")
  File "/home/k.mohrman/coffea_dir/gpu_studies/columnar_gpu/t.py", line 20, in test
    result = jet_combs.j1 + jet_combs.j2
             ~~~~~~~~~~~~~^~~~~~~~~~~~~~
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_operators.py", line 54, in func
    return ufunc(self, other)
           ^^^^^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/highlevel.py", line 1619, in __array_ufunc__
    with ak._errors.OperationErrorContext(name, inputs, kwargs):
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_errors.py", line 80, in __exit__
    raise self.decorate_exception(exception_type, exception_value)
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/highlevel.py", line 1620, in __array_ufunc__
    return ak._connect.numpy.array_ufunc(ufunc, method, inputs, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_connect/numpy.py", line 469, in array_ufunc
    out = ak._broadcasting.broadcast_and_apply(
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_broadcasting.py", line 1200, in broadcast_and_apply
    out = apply_step(
          ^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_broadcasting.py", line 1178, in apply_step
    return continuation()
           ^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_broadcasting.py", line 1147, in continuation
    return broadcast_any_list()
           ^^^^^^^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_broadcasting.py", line 671, in broadcast_any_list
    outcontent = apply_step(
                 ^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_broadcasting.py", line 1178, in apply_step
    return continuation()
           ^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_broadcasting.py", line 1147, in continuation
    return broadcast_any_list()
           ^^^^^^^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_broadcasting.py", line 747, in broadcast_any_list
    outcontent = apply_step(
                 ^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_broadcasting.py", line 1178, in apply_step
    return continuation()
           ^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_broadcasting.py", line 1130, in continuation
    return broadcast_any_indexed()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_broadcasting.py", line 1080, in broadcast_any_indexed
    return apply_step(
           ^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_broadcasting.py", line 1160, in apply_step
    result = action(
             ^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_connect/numpy.py", line 381, in action
    return _array_ufunc_adjust(custom, inputs, kwargs, behavior)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_connect/numpy.py", line 184, in _array_ufunc_adjust
    out = custom(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/vector/_methods.py", line 3997, in add
    return module.add.dispatch(self, other)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/vector/_compute/lorentz/add.py", line 207, in dispatch
    handler._wrap_dispatched_function(function)(
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/vector/backends/awkward.py", line 1093, in __call__
    return ak.transform(transformer, *awkward_arrays)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_dispatch.py", line 64, in dispatch
    next(gen_or_result)
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/operations/ak_transform.py", line 469, in transform
    return _impl(
           ^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/operations/ak_transform.py", line 632, in _impl
    out = apply_broadcasting_step(
          ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_broadcasting.py", line 1178, in apply_step
    return continuation()
           ^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_broadcasting.py", line 1147, in continuation
    return broadcast_any_list()
           ^^^^^^^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_broadcasting.py", line 671, in broadcast_any_list
    outcontent = apply_step(
                 ^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_broadcasting.py", line 1178, in apply_step
    return continuation()
           ^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_broadcasting.py", line 1130, in continuation
    return broadcast_any_indexed()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_broadcasting.py", line 1080, in broadcast_any_indexed
    return apply_step(
           ^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/_broadcasting.py", line 1160, in apply_step
    result = action(
             ^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/awkward/operations/ak_transform.py", line 592, in action
    out = transformation(tuple(inputs), **kwargs, behavior=behavior)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/vector/backends/awkward.py", line 1070, in transformer
    out_numpys = bind(self.func, *args2bind)(
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/vector/backends/awkward.py", line 1015, in __call__
    return self.func(*args, *iargs, **keywords)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/vector/_compute/lorentz/add.py", line 148, in f
    coord1, coord2, coord3 = spatial_add(
                             ^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/vector/_compute/spatial/add.py", line 393, in rhophi_eta_rhophi_eta
    return (rho, phi, eta.rhophi_z(lib, rho, phi, z1 + z2))
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/vector/_compute/spatial/eta.py", line 56, in rhophi_z
    return lib.nan_to_num(
           ^^^^^^^^^^^^^^^
  File "cupy/_core/core.pyx", line 1766, in cupy._core.core._ndarray_base.__array_function__
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/cupy/_math/misc.py", line 422, in nan_to_num
    nan = _check_nan_inf(nan, dtype)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/blue/p.chang/k.mohrman/dir_for_miniconda/miniconda3/envs/coffeagpu_env1/lib/python3.12/site-packages/cupy/_math/misc.py", line 402, in _check_nan_inf
    elif cupy.isnan(x):
         ^^^^^^^^^^^^^
  File "cupy/_core/core.pyx", line 1293, in cupy._core.core._ndarray_base.__nonzero__
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

This error occurred while calling

    numpy.add.__call__(
        <PtEtaPhiMLorentzVectorArray [[{pt: 23.1, ...}, ...], ...] type='2 ...'>
        <PtEtaPhiMLorentzVectorArray [[{pt: 21.0, ...}, ...], ...] type='2 ...'>
    )

Sub-issues

Metadata

Metadata

Assignees

Labels

bugThe problem described is something that must be fixed

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions