This commit updates how the SparseTensorConversion pass handles NewOp. It breaks up the underlying openSparseTensor function into two parts (SparseTensorReader::create and SparseTensorReader::readSparseTensor) so that the pass can inject code for constructing lvlSizes between those two parts. Migrating the construction of lvlSizes out of the runtime and into the pass is a necessary first step toward fully supporting non-permutations. (The alternative would be for the pass to generate a FuncOp for performing the construction and then passing that to the runtime; which doesn't seem to have any benefits over the design of this commit.) And since the pass now generates the code to call these two functions, this change also removes the Action::kFromFile value from the enum used by _mlir_ciface_newSparseTensor.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
Fixing a logic bug in SparseTensorReader::readCOO. This bug does not affect permutations (hence why not discovering it earlier), but would affect non-permutations.
mlir/lib/ExecutionEngine/SparseTensorRuntime.cpp | ||
---|---|---|
656 | agreed; being on the boundary of MLIR calling convention and nice C++ templating is really annoying sometimes ;-) it would be even nicer to be able to generate the lib "on demand" so that we only have the cases needed by the compiler (and also generate cases not covered yet) |
agreed; being on the boundary of MLIR calling convention and nice C++ templating is really annoying sometimes ;-) it would be even nicer to be able to generate the lib "on demand" so that we only have the cases needed by the compiler (and also generate cases not covered yet)