-
Notifications
You must be signed in to change notification settings - Fork 160
Description
Dear DLPack community:
After quite a bit of discussions and coordinations, we are planning to do a ABI breaking change to add versioning and read only field to DLPack. DLPack has been a minimum stable ABI for exchanging Array data and we would like for it to continue stay that way.
In the meantime, we would like to have opportunities to carefully evolve DLPack, of course in still carefully considered manner. After long discussions, we have decided to make the following change.
- Add a new data structure
DLManagedTensorVersioned, which contains a new version field - Add DLPackVersion struct to indicate both api and abi versions.
- Add flags field for boolean options, with support for READ_ONLY bit mask
We also propose to change Data API exchange protocol, to allow new versions of DLPack to return capsule with name "vdltensor"(instead of the old "dltensor"), this would .
The change is still ABI compatible, as the new data structure ABI comes with the new class DLManagedTensorVersioned. The data api however would involve an ABI update and update of all DLPack importer/exporters.
Such a move certainly impact a lot of packages and we would like to plan it carefully, as a result, we would like to have at least one month of notice to let everyone chime in, also see if we have enough volunteers to help update the data api exchanges in various packages.
struct DLManagedTensor {
DLTensor dl_tensor;
void * manager_ctx;
void (*deleter)(struct DLManagedTensor * self);
};
/*!
* \brief The DLPack and DLPack ABI versions of the tensor.
*/
typedef struct {
/*! \brief DLPack version. */
uint32_t dlpack;
/*! \brief DLPack ABI version. */
uint32_t abi;
} DLPackVersion;
struct DLManagedTensorVersioned {
DLPackVersion version;
void * manager_ctx;
void (*deleter)(struct DLManagedTensorVersioned * self);
uint64_t flags;
DLTensor dl_tensor;
}
typedef DLPACK_BIT_MASK_READ_ONLY 1- DataAPI change: PyCapsule - rename to vdltensor, so there is proper error messages because of name mismatch