Tantalus13A98B5F commented on a change in pull request #8605:
URL: https://github.com/apache/tvm/pull/8605#discussion_r681675196
##########
File path: src/relay/transforms/convert_sparse_conv2d.cc
##########
@@ -155,6 +316,18 @@ Pass Conv2dToSparse(const Array<ObjectRef>& weight_name,
const Array<Array<PrimE
TVM_REGISTER_GLOBAL("relay._transform.Conv2dToSparse").set_body_typed(Conv2dToSparse);
+
+Pass Conv2dToSparse2(const String& layout, int kernel_size, int blockH, int
blockW, double sparse_thresh) {
+ runtime::TypedPackedFunc<Function(Function, IRModule, PassContext)>
pass_func =
+ [=](Function f, IRModule m, PassContext pc) {
+ auto f0 = Downcast<Function>(Conv2dToSparse2(f, layout, kernel_size,
blockH, blockW, sparse_thresh));
+ return f0;
+ };
+ return CreateFunctionPass(pass_func, 5, "Conv2dToSparse2",
{"DeadCodeElimination"});
+}
+
+TVM_REGISTER_GLOBAL("relay._transform.Conv2dToSparse2").set_body_typed(Conv2dToSparse2);
Review comment:
Sorry for the confusion.
The original pass aims to transform models whose params are not binded, so
that they still have names. Params are transformed to sparse formats prior to
running the pass, and then pass is executed to replace convolutions with sparse
counterparts, with the knowledge of names and shapes of sparse data.
The new pass aims to transform models with params binded. We found it useful
when working with onnx, where specifying `freeze_params=True` is often desired.
Data are inlined as `ConstantNode`s and have no names, thus param
transformation and op replacement are both conducted in the new pass.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]