I recently started working agaist nighly build of pytorch and found out that signatures of two functions (that were implemented) had changed:
- // {"schema": "aten::mean.out(Tensor self, int[1] dim, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!)", "dispatch": "True", "default": "False"}
- Tensor & mean_out(const Tensor & self, IntArrayRef dim, bool keepdim, c10::optional<ScalarType> dtype, Tensor & out)
+ // {"schema": "aten::mean.out(Tensor self, int[1]? dim, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!)", "dispatch": "True", "default": "False"}
+ Tensor & mean_out(const Tensor & self, OptionalIntArrayRef dim, bool keepdim, c10::optional<ScalarType> dtype, Tensor & out)
...
- // {"schema": "aten::sum.IntList_out(Tensor self, int[1] dim, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!)", "dispatch": "True", "default": "False"}
- Tensor & sum_out(const Tensor & self, IntArrayRef dim, bool keepdim, c10::optional<ScalarType> dtype, Tensor & out)
+ // {"schema": "aten::sum.IntList_out(Tensor self, int[1]? dim, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!)", "dispatch": "True", "default": "False"}
+ Tensor & sum_out(const Tensor & self, OptionalIntArrayRef dim, bool keepdim, c10::optional<ScalarType> dtype, Tensor & out)
Basially IntArrayRef
was replaced with OptionalIntArrayRef
Now I understand that I can’t expect that the signatures will be static. Yet I have several questions:
- How can I get alerts in advance that some of existing function signatures had changed so I can be prepared instead of getting bug reports that something does not work
- How should I handle backend build for different torch versions, since once user may have 1.14 and another 1.16. Since it is out-of-tree backend I probably need to support at least several versions of pytorch since I can’t expect everybody to use the same latest version. How do you recommend doing it?
- How frequent are modifications of existent signatures and how much will I need to run after changes and torch and update the functions all the time?
Thanks!
Artyom Beilis