[kernel] Add template based unboxing#1284
[kernel] Add template based unboxing#1284larryliu0820 wants to merge 11 commits intogh/larryliu0820/6/basefrom
Conversation
Adding a new feature to allow users to bypass codegen and register their
kernels directly. This is very useful for custom kernels for custom ops.
Example usage:
```
Tensor& my_op(RuntimeContext& ctx, const Tensor& self, const Tensor& other, Tensor& out) {
// ...
return out;
}
Kernel my_kernel = Kernel.make_boxed_kernel("my_ns::my_op",EXECUTORCH_FN(my_op));
register_kernels({my_kernel});
```
[ghstack-poisoned]
🔗 Helpful Links🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/1284
Note: Links to docs will display an error until the docs builds have been completed. ❌ 1 New FailureAs of commit 84e9d77 with merge base 02edc9e ( NEW FAILURE - The following job has failed:
This comment was automatically generated by Dr. CI and updates every 15 minutes. |
Adding a new feature to allow users to bypass codegen and register their
kernels directly. This is very useful for custom kernels for custom ops.
Example usage:
```
Tensor& my_op(RuntimeContext& ctx, const Tensor& self, const Tensor& other, Tensor& out) {
// ...
return out;
}
Kernel my_kernel = Kernel.make_boxed_kernel("my_ns::my_op",EXECUTORCH_FN(my_op));
register_kernels({my_kernel});
```
ghstack-source-id: 5163fd1
Pull Request resolved: #1284
|
@larryliu0820 has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
Adding a new feature to allow users to bypass codegen and register their
kernels directly. This is very useful for custom kernels for custom ops.
Example usage:
```
Tensor& my_op(RuntimeContext& ctx, const Tensor& self, const Tensor& other, Tensor& out) {
// ...
return out;
}
Kernel my_kernel = Kernel.make_boxed_kernel("my_ns::my_op",EXECUTORCH_FN(my_op));
register_kernels({my_kernel});
```
Differential Revision: [D51553099](https://our.internmc.facebook.com/intern/diff/D51553099)
[ghstack-poisoned]
Adding a new feature to allow users to bypass codegen and register their
kernels directly. This is very useful for custom kernels for custom ops.
Example usage:
```
Tensor& my_op(RuntimeContext& ctx, const Tensor& self, const Tensor& other, Tensor& out) {
// ...
return out;
}
Kernel my_kernel = Kernel.make_boxed_kernel("my_ns::my_op",EXECUTORCH_FN(my_op));
register_kernels({my_kernel});
```
ghstack-source-id: c82dc20
Pull Request resolved: #1284
|
@larryliu0820 has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
Adding a new feature to allow users to bypass codegen and register their
kernels directly. This is very useful for custom kernels for custom ops.
Example usage:
```
Tensor& my_op(RuntimeContext& ctx, const Tensor& self, const Tensor& other, Tensor& out) {
// ...
return out;
}
Kernel my_kernel = Kernel.make_boxed_kernel("my_ns::my_op",EXECUTORCH_FN(my_op));
register_kernels({my_kernel});
```
Differential Revision: [D51553099](https://our.internmc.facebook.com/intern/diff/D51553099)
[ghstack-poisoned]
Adding a new feature to allow users to bypass codegen and register their
kernels directly. This is very useful for custom kernels for custom ops.
Example usage:
```
Tensor& my_op(RuntimeContext& ctx, const Tensor& self, const Tensor& other, Tensor& out) {
// ...
return out;
}
Kernel my_kernel = Kernel.make_boxed_kernel("my_ns::my_op",EXECUTORCH_FN(my_op));
register_kernels({my_kernel});
```
ghstack-source-id: c430da1
Pull Request resolved: #1284
|
@larryliu0820 has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
Adding a new feature to allow users to bypass codegen and register their
kernels directly. This is very useful for custom kernels for custom ops.
Example usage:
```
Tensor& my_op(RuntimeContext& ctx, const Tensor& self, const Tensor& other, Tensor& out) {
// ...
return out;
}
Kernel my_kernel = Kernel.make_boxed_kernel("my_ns::my_op",EXECUTORCH_FN(my_op));
register_kernels({my_kernel});
```
ghstack-source-id: c430da1
Pull Request resolved: #1284
Adding a new feature to allow users to bypass codegen and register their
kernels directly. This is very useful for custom kernels for custom ops.
Example usage:
```
Tensor& my_op(RuntimeContext& ctx, const Tensor& self, const Tensor& other, Tensor& out) {
// ...
return out;
}
Kernel my_kernel = Kernel.make_boxed_kernel("my_ns::my_op",EXECUTORCH_FN(my_op));
register_kernels({my_kernel});
```
Differential Revision: [D51553099](https://our.internmc.facebook.com/intern/diff/D51553099)
[ghstack-poisoned]
Adding a new feature to allow users to bypass codegen and register their
kernels directly. This is very useful for custom kernels for custom ops.
Example usage:
```
Tensor& my_op(RuntimeContext& ctx, const Tensor& self, const Tensor& other, Tensor& out) {
// ...
return out;
}
Kernel my_kernel = Kernel.make_boxed_kernel("my_ns::my_op",EXECUTORCH_FN(my_op));
register_kernels({my_kernel});
```
ghstack-source-id: f3f3dc2
Pull Request resolved: #1284
Adding a new feature to allow users to bypass codegen and register their
kernels directly. This is very useful for custom kernels for custom ops.
Example usage:
```
Tensor& my_op(RuntimeContext& ctx, const Tensor& self, const Tensor& other, Tensor& out) {
// ...
return out;
}
Kernel my_kernel = Kernel.make_boxed_kernel("my_ns::my_op",EXECUTORCH_FN(my_op));
register_kernels({my_kernel});
```
Differential Revision: [D51553099](https://our.internmc.facebook.com/intern/diff/D51553099)
[ghstack-poisoned]
|
@larryliu0820 has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
iseeyuan
left a comment
There was a problem hiding this comment.
LGTM.
Is there any plan to add template selective registration in future?
Adding a new feature to allow users to bypass codegen and register their
kernels directly. This is very useful for custom kernels for custom ops.
Example usage:
```
Tensor& my_op(RuntimeContext& ctx, const Tensor& self, const Tensor& other, Tensor& out) {
// ...
return out;
}
Kernel my_kernel = Kernel.make_boxed_kernel("my_ns::my_op",EXECUTORCH_FN(my_op));
register_kernels({my_kernel});
```
ghstack-source-id: 119e9ae
Pull Request resolved: #1284
My intention was not to add it in the first version for simplicity. We can add it later |
Adding a new feature to allow users to bypass codegen and register their
kernels directly. This is very useful for custom kernels for custom ops.
Example usage:
```
Tensor& my_op(RuntimeContext& ctx, const Tensor& self, const Tensor& other, Tensor& out) {
// ...
return out;
}
Kernel my_kernel = Kernel.make_boxed_kernel("my_ns::my_op",EXECUTORCH_FN(my_op));
register_kernels({my_kernel});
```
Differential Revision: [D51553099](https://our.internmc.facebook.com/intern/diff/D51553099)
[ghstack-poisoned]
Adding a new feature to allow users to bypass codegen and register their
kernels directly. This is very useful for custom kernels for custom ops.
Example usage:
```
Tensor& my_op(RuntimeContext& ctx, const Tensor& self, const Tensor& other, Tensor& out) {
// ...
return out;
}
Kernel my_kernel = Kernel.make_boxed_kernel("my_ns::my_op",EXECUTORCH_FN(my_op));
register_kernels({my_kernel});
```
ghstack-source-id: a5437bb
Pull Request resolved: #1284
|
@larryliu0820 has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
Adding a new feature to allow users to bypass codegen and register their
kernels directly. This is very useful for custom kernels for custom ops.
Example usage:
```
Tensor& my_op(RuntimeContext& ctx, const Tensor& self, const Tensor& other, Tensor& out) {
// ...
return out;
}
Kernel my_kernel = Kernel.make_boxed_kernel("my_ns::my_op",EXECUTORCH_FN(my_op));
register_kernels({my_kernel});
```
Differential Revision: [D51553099](https://our.internmc.facebook.com/intern/diff/D51553099)
[ghstack-poisoned]
Adding a new feature to allow users to bypass codegen and register their
kernels directly. This is very useful for custom kernels for custom ops.
Example usage:
```
Tensor& my_op(RuntimeContext& ctx, const Tensor& self, const Tensor& other, Tensor& out) {
// ...
return out;
}
Kernel my_kernel = Kernel.make_boxed_kernel("my_ns::my_op",EXECUTORCH_FN(my_op));
register_kernels({my_kernel});
```
ghstack-source-id: ffda42c
Pull Request resolved: #1284
|
@larryliu0820 has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
Adding a new feature to allow users to bypass codegen and register their
kernels directly. This is very useful for custom kernels for custom ops.
Example usage:
```
Tensor& my_op(RuntimeContext& ctx, const Tensor& self, const Tensor& other, Tensor& out) {
// ...
return out;
}
Kernel my_kernel = Kernel.make_boxed_kernel("my_ns::my_op",EXECUTORCH_FN(my_op));
register_kernels({my_kernel});
```
Differential Revision: [D51553099](https://our.internmc.facebook.com/intern/diff/D51553099)
[ghstack-poisoned]
|
@larryliu0820 has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
1 similar comment
|
@larryliu0820 has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
Adding a new feature to allow users to bypass codegen and register their
kernels directly. This is very useful for custom kernels for custom ops.
Example usage:
```
Tensor& my_op(RuntimeContext& ctx, const Tensor& self, const Tensor& other, Tensor& out) {
// ...
return out;
}
Kernel my_kernel = Kernel.make_boxed_kernel("my_ns::my_op",EXECUTORCH_FN(my_op));
register_kernels({my_kernel});
```
Differential Revision: [D51553099](https://our.internmc.facebook.com/intern/diff/D51553099)
[ghstack-poisoned]
|
@larryliu0820 has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
Adding a new feature to allow users to bypass codegen and register their
kernels directly. This is very useful for custom kernels for custom ops.
Example usage:
```
Tensor& my_op(RuntimeContext& ctx, const Tensor& self, const Tensor& other, Tensor& out) {
// ...
return out;
}
Kernel my_kernel = Kernel.make_boxed_kernel("my_ns::my_op",EXECUTORCH_FN(my_op));
register_kernels({my_kernel});
```
Differential Revision: [D51553099](https://our.internmc.facebook.com/intern/diff/D51553099)
[ghstack-poisoned]
|
@larryliu0820 has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
Adding a new feature to allow users to bypass codegen and register their
kernels directly. This is very useful for custom kernels for custom ops.
Example usage:
```
Tensor& my_op(RuntimeContext& ctx, const Tensor& self, const Tensor& other, Tensor& out) {
// ...
return out;
}
Kernel my_kernel = Kernel.make_boxed_kernel("my_ns::my_op",EXECUTORCH_FN(my_op));
register_kernels({my_kernel});
```
Differential Revision: [D51553099](https://our.internmc.facebook.com/intern/diff/D51553099)
[ghstack-poisoned]
|
@larryliu0820 has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
|
@larryliu0820 merged this pull request in 75284d2. |
Adding a new feature to allow users to bypass codegen and register their
kernels directly. This is very useful for custom kernels for custom ops.
Example usage:
```
Tensor& my_op(RuntimeContext& ctx, const Tensor& self, const Tensor& other, Tensor& out) {
// ...
return out;
}
Kernel my_kernel = Kernel.make_boxed_kernel("my_ns::my_op",EXECUTORCH_FN(my_op));
register_kernels({my_kernel});
```
ghstack-source-id: e9c36de
Pull Request resolved: pytorch/executorch#1284
Adding a new feature to allow users to bypass codegen and register their
kernels directly. This is very useful for custom kernels for custom ops.
Example usage:
```
Tensor& my_op(RuntimeContext& ctx, const Tensor& self, const Tensor& other, Tensor& out) {
// ...
return out;
}
Kernel my_kernel = Kernel.make_boxed_kernel("my_ns::my_op",EXECUTORCH_FN(my_op));
register_kernels({my_kernel});
```
ghstack-source-id: 119e9ae
Pull Request resolved: pytorch/executorch#1284
Stack from ghstack (oldest at bottom):
Adding a new feature to allow users to bypass codegen and register their
kernels directly. This is very useful for custom kernels for custom ops.
Example usage:
Differential Revision: D51553099