From c8fe37cee001c0fa9309938ce29b3e1ec3607df5 Mon Sep 17 00:00:00 2001 From: Tirth Patel Date: Wed, 23 Feb 2022 22:55:30 +0530 Subject: [PATCH 1/3] Remove (migrated) DLPack docs from Data Interchange page --- spec/design_topics/data_interchange.rst | 111 ++---------------------- 1 file changed, 5 insertions(+), 106 deletions(-) diff --git a/spec/design_topics/data_interchange.rst b/spec/design_topics/data_interchange.rst index d8ab07f42..10c2f993b 100644 --- a/spec/design_topics/data_interchange.rst +++ b/spec/design_topics/data_interchange.rst @@ -40,7 +40,7 @@ The interchange mechanism must offer the following: ABI is required for packages to work well together.* The best candidate for this protocol is -`DLPack `_, and hence that is what this +`DLPack `_, and hence that is what this standard has chosen as the primary/recommended protocol. Note that the ``asarray`` function also supports the Python buffer protocol (CPU-only) to support libraries that already implement buffer protocol support. @@ -70,9 +70,11 @@ support libraries that already implement buffer protocol support. See the `RFC to adopt DLPack `_ for discussion that preceded the adoption of DLPack. +DLPack's documentation can be found at: +`https://dmlc.github.io/dlpack/latest/ `__. -DLPack support --------------- +The `Python specification of DLPack `__ +page gives a high-level specification for data exchange in Python using DLPack. .. note:: DLPack is a standalone protocol/project and can therefore be used outside of @@ -80,106 +82,3 @@ DLPack support are recommended to do so using the same syntax and semantics as outlined below. They are not required to return an array object from ``from_dlpack`` which conforms to this standard. - - DLPack itself has no documentation currently outside of the inline comments in - `dlpack.h `_. - In the future, the below content may be migrated to the (to-be-written) DLPack docs. - - -Syntax for data interchange with DLPack -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The array API will offer the following syntax for data interchange: - -1. A ``from_dlpack(x)`` function, which accepts (array) objects with a - ``__dlpack__`` method and uses that method to construct a new array - containing the data from ``x``. -2. ``__dlpack__(self, stream=None)`` and ``__dlpack_device__`` methods on the - array object, which will be called from within ``from_dlpack``, to query - what device the array is on (may be needed to pass in the correct - stream, e.g. in the case of multiple GPUs) and to access the data. - - -Semantics -~~~~~~~~~ - -DLPack describe the memory layout of strided, n-dimensional arrays. -When a user calls ``y = from_dlpack(x)``, the library implementing ``x`` (the -"producer") will provide access to the data from ``x`` to the library -containing ``from_dlpack`` (the "consumer"). If possible, this must be -zero-copy (i.e. ``y`` will be a *view* on ``x``). If not possible, that library -may make a copy of the data. In both cases: - -- the producer keeps owning the memory -- ``y`` may or may not be a view, therefore the user must keep the recommendation to avoid mutating ``y`` in mind - see :ref:`copyview-mutability`. -- Both ``x`` and ``y`` may continue to be used just like arrays created in other ways. - -If an array that is accessed via the interchange protocol lives on a -device that the requesting library does not support, it is recommended to -raise a ``TypeError``. - -Stream handling through the ``stream`` keyword applies to CUDA and ROCm (perhaps -to other devices that have a stream concept as well, however those haven't been -considered in detail). The consumer must pass the stream it will use to the -producer; the producer must synchronize or wait on the stream when necessary. -In the common case of the default stream being used, synchronization will be -unnecessary so asynchronous execution is enabled. - - -Implementation -~~~~~~~~~~~~~~ - -*Note that while this API standard largely tries to avoid discussing -implementation details, some discussion and requirements are needed -here because data interchange requires coordination between -implementers on, e.g., memory management.* - -.. image:: /_static/images/DLPack_diagram.png - :alt: Diagram of DLPack structs - -*DLPack diagram. Dark blue are the structs it defines, light blue -struct members, gray text enum values of supported devices and data -types.* - -The ``__dlpack__`` method will produce a ``PyCapsule`` containing a -``DLManagedTensor``, which will be consumed immediately within -``from_dlpack`` - therefore it is consumed exactly once, and it will not be -visible to users of the Python API. - -The producer must set the ``PyCapsule`` name to ``"dltensor"`` so that -it can be inspected by name, and set ``PyCapsule_Destructor`` that calls -the ``deleter`` of the ``DLManagedTensor`` when the ``"dltensor"``-named -capsule is no longer needed. - -The consumer must transer ownership of the ``DLManangedTensor`` from the -capsule to its own object. It does so by renaming the capsule to -``"used_dltensor"`` to ensure that ``PyCapsule_Destructor`` will not get -called (ensured if ``PyCapsule_Destructor`` calls ``deleter`` only for -capsules whose name is ``"dltensor"``), but the ``deleter`` of the -``DLManagedTensor`` will be called by the destructor of the consumer -library object created to own the ``DLManagerTensor`` obtained from the -capsule. - -Note: the capsule names ``"dltensor"`` and ``"used_dltensor"`` must be -statically allocated. - -When the ``strides`` field in the ``DLTensor`` struct is ``NULL``, it indicates a -row-major compact array. If the array is of size zero, the data pointer in -``DLTensor`` should be set to either ``NULL`` or ``0``. - -DLPack version used must be ``0.2 <= DLPACK_VERSION < 1.0``. For further -details on DLPack design and how to implement support for it, -refer to `github.com/dmlc/dlpack `_. - -.. warning:: - DLPack contains a ``device_id``, which will be the device - ID (an integer, ``0, 1, ...``) which the producer library uses. In - practice this will likely be the same numbering as that of the - consumer, however that is not guaranteed. Depending on the hardware - type, it may be possible for the consumer library implementation to - look up the actual device from the pointer to the data - this is - possible for example for CUDA device pointers. - - It is recommended that implementers of this array API consider and document - whether the ``.device`` attribute of the array returned from ``from_dlpack`` is - guaranteed to be in a certain order or not. From c6ce8aaa54567910ee5086cb8ae01f89a56385db Mon Sep 17 00:00:00 2001 From: Tirth Patel Date: Wed, 23 Feb 2022 23:18:01 +0530 Subject: [PATCH 2/3] Use raw link and remove DLPack image --- spec/_static/images/DLPack_diagram.png | Bin 23951 -> 0 bytes spec/design_topics/data_interchange.rst | 3 +-- 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 100644 spec/_static/images/DLPack_diagram.png diff --git a/spec/_static/images/DLPack_diagram.png b/spec/_static/images/DLPack_diagram.png deleted file mode 100644 index 3beadf56a9c637006d98154aa3ea7eef8c4f55ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23951 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 for discussion that preceded the adoption of DLPack. -DLPack's documentation can be found at: -`https://dmlc.github.io/dlpack/latest/ `__. +DLPack's documentation can be found at: https://dmlc.github.io/dlpack/latest/. The `Python specification of DLPack `__ page gives a high-level specification for data exchange in Python using DLPack. From 4884cc817a0e5489a4584d00de57781797838eb2 Mon Sep 17 00:00:00 2001 From: Tirth Patel Date: Thu, 24 Feb 2022 00:59:00 +0530 Subject: [PATCH 3/3] Add DLPack Support section back --- spec/design_topics/data_interchange.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spec/design_topics/data_interchange.rst b/spec/design_topics/data_interchange.rst index 321695be2..8686042c8 100644 --- a/spec/design_topics/data_interchange.rst +++ b/spec/design_topics/data_interchange.rst @@ -39,6 +39,9 @@ The interchange mechanism must offer the following: C/C++, and are released independently from each other. Hence a stable C ABI is required for packages to work well together.* +DLPack: An in-memory tensor structure +------------------------------------- + The best candidate for this protocol is `DLPack `_, and hence that is what this standard has chosen as the primary/recommended protocol. Note that the