mei-ye commented on code in PR #14817:
URL: https://github.com/apache/tvm/pull/14817#discussion_r1197178043
##########
src/target/spirv/ir_builder.cc:
##########
@@ -500,7 +519,18 @@ SType IRBuilder::DeclareType(const DataType& dtype) {
t.id = id_counter_++;
t.type = dtype;
SType base_type = GetSType(dtype.element_of());
- ib_.Begin(spv::OpTypeVector).AddSeq(t, base_type,
dtype.lanes()).Commit(&global_);
+
+ if (row * col == 0) {
+ ICHECK((row == 0) && (col == 0));
+ ib_.Begin(spv::OpTypeVector).AddSeq(t, base_type,
dtype.lanes()).Commit(&global_);
+ } else {
+ Value v_row = GetSpecConst(GetSType(DataType::UInt(32)), row);
+ Value v_col = GetSpecConst(GetSType(DataType::UInt(32)), col);
Review Comment:
You can use either plain constant or specialization constant. The
specialization constant has a default value, which is 16 in this commit. You
don't need to give new values at runtime. The default value is used in the
absence of runtime value. There is no advantage or disadvantage of choosing
which one to use. Using specialization constant does allow you to change the
fragment size at runtime to do experiment though.
--
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]