| 621 | |
| 622 | template <typename Backend> |
| 623 | py::capsule ToDLPack(Tensor<Backend> &tensor, |
| 624 | std::optional<intptr_t> stream, |
| 625 | std::optional<std::pair<int, int>> max_version, |
| 626 | std::optional<std::pair<DLDeviceType, int>> dl_device, |
| 627 | std::optional<bool> copy) { |
| 628 | // `max_version` is ignored - for now DALI always returns legacy, unversioned capsule. |
| 629 | (void)max_version; |
| 630 | |
| 631 | DomainTimeRange range("__dlpack__"); |
| 632 | auto *t = &tensor; |
| 633 | std::optional<Tensor<Backend>> copied; |
| 634 | if (copy && *copy) { |
| 635 | copied.emplace(); |
| 636 | copied->set_pinned(tensor.is_pinned()); |
| 637 | copied->set_order(tensor.order()); |
| 638 | copied->Copy(tensor); |
| 639 | t = &*copied; |
| 640 | } |
| 641 | return DLTensorToCapsule([&]() { |
| 642 | py::gil_scoped_release interpreter_unlock{}; |
| 643 | return ToDLMTensor(*t, stream, dl_device); |
| 644 | }()); |
| 645 | } |
| 646 | |
| 647 | AccessOrder AccessOrderFromPythonStreamObj(const py::object &cuda_stream) { |
| 648 | AccessOrder order; |
nothing calls this directly
no test coverage detected