|
23 | 23 | import dpctl |
24 | 24 | import dpctl.tensor as dpt |
25 | 25 | import dpctl.tensor._dlpack as _dlp |
| 26 | +import dpctl.tensor._usmarray as dpt_arr |
26 | 27 |
|
27 | 28 | device_oneAPI = 14 # DLDeviceType.kDLOneAPI |
28 | 29 |
|
@@ -470,3 +471,37 @@ def test_dlpack_kwargs(): |
470 | 471 | assert y._pointer != x2._pointer |
471 | 472 | del x2, y |
472 | 473 | del cap |
| 474 | + |
| 475 | + |
| 476 | +def _is_capsule(o): |
| 477 | + t = type(o) |
| 478 | + return t.__module__ == "builtins" and t.__name__ == "PyCapsule" |
| 479 | + |
| 480 | + |
| 481 | +def test_dlpack_dl_device(): |
| 482 | + try: |
| 483 | + x = dpt.arange(100, dtype="i4") |
| 484 | + except dpctl.SyclDeviceCreationError: |
| 485 | + pytest.skip("No SYCL devices available") |
| 486 | + max_supported_ver = _dlp.get_build_dlpack_version() |
| 487 | + cap1 = x.__dlpack__( |
| 488 | + dl_device=x.__dlpack_device__(), max_version=max_supported_ver |
| 489 | + ) |
| 490 | + assert _is_capsule(cap1) |
| 491 | + cap2 = x.__dlpack__(dl_device=(1, 0), max_version=max_supported_ver) |
| 492 | + assert _is_capsule(cap2) |
| 493 | + cap3 = x.__dlpack__( |
| 494 | + dl_device=(dpt_arr.DLDeviceType.kDLCPU, 0), |
| 495 | + max_version=max_supported_ver, |
| 496 | + ) |
| 497 | + assert _is_capsule(cap3) |
| 498 | + cap4 = x.__dlpack__(dl_device=("kDLCPU", 0), max_version=max_supported_ver) |
| 499 | + assert _is_capsule(cap4) |
| 500 | + with pytest.raises(NotImplementedError): |
| 501 | + # pass method instead of return of its __call__ invocation |
| 502 | + x.__dlpack__( |
| 503 | + dl_device=x.__dlpack_device__, max_version=max_supported_ver |
| 504 | + ) |
| 505 | + with pytest.raises(NotImplementedError): |
| 506 | + # exercise check for length |
| 507 | + x.__dlpack__(dl_device=(3,), max_version=max_supported_ver) |
0 commit comments