Comments (11)
I recently changed scf.while
to be simplifiable by SCCP, after fixing a few bugs with getRegionSuccessors
and how that function was getting used. The same can be done for mhlo.while
.
from mlir-hlo.
Thanks a lot, I will make a reference and then implement the simplification of mhlo::while.
from mlir-hlo.
Isn't a folder for the WhileOp when the return of the condition is false enough here?
from mlir-hlo.
Yeah.First we need to propagate the constant to cond's body, then try to fold it's.
while(%cst0, %cst1) {
cond (%arg0, %arg1) {
return compare(%arg0, %arg1)
}
}
and the mhlo-sink-constants-to-control-flow
just clone constantOp into body, didn't clone arguments.
from mlir-hlo.
I have a patch for the folder, but I also looked into the RegionBranchOpInterface and it seems like there is a limitation to the interface that prevents us from using it in MHLO.
In particular the getMutableSuccessorOperands for RegionBranchTerminatorOpInterface can't be used with our while op because the condition terminator does not take as operands the values to pass to the body...
from mlir-hlo.
Can we apply the framework of data flow analysis, implemented by constant propagation? Including other control flow simplifications, I'm not sure if scf dailect does these mhlo's as well, but we need these for completeness.
from mlir-hlo.
This relies on RegionBranchOpInterface, which is difficult to apply here (what I'm describing above)
from mlir-hlo.
In particular the getMutableSuccessorOperands for RegionBranchTerminatorOpInterface can't be used with our while op because the condition terminator does not take as operands the values to pass to the body...
I've run into this limitation before but just added as operands the forwarded values. I will check whether the function really needs to return a MutableOperandRange
or whether it can just return a ValueRange
. Then, the terminator could just return the block arguments.
from mlir-hlo.
Thanks!
from mlir-hlo.
Thanks.I need to know about RegionBranchOpInterface
. But xla service already has while_loop_simplifier.
from mlir-hlo.
I will check whether the function really needs to return a MutableOperandRange or whether it can just return a ValueRange
The only upstream use of the MutableOperandRange
return type is in buffer deallocation.
This signature matches with the interface for BranchOpInterface
in that it allows transformations to reason and modify control-flow constructs. I'm not sure it can go away.
from mlir-hlo.
Related Issues (20)
- Using StableHLO for ONNX to HLO conversion HOT 5
- Missing CMake deps for THLO and suspect layering HOT 8
- ld.lld: error: unable to find library -lMLIRTosa HOT 2
- Deduplicate reduction subcomputations when converting from MHLO to HLO HOT 1
- pretty print chlo.comparison* HOT 3
- Failure to compile broadcast_in_dim HOT 4
- 'mhlo/IR/hlo_ops.h' file not found HOT 7
- when build mlir-hlo-opt, there is error that symbolic cannot find HOT 1
- [cmake build] MhloDialect target no longer carries correct binary include dir HOT 5
- Move CMake CI for this repo to be publicly visible
- Missing empty canonicalization for reduce
- Inclusive language (sanity -> safety) HOT 4
- Failed to import repo as a third party dependency using bazel HOT 2
- 32-bit erf is inaccurate for x > 1 HOT 8
- `erfinv(1.)` should be `inf` HOT 1
- Missing legalization for `mhlo.scatter` to standard MLIR
- `tiling_softmax.cc#tilePartialSoftmax: undefined reference to `mlir::gml_st::isSimpleBcastReduction' HOT 1
- Build & Test sections in readme are inacurate
- Missing CMake Dependency
- mhlo.dot inferred shape is incompatible with return type HOT 10
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mlir-hlo.