From 77ec800cf3f676316537fc69c1212c51947eff54 Mon Sep 17 00:00:00 2001 From: Ianna Osborne Date: Wed, 25 Sep 2024 14:50:22 +0200 Subject: [PATCH 1/2] fix type error for can_cast --- src/awkward/_broadcasting.py | 2 +- .../cuda_kernels/awkward_NumpyArray_subrange_equal_bool.cu | 4 ++-- .../_connect/cuda/cuda_kernels/awkward_reduce_max.cu | 2 +- .../_connect/cuda/cuda_kernels/awkward_reduce_min.cu | 3 ++- src/awkward/_nplikes/array_module.py | 6 ++++-- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/awkward/_broadcasting.py b/src/awkward/_broadcasting.py index 7c69212dc2..b7a41e865b 100644 --- a/src/awkward/_broadcasting.py +++ b/src/awkward/_broadcasting.py @@ -712,7 +712,7 @@ def broadcast_any_option(): mask = backend.index_nplike.logical_or(mask, m, maybe_out=mask) nextmask = Index8(mask.view(np.int8)) - index = backend.index_nplike.full(mask.shape[0], -1, dtype=np.int64) + index = backend.index_nplike.full(mask.shape[0], np.int64(-1), dtype=np.int64) index[~mask] = backend.index_nplike.arange( backend.index_nplike.shape_item_as_index(mask.shape[0]) - backend.index_nplike.count_nonzero(mask), diff --git a/src/awkward/_connect/cuda/cuda_kernels/awkward_NumpyArray_subrange_equal_bool.cu b/src/awkward/_connect/cuda/cuda_kernels/awkward_NumpyArray_subrange_equal_bool.cu index 7026072b04..9905358181 100644 --- a/src/awkward/_connect/cuda/cuda_kernels/awkward_NumpyArray_subrange_equal_bool.cu +++ b/src/awkward/_connect/cuda/cuda_kernels/awkward_NumpyArray_subrange_equal_bool.cu @@ -4,9 +4,9 @@ // def f(grid, block, args): // (tmpptr, fromstarts, fromstops, length, toequal, invocation_index, err_code) = args // if length > 1: -// scan_in_array = cupy.full((length - 1) * (length - 2), 0, dtype=cupy.int64) +// scan_in_array = cupy.full((length - 1) * (length - 2), cupy.array(0), dtype=cupy.int64) // else: -// scan_in_array = cupy.full(0, 0, dtype=cupy.int64) +// scan_in_array = cupy.full(0, cupy.array(0), dtype=cupy.int64) // cuda_kernel_templates.get_function(fetch_specialization(["awkward_NumpyArray_subrange_equal_bool", bool_, fromstarts.dtype, fromstops.dtype, bool_]))(grid, block, (tmpptr, fromstarts, fromstops, length, toequal, scan_in_array, invocation_index, err_code)) // toequal[0] = cupy.any(scan_in_array == True) // out["awkward_NumpyArray_subrange_equal_bool", {dtype_specializations}] = None diff --git a/src/awkward/_connect/cuda/cuda_kernels/awkward_reduce_max.cu b/src/awkward/_connect/cuda/cuda_kernels/awkward_reduce_max.cu index 0d1ecdebcd..878d87fc85 100644 --- a/src/awkward/_connect/cuda/cuda_kernels/awkward_reduce_max.cu +++ b/src/awkward/_connect/cuda/cuda_kernels/awkward_reduce_max.cu @@ -7,7 +7,7 @@ // grid_size = math.floor((lenparents + block[0] - 1) / block[0]) // else: // grid_size = 1 -// temp = cupy.full(lenparents, identity, dtype=toptr.dtype) +// temp = cupy.full(lenparents, cupy.array([identity]), dtype=toptr.dtype) // cuda_kernel_templates.get_function(fetch_specialization(["awkward_reduce_max_a", cupy.dtype(toptr.dtype).type, cupy.dtype(fromptr.dtype).type, parents.dtype]))((grid_size,), block, (toptr, fromptr, parents, lenparents, outlength, toptr.dtype.type(identity), temp, invocation_index, err_code)) // cuda_kernel_templates.get_function(fetch_specialization(["awkward_reduce_max_b", cupy.dtype(toptr.dtype).type, cupy.dtype(fromptr.dtype).type, parents.dtype]))((grid_size,), block, (toptr, fromptr, parents, lenparents, outlength, toptr.dtype.type(identity), temp, invocation_index, err_code)) // out["awkward_reduce_max_a", {dtype_specializations}] = None diff --git a/src/awkward/_connect/cuda/cuda_kernels/awkward_reduce_min.cu b/src/awkward/_connect/cuda/cuda_kernels/awkward_reduce_min.cu index e709d687f8..fc0c092336 100644 --- a/src/awkward/_connect/cuda/cuda_kernels/awkward_reduce_min.cu +++ b/src/awkward/_connect/cuda/cuda_kernels/awkward_reduce_min.cu @@ -7,7 +7,8 @@ // grid_size = math.floor((lenparents + block[0] - 1) / block[0]) // else: // grid_size = 1 -// temp = cupy.full(lenparents, identity, dtype=toptr.dtype) +// dtype=toptr.dtype +// temp = cupy.full(lenparents, cupy.array([identity]), dtype=toptr.dtype) // cuda_kernel_templates.get_function(fetch_specialization(["awkward_reduce_min_a", cupy.dtype(toptr.dtype).type, cupy.dtype(fromptr.dtype).type, parents.dtype]))((grid_size,), block, (toptr, fromptr, parents, lenparents, outlength, toptr.dtype.type(identity), temp, invocation_index, err_code)) // cuda_kernel_templates.get_function(fetch_specialization(["awkward_reduce_min_b", cupy.dtype(toptr.dtype).type, cupy.dtype(fromptr.dtype).type, parents.dtype]))((grid_size,), block, (toptr, fromptr, parents, lenparents, outlength, toptr.dtype.type(identity), temp, invocation_index, err_code)) // out["awkward_reduce_min_a", {dtype_specializations}] = None diff --git a/src/awkward/_nplikes/array_module.py b/src/awkward/_nplikes/array_module.py index 5217ace411..568c7fc29e 100644 --- a/src/awkward/_nplikes/array_module.py +++ b/src/awkward/_nplikes/array_module.py @@ -118,7 +118,7 @@ def full( *, dtype: DTypeLike | None = None, ) -> ArrayLikeT: - return self._module.full(shape, fill_value, dtype=dtype) + return self._module.full(shape, self._module.array(fill_value), dtype=dtype) def zeros_like( self, x: ArrayLikeT | PlaceholderArray, *, dtype: DTypeLike | None = None @@ -146,7 +146,9 @@ def full_like( if isinstance(x, PlaceholderArray): return self.full(x.shape, fill_value, dtype=dtype or x.dtype) else: - return self._module.full_like(x, fill_value, dtype=dtype) + return self._module.full_like( + x, self._module.array(fill_value), dtype=dtype + ) def arange( self, From d84ceb99f0d4c216849f06006f726ba6b8068c12 Mon Sep 17 00:00:00 2001 From: Ianna Osborne Date: Wed, 25 Sep 2024 15:01:26 +0200 Subject: [PATCH 2/2] cleanup --- src/awkward/_connect/cuda/cuda_kernels/awkward_reduce_min.cu | 1 - 1 file changed, 1 deletion(-) diff --git a/src/awkward/_connect/cuda/cuda_kernels/awkward_reduce_min.cu b/src/awkward/_connect/cuda/cuda_kernels/awkward_reduce_min.cu index fc0c092336..d27c5e1b80 100644 --- a/src/awkward/_connect/cuda/cuda_kernels/awkward_reduce_min.cu +++ b/src/awkward/_connect/cuda/cuda_kernels/awkward_reduce_min.cu @@ -7,7 +7,6 @@ // grid_size = math.floor((lenparents + block[0] - 1) / block[0]) // else: // grid_size = 1 -// dtype=toptr.dtype // temp = cupy.full(lenparents, cupy.array([identity]), dtype=toptr.dtype) // cuda_kernel_templates.get_function(fetch_specialization(["awkward_reduce_min_a", cupy.dtype(toptr.dtype).type, cupy.dtype(fromptr.dtype).type, parents.dtype]))((grid_size,), block, (toptr, fromptr, parents, lenparents, outlength, toptr.dtype.type(identity), temp, invocation_index, err_code)) // cuda_kernel_templates.get_function(fetch_specialization(["awkward_reduce_min_b", cupy.dtype(toptr.dtype).type, cupy.dtype(fromptr.dtype).type, parents.dtype]))((grid_size,), block, (toptr, fromptr, parents, lenparents, outlength, toptr.dtype.type(identity), temp, invocation_index, err_code))