MCPcopy Create free account
hub / github.com/NVIDIA/DALI / ToDLPack

Function ToDLPack

dali/python/backend_impl.cc:623–645  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

621
622template <typename Backend>
623py::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
647AccessOrder AccessOrderFromPythonStreamObj(const py::object &cuda_stream) {
648 AccessOrder order;

Callers

nothing calls this directly

Calls 6

DLTensorToCapsuleFunction · 0.85
emplaceMethod · 0.80
set_pinnedMethod · 0.80
set_orderMethod · 0.80
ToDLMTensorFunction · 0.70
CopyMethod · 0.45

Tested by

no test coverage detected