太久不写代码了,
写了个双重循环,希望记录 dimSizeLhs == dimSizeRhs
时的两个下标。
int lhsReducePos;
int rhsReducePos;
// here we consider the most simple situation -- one dim is reduced.
for (lhsReducePos = 0; lhsReducePos < lhsVTy.getRank(); lhsReducePos++) {
for (rhsReducePos = 0; rhsReducePos < rhsVTy.getRank(); rhsReducePos++) {
auto dimSizeLhs = lhsVTy.getDimSize(lhsReducePos);
auto dimSizeRhs = rhsVTy.getDimSize(rhsReducePos);
if (dimSizeLhs == dimSizeRhs) {
break;
}
}
}
应该改成:
for (lhsReducePos = 0; lhsReducePos < lhsVTy.getRank(); lhsReducePos++) {
bool flag = false;
for (rhsReducePos = 0; rhsReducePos < rhsVTy.getRank(); rhsReducePos++) {
auto dimSizeLhs = lhsVTy.getDimSize(lhsReducePos);
auto dimSizeRhs = rhsVTy.getDimSize(rhsReducePos);
if (dimSizeLhs == dimSizeRhs) {
flag = true;
break;
}
}
if (flag) {
break;
}
}
否则 lhsReduce
会比预期多1