Skip to content

Commit 6449353

Browse files
authored
Merge branch 'master' into update_astype
2 parents 1da02a3 + b469ed7 commit 6449353

File tree

11 files changed

+362
-90
lines changed

11 files changed

+362
-90
lines changed

.github/workflows/conda-package.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,3 +401,33 @@ jobs:
401401
run: anaconda --token ${{ env.ANACONDA_TOKEN }} upload --user dppy --label dev ${{ env.PACKAGE_NAME }}-*.tar.bz2
402402
env:
403403
ANACONDA_TOKEN: ${{ secrets.ANACONDA_TOKEN }}
404+
405+
cleanup_packages:
406+
name: Clean up anaconda packages
407+
needs: [upload]
408+
runs-on: 'ubuntu-latest'
409+
defaults:
410+
run:
411+
shell: bash -el {0}
412+
steps:
413+
- uses: conda-incubator/setup-miniconda@v2
414+
with:
415+
run-post: false
416+
channel-priority: "disabled"
417+
channels: conda-forge
418+
python-version: '3.11'
419+
420+
- name: Install anaconda-client
421+
run: conda install anaconda-client
422+
423+
- name: Checkout repo
424+
uses: actions/checkout@v2
425+
with:
426+
repository: IntelPython/devops-tools
427+
fetch-depth: 0
428+
429+
- name: Cleanup old packages
430+
run: |
431+
python scripts/cleanup-old-packages.py \
432+
--verbose --force --token ${{ secrets.ANACONDA_TOKEN }} \
433+
--package dppy/${{ env.PACKAGE_NAME }} --label dev

dpnp/backend/kernels/dpnp_krnl_linalg.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -612,6 +612,9 @@ DPCTLSyclEventRef dpnp_qr_c(DPCTLSyclQueueRef q_ref,
612612
(void)dep_event_vec_ref;
613613

614614
DPCTLSyclEventRef event_ref = nullptr;
615+
if (!size_m || !size_n) {
616+
return event_ref;
617+
}
615618
sycl::queue q = *(reinterpret_cast<sycl::queue *>(q_ref));
616619

617620
sycl::event event;

dpnp/dpnp_iface_manipulation.py

Lines changed: 112 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
"atleast_1d",
5555
"atleast_2d",
5656
"atleast_3d",
57+
"broadcast_arrays",
5758
"broadcast_to",
5859
"concatenate",
5960
"copyto",
@@ -309,6 +310,55 @@ def atleast_3d(*arys):
309310
return res
310311

311312

313+
def broadcast_arrays(*args, subok=False):
314+
"""
315+
Broadcast any number of arrays against each other.
316+
317+
For full documentation refer to :obj:`numpy.broadcast_arrays`.
318+
319+
Returns
320+
-------
321+
broadcasted : list of dpnp.ndarray
322+
These arrays are views on the original arrays.
323+
324+
Limitations
325+
-----------
326+
Parameter `args` is supported as either :class:`dpnp.ndarray`
327+
or :class:`dpctl.tensor.usm_ndarray`.
328+
Otherwise ``TypeError`` exception will be raised.
329+
Parameter `subok` is supported with default value.
330+
Otherwise ``NotImplementedError`` exception will be raised.
331+
332+
See Also
333+
--------
334+
:obj:`dpnp.broadcast_to` : Broadcast an array to a new shape.
335+
336+
Examples
337+
--------
338+
>>> import dpnp as np
339+
>>> x = np.array([[1, 2, 3]])
340+
>>> y = np.array([[4], [5]])
341+
>>> np.broadcast_arrays(x, y)
342+
[array([[1, 2, 3],
343+
[1, 2, 3]]), array([[4, 4, 4],
344+
[5, 5, 5]])]
345+
346+
"""
347+
348+
if subok is not False:
349+
raise NotImplementedError(f"subok={subok} is currently not supported")
350+
351+
if len(args) == 0:
352+
return []
353+
354+
dpt_arrays = dpt.broadcast_arrays(
355+
*[dpnp.get_usm_ndarray(array) for array in args]
356+
)
357+
return [
358+
dpnp_array._create_from_usm_ndarray(usm_arr) for usm_arr in dpt_arrays
359+
]
360+
361+
312362
def broadcast_to(array, /, shape, subok=False):
313363
"""
314364
Broadcast an array to a new shape.
@@ -324,10 +374,15 @@ def broadcast_to(array, /, shape, subok=False):
324374
-----------
325375
Parameter `array` is supported as either :class:`dpnp.ndarray`
326376
or :class:`dpctl.tensor.usm_ndarray`.
377+
Otherwise ``TypeError`` exception will be raised.
327378
Parameter `subok` is supported with default value.
328-
Otherwise the function will be executed sequentially on CPU.
379+
Otherwise ``NotImplementedError`` exception will be raised.
329380
Input array data types of `array` is limited by supported DPNP :ref:`Data types`.
330381
382+
See Also
383+
--------
384+
:obj:`dpnp.broadcast_arrays` : Broadcast any number of arrays against each other.
385+
331386
Examples
332387
--------
333388
>>> import dpnp as dp
@@ -340,13 +395,11 @@ def broadcast_to(array, /, shape, subok=False):
340395
"""
341396

342397
if subok is not False:
343-
pass
344-
elif dpnp.is_supported_array_type(array):
345-
dpt_array = dpnp.get_usm_ndarray(array)
346-
new_array = dpt.broadcast_to(dpt_array, shape)
347-
return dpnp_array._create_from_usm_ndarray(new_array)
398+
raise NotImplementedError(f"subok={subok} is currently not supported")
348399

349-
return call_origin(numpy.broadcast_to, array, shape=shape, subok=subok)
400+
dpt_array = dpnp.get_usm_ndarray(array)
401+
new_array = dpt.broadcast_to(dpt_array, shape)
402+
return dpnp_array._create_from_usm_ndarray(new_array)
350403

351404

352405
def concatenate(
@@ -367,7 +420,7 @@ def concatenate(
367420
Each array in `arrays` is supported as either :class:`dpnp.ndarray`
368421
or :class:`dpctl.tensor.usm_ndarray`. Otherwise ``TypeError`` exception
369422
will be raised.
370-
Parameters `out` and `dtype are supported with default value.
423+
Parameters `out` and `dtype` are supported with default value.
371424
Otherwise the function will be executed sequentially on CPU.
372425
373426
See Also
@@ -1548,20 +1601,61 @@ def unique(ar, **kwargs):
15481601
return call_origin(numpy.unique, ar, **kwargs)
15491602

15501603

1551-
def vstack(tup):
1604+
def vstack(tup, *, dtype=None, casting="same_kind"):
15521605
"""
15531606
Stack arrays in sequence vertically (row wise).
15541607
15551608
For full documentation refer to :obj:`numpy.vstack`.
15561609
1557-
"""
1610+
Returns
1611+
-------
1612+
out : dpnp.ndarray
1613+
The array formed by stacking the given arrays, will be at least 2-D.
15581614
1559-
# TODO:
1560-
# `call_origin` cannot convert sequence of array to sequence of
1561-
# nparray
1562-
tup_new = []
1563-
for tp in tup:
1564-
tpx = dpnp.asnumpy(tp) if not isinstance(tp, numpy.ndarray) else tp
1565-
tup_new.append(tpx)
1615+
Limitations
1616+
-----------
1617+
Each array in `tup` is supported as either :class:`dpnp.ndarray`
1618+
or :class:`dpctl.tensor.usm_ndarray`. Otherwise ``TypeError`` exception
1619+
will be raised.
1620+
Parameters `dtype` and `casting` are supported with default value.
1621+
Otherwise the function will be executed sequentially on CPU.
15661622
1567-
return call_origin(numpy.vstack, tup_new)
1623+
See Also
1624+
--------
1625+
:obj:`dpnp.concatenate` : Join a sequence of arrays along an existing axis.
1626+
:obj:`dpnp.stack` : Join a sequence of arrays along a new axis.
1627+
:obj:`dpnp.hstack` : Stack arrays in sequence horizontally (column wise).
1628+
:obj:`dpnp.dstack` : Stack arrays in sequence depth wise (along third axis).
1629+
:obj:`dpnp.column_stack` : Stack 1-D arrays as columns into a 2-D array.
1630+
:obj:`dpnp.block` : Assemble an nd-array from nested lists of blocks.
1631+
:obj:`dpnp.split` : Split array into a list of multiple sub-arrays of equal size.
1632+
1633+
Examples
1634+
--------
1635+
>>> import dpnp as np
1636+
>>> a = np.array([1, 2, 3])
1637+
>>> b = np.array([4, 5, 6])
1638+
>>> np.vstack((a, b))
1639+
array([[1, 2, 3],
1640+
[4, 5, 6]])
1641+
1642+
>>> a = np.array([[1], [2], [3]])
1643+
>>> b = np.array([[4], [5], [6]])
1644+
>>> np.vstack((a, b))
1645+
array([[1],
1646+
[2],
1647+
[3],
1648+
[4],
1649+
[5],
1650+
[6]])
1651+
1652+
"""
1653+
1654+
if not hasattr(tup, "__getitem__"):
1655+
raise TypeError(
1656+
"Arrays to stack must be passed as a sequence type such as list or tuple."
1657+
)
1658+
arrs = dpnp.atleast_2d(*tup)
1659+
if not isinstance(arrs, list):
1660+
arrs = [arrs]
1661+
return dpnp.concatenate(arrs, axis=0, dtype=dtype, casting=casting)

dpnp/linalg/dpnp_algo_linalg.pyx

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -142,15 +142,9 @@ cpdef object dpnp_cond(object input, object p):
142142
cpdef utils.dpnp_descriptor dpnp_det(utils.dpnp_descriptor input):
143143
cdef shape_type_c input_shape = input.shape
144144
cdef size_t n = input.shape[-1]
145-
cdef size_t size_out = 1
145+
cdef shape_type_c result_shape = (1,)
146146
if input.ndim != 2:
147-
output_shape = tuple((list(input.shape))[:-2])
148-
for i in range(len(output_shape)):
149-
size_out *= output_shape[i]
150-
151-
cdef shape_type_c result_shape = (size_out,)
152-
if size_out > 1:
153-
result_shape = output_shape
147+
result_shape = tuple((list(input.shape))[:-2])
154148

155149
cdef DPNPFuncType param1_type = dpnp_dtype_to_DPNPFuncType(input.dtype)
156150

dpnp/linalg/dpnp_iface_linalg.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,9 @@ def det(input):
159159

160160
x1_desc = dpnp.get_dpnp_descriptor(input, copy_when_nondefault_queue=False)
161161
if x1_desc:
162-
if x1_desc.shape[-1] == x1_desc.shape[-2]:
162+
if x1_desc.ndim < 2:
163+
pass
164+
elif x1_desc.shape[-1] == x1_desc.shape[-2]:
163165
result_obj = dpnp_det(x1_desc).get_pyobj()
164166
result = dpnp.convert_single_elem_array_to_scalar(result_obj)
165167

@@ -488,7 +490,9 @@ def qr(x1, mode="reduced"):
488490

489491
x1_desc = dpnp.get_dpnp_descriptor(x1, copy_when_nondefault_queue=False)
490492
if x1_desc:
491-
if mode != "reduced":
493+
if x1_desc.ndim != 2:
494+
pass
495+
elif mode != "reduced":
492496
pass
493497
else:
494498
result_tup = dpnp_qr(x1_desc, mode)

tests/skipped_tests.tbl

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@ tests/third_party/cupy/fft_tests/test_fft.py::TestFftn_param_23_{axes=None, norm
4040

4141
tests/third_party/intel/test_zero_copy_test1.py::test_dpnp_interaction_with_dpctl_memory
4242

43-
tests/test_arraymanipulation.py::TestVstack::test_generator
44-
4543
tests/test_linalg.py::test_cond[-1-[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]
4644
tests/test_linalg.py::test_cond[1-[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]
4745
tests/test_linalg.py::test_cond[-2-[[1, 0, -1], [0, 1, 0], [1, 0, 1]]]
@@ -415,36 +413,21 @@ tests/third_party/cupy/logic_tests/test_comparison.py::TestArrayEqual::test_arra
415413
tests/third_party/cupy/logic_tests/test_comparison.py::TestArrayEqual::test_array_equal_not_equal
416414

417415
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_0_{shapes=[(), ()]}::test_broadcast
418-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_0_{shapes=[(), ()]}::test_broadcast_arrays
419416
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_10_{shapes=[(0, 1, 1, 0, 3), (5, 2, 0, 1, 0, 0, 3), (2, 1, 0, 0, 0, 3)]}::test_broadcast
420-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_10_{shapes=[(0, 1, 1, 0, 3), (5, 2, 0, 1, 0, 0, 3), (2, 1, 0, 0, 0, 3)]}::test_broadcast_arrays
421417
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_1_{shapes=[(0,), (0,)]}::test_broadcast
422-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_1_{shapes=[(0,), (0,)]}::test_broadcast_arrays
423418
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_2_{shapes=[(1,), (1,)]}::test_broadcast
424-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_2_{shapes=[(1,), (1,)]}::test_broadcast_arrays
425419
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_3_{shapes=[(2,), (2,)]}::test_broadcast
426-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_3_{shapes=[(2,), (2,)]}::test_broadcast_arrays
427420
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_4_{shapes=[(0,), (1,)]}::test_broadcast
428-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_4_{shapes=[(0,), (1,)]}::test_broadcast_arrays
429421
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_5_{shapes=[(2, 3), (1, 3)]}::test_broadcast
430-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_5_{shapes=[(2, 3), (1, 3)]}::test_broadcast_arrays
431422
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_6_{shapes=[(2, 1, 3, 4), (3, 1, 4)]}::test_broadcast
432-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_6_{shapes=[(2, 1, 3, 4), (3, 1, 4)]}::test_broadcast_arrays
433423
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_7_{shapes=[(4, 3, 2, 3), (2, 3)]}::test_broadcast
434-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_7_{shapes=[(4, 3, 2, 3), (2, 3)]}::test_broadcast_arrays
435424
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_8_{shapes=[(2, 0, 1, 1, 3), (2, 1, 0, 0, 3)]}::test_broadcast
436-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_8_{shapes=[(2, 0, 1, 1, 3), (2, 1, 0, 0, 3)]}::test_broadcast_arrays
437425
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_9_{shapes=[(0, 1, 1, 3), (2, 1, 0, 0, 3)]}::test_broadcast
438-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_9_{shapes=[(0, 1, 1, 3), (2, 1, 0, 0, 3)]}::test_broadcast_arrays
439-
440426
tests/third_party/cupy/manipulation_tests/test_dims.py::TestInvalidBroadcast_param_0_{shapes=[(3,), (2,)]}::test_invalid_broadcast
441-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestInvalidBroadcast_param_0_{shapes=[(3,), (2,)]}::test_invalid_broadcast_arrays
442427
tests/third_party/cupy/manipulation_tests/test_dims.py::TestInvalidBroadcast_param_1_{shapes=[(3, 2), (2, 3)]}::test_invalid_broadcast
443-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestInvalidBroadcast_param_1_{shapes=[(3, 2), (2, 3)]}::test_invalid_broadcast_arrays
444428
tests/third_party/cupy/manipulation_tests/test_dims.py::TestInvalidBroadcast_param_2_{shapes=[(3, 2), (3, 4)]}::test_invalid_broadcast
445-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestInvalidBroadcast_param_2_{shapes=[(3, 2), (3, 4)]}::test_invalid_broadcast_arrays
446429
tests/third_party/cupy/manipulation_tests/test_dims.py::TestInvalidBroadcast_param_3_{shapes=[(0,), (2,)]}::test_invalid_broadcast
447-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestInvalidBroadcast_param_3_{shapes=[(0,), (2,)]}::test_invalid_broadcast_arrays
430+
448431
tests/third_party/cupy/manipulation_tests/test_shape.py::TestRavel::test_ravel2
449432
tests/third_party/cupy/manipulation_tests/test_shape.py::TestRavel::test_ravel3
450433
tests/third_party/cupy/manipulation_tests/test_shape.py::TestRavel::test_external_ravel

tests/skipped_tests_gpu.tbl

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,6 @@ tests/third_party/cupy/random_tests/test_distributions.py::TestDistributionsMult
210210
tests/third_party/cupy/random_tests/test_distributions.py::TestDistributionsMultivariateNormal_param_3_{d=4, shape=(3, 2)}::test_normal
211211

212212
tests/third_party/intel/test_zero_copy_test1.py::test_dpnp_interaction_with_dpctl_memory
213-
tests/test_arraymanipulation.py::TestVstack::test_generator
214213

215214
tests/test_linalg.py::test_cond[-1-[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]
216215
tests/test_linalg.py::test_cond[1-[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]
@@ -555,36 +554,21 @@ tests/third_party/cupy/logic_tests/test_comparison.py::TestArrayEqual::test_arra
555554
tests/third_party/cupy/logic_tests/test_comparison.py::TestArrayEqual::test_array_equal_not_equal
556555

557556
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_0_{shapes=[(), ()]}::test_broadcast
558-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_0_{shapes=[(), ()]}::test_broadcast_arrays
559557
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_10_{shapes=[(0, 1, 1, 0, 3), (5, 2, 0, 1, 0, 0, 3), (2, 1, 0, 0, 0, 3)]}::test_broadcast
560-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_10_{shapes=[(0, 1, 1, 0, 3), (5, 2, 0, 1, 0, 0, 3), (2, 1, 0, 0, 0, 3)]}::test_broadcast_arrays
561558
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_1_{shapes=[(0,), (0,)]}::test_broadcast
562-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_1_{shapes=[(0,), (0,)]}::test_broadcast_arrays
563559
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_2_{shapes=[(1,), (1,)]}::test_broadcast
564-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_2_{shapes=[(1,), (1,)]}::test_broadcast_arrays
565560
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_3_{shapes=[(2,), (2,)]}::test_broadcast
566-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_3_{shapes=[(2,), (2,)]}::test_broadcast_arrays
567561
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_4_{shapes=[(0,), (1,)]}::test_broadcast
568-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_4_{shapes=[(0,), (1,)]}::test_broadcast_arrays
569562
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_5_{shapes=[(2, 3), (1, 3)]}::test_broadcast
570-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_5_{shapes=[(2, 3), (1, 3)]}::test_broadcast_arrays
571563
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_6_{shapes=[(2, 1, 3, 4), (3, 1, 4)]}::test_broadcast
572-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_6_{shapes=[(2, 1, 3, 4), (3, 1, 4)]}::test_broadcast_arrays
573564
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_7_{shapes=[(4, 3, 2, 3), (2, 3)]}::test_broadcast
574-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_7_{shapes=[(4, 3, 2, 3), (2, 3)]}::test_broadcast_arrays
575565
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_8_{shapes=[(2, 0, 1, 1, 3), (2, 1, 0, 0, 3)]}::test_broadcast
576-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_8_{shapes=[(2, 0, 1, 1, 3), (2, 1, 0, 0, 3)]}::test_broadcast_arrays
577566
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_9_{shapes=[(0, 1, 1, 3), (2, 1, 0, 0, 3)]}::test_broadcast
578-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestBroadcast_param_9_{shapes=[(0, 1, 1, 3), (2, 1, 0, 0, 3)]}::test_broadcast_arrays
579-
580567
tests/third_party/cupy/manipulation_tests/test_dims.py::TestInvalidBroadcast_param_0_{shapes=[(3,), (2,)]}::test_invalid_broadcast
581-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestInvalidBroadcast_param_0_{shapes=[(3,), (2,)]}::test_invalid_broadcast_arrays
582568
tests/third_party/cupy/manipulation_tests/test_dims.py::TestInvalidBroadcast_param_1_{shapes=[(3, 2), (2, 3)]}::test_invalid_broadcast
583-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestInvalidBroadcast_param_1_{shapes=[(3, 2), (2, 3)]}::test_invalid_broadcast_arrays
584569
tests/third_party/cupy/manipulation_tests/test_dims.py::TestInvalidBroadcast_param_2_{shapes=[(3, 2), (3, 4)]}::test_invalid_broadcast
585-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestInvalidBroadcast_param_2_{shapes=[(3, 2), (3, 4)]}::test_invalid_broadcast_arrays
586570
tests/third_party/cupy/manipulation_tests/test_dims.py::TestInvalidBroadcast_param_3_{shapes=[(0,), (2,)]}::test_invalid_broadcast
587-
tests/third_party/cupy/manipulation_tests/test_dims.py::TestInvalidBroadcast_param_3_{shapes=[(0,), (2,)]}::test_invalid_broadcast_arrays
571+
588572
tests/third_party/cupy/manipulation_tests/test_shape.py::TestRavel::test_ravel2
589573
tests/third_party/cupy/manipulation_tests/test_shape.py::TestRavel::test_ravel3
590574
tests/third_party/cupy/manipulation_tests/test_shape.py::TestRavel::test_external_ravel

0 commit comments

Comments
 (0)