* NFC: Attribute cleanup (remove references of attributes) (#286)
* Define krnl.permute op.
* Support krnl.permute operation.
* Properly remove loop references.
* Re-push, Github was down.
* Need to debug interpretOp error.
* Fix lowering bug by erasing ops after full krnl IR interpretation is done, and clean up & comment code.
* Introduce permute, unroll operations.
* More debug.
* Remove std::set.
* krnl.terminate fails to be converted.
* Pass all tests, need to add legal ops as well as part of the conversion target.
* Change test format to new permute spec.
* Bug fix for nested iterate op lowering.
* Simplify error reporting.
* Fix compilation error.
* Increase comments coverage.
* Remove unnecessary imports.
* Re-trigger Jenkins
* Add permute/unroll tests.
* Retrigger Jenkins
* remove & (ref) for Attributes
Co-authored-by: Tian Jin <tjingrant@gmail.com>
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* Syntax highlighting for mlir code in README (#276)
* Syntax highlighting for mlir code in README
* Restart Jenkins
Co-authored-by: Gheorghe-Teodor Bercea <gt.bercea@gmail.com>
Co-authored-by: Alexandre Eichenberger <alexe@us.ibm.com>
Co-authored-by: Tian Jin <tjingrant@gmail.com>
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* use print not dump
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* add semicolon
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* syntax
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* add code to preserve locations
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* format
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* Emit the dynamic memory pool (#290)
* Reorganize main function.
* Follow review comments.
* Emit constants are globals in Krnl and LLVM dialects.
* Add support for bundling dynamic memory pools.
* Add dynamic bundling.
* Clean-up code.
* Clean-up file.
* Add test for bundling dynamic memory pool.
* Fixes. Simplify data structure. Add mixed test.
* Remove unused import.
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* Fix wrong type for llvm::loadop (#293)
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* Update llvm commit ID to 1d01fc1 (#292)
* Fix for LLVM revision D85495
* Fix for LLVM revision DD86121
* Fix for LLVM revision D85622 (f9dc2b7)
TODO: Change preloadDialectsInContext to false
Memo for previous fixes: D86121 (250f43d), D85495 (575b22b)
* clang-format
* Update llvm commit ID of README and clone-mlir.sh
* Updated llvm commit ID of README.md
* Fix for passing backend tests
* Removed the commented code
* Empty commit for triggering rebuild
* Test multi-stage travis build
* Specify stage order.
* Empty commit for triggering rebuild
* Update prereq.s390x.Dockerfile
Make it possible to execute s390x prereq docker multiple times.
* Build prereq for each arch
* Fix multi-arch prereq build.
* timeout at 40m
* Update .travis.yml
* add ppc64le prereq builder
* Run ppc docker prereq build multiple times
* Do not test branch update unless it's mater.
* Fix dockerfile.
* Fix typo in travis.yml.
* Fix ppc64 docker file
* Update .travis.yml
* turn off metacopy on ppc64le
* Update .travis.yml
* Turn off metacopy.
* Turn off metacopy inside Dockerfile in ppc64.
* No sudo in Docker.
* Remove metacopy config from Dockerfile.
* Change base image to be bionic.
* Using newer linux distro for ppc64.
* Turn off metacopy in before_install.
* Fix sudo permission issue.
* Run docker info.
* Allow amd64 docker file to be built multiple times
* Support building amd64 prereq.
* Fix amd64 docker file typo.
* fix ppc64le dockerfile typo.
* timeout from 40m -> 30m
* 40m->30m
* 40m->30m
* fix bug preventing incremental build.
* fix bug preventing incremental build.
* Bump CircleCI cache version.
* Push to production prereq container repository and condition prereq docker rebuild on commit message.
* Rebuild prereq docker.
* Move default script to top-level.
* Python not properly installed.
* amd64 -> x86
* Rebuild prereq docker.
* Rebuild prereq docker.
* Rebuild prereq docker.
* Restart all CI.
* Disallow cache on Jenkins docker build.
* Restart zJenkins.
* Restart zJenkins.
Co-authored-by: Haruki Imai <imaihal@jp.ibm.com>
Co-authored-by: Alexandre Eichenberger <alexe@us.ibm.com>
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* Using onnx-mlir through incremental stages (#257)
* Add lowering of Vector dialect for lower-all-llvm pass
* Fix generating CallOp instructions when return type is void
* Fix lowering of memref
* Reformat using clang-format
* Record more context.
* Reflow comments.
Co-authored-by: Tian Jin <tjingrant@gmail.com>
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* Dropout elimination & Conv Bugfix (#297)
* Dropout elimination.
* Test VGG19.
* Add shufflenet.
* Fix grouped convolution bug.
* Fix lit test failure.
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* Rewrite shape and size OP (#285)
* add shape inference
* Revert "add shape inference"
This reverts commit f9d42f39e68e14b5648abccfc8617fff00244d16.
* add rewrite rules
* test cases
* format
* add constraint
* response to review
* response to review
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* initial code for handling custom ops (#288)
* initial code for handling custom ops
* format
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* ShapeInference for SizeOp (#299)
* add shape inference
* Revert "add shape inference"
This reverts commit f9d42f39e68e14b5648abccfc8617fff00244d16.
* shape inference
* test case
* format
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* Gather ONNX to Kernel Lowering (#294)
* Define krnl.permute op.
* Support krnl.permute operation.
* Properly remove loop references.
* Re-push, Github was down.
* Need to debug interpretOp error.
* Fix lowering bug by erasing ops after full krnl IR interpretation is done, and clean up & comment code.
* Introduce permute, unroll operations.
* More debug.
* Remove std::set.
* krnl.terminate fails to be converted.
* Pass all tests, need to add legal ops as well as part of the conversion target.
* Change test format to new permute spec.
* Bug fix for nested iterate op lowering.
* Simplify error reporting.
* Fix compilation error.
* Increase comments coverage.
* Remove unnecessary imports.
* Re-trigger Jenkins
* Add permute/unroll tests.
* Retrigger Jenkins
* initial implementation of gather
* added tests
* format
* remove affine load for second load, as it uses an indirection
* changes suggested by reviewers
* remove backend tests until I can verify them locally
Co-authored-by: Tian Jin <tjingrant@gmail.com>
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* add lit test
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* fix option spelling
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* braces in wrong place
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* add lit test
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* remove duplicate code from lit test Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* Simplify lit test Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* remove attributes from lit test Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* add onnx-mlir-opt to tool names
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* add printIR to second RUN
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* redo adding printIR
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* fix bug
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* format
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
* fix typo in test
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
Co-authored-by: Alexandre Eichenberger <alexe@us.ibm.com>
Co-authored-by: Tian Jin <tjingrant@gmail.com>
Co-authored-by: Tung D. Le <tung@jp.ibm.com>
Co-authored-by: Gheorghe-Teodor Bercea <gt.bercea@gmail.com>
Co-authored-by: Haruki Imai <imaihal@jp.ibm.com>
Co-authored-by: Kevin Wu <6334443+kwu91@users.noreply.github.com>
Co-authored-by: chentong319 <chentong@us.ibm.com>
* Reorganize main function.
* Follow review comments.
* Emit constants are globals in Krnl and LLVM dialects.
* Make krnl dim more robust.
* Format.
* Update comments.
* Change pass name.
* Update to support LLVM as of 7dcd0042
Fixes for upstream changes to mlir.
- New pass registration method from https://reviews.llvm.org/D85622
- Integer attributes are now C types when possible https://reviews.llvm.org/D86739
Signed-off-by: Nathaniel McVicar <namcvica@microsoft.com>
* Fix for checkclang
* Windows incremental build fix from @max-ku
* Remove MLIRShapeToSCF lib
* Missed a getSExtValue on now c type
* Rebuild prereq docker.
* Bump CircleCI cache version.
* Update hash for Windows build
Signed-off-by: Nathaniel McVicar <namcvica@microsoft.com>
* Bump CircieCI cache version again.
* Rebuild prereq docker.
* Update README.md
* Update README.md
* Undo edits to ONNXOps.td.inc.
* Undo changes to ONNXOps.td.inc.
* Fix cast op TableGen.
* Tweak tablegen definition of Cast.
* Use explicitly signed integer as attributes.
* Move all signless attribute to explicitly signed attribute.
* Import ONNX int attribute as SI64 attribute.
* Make Conv.group attr use SI64 attr.
* Fix conv test.
* Fix DocCheck complaint.
Co-authored-by: Tian Jin <tjingrant@gmail.com>
* [MLIR] Add SizeOp conversion from ONNX dialect to Krnl dialect
Added ONNXSizeOp conversion from ONNX dialect to Krnl dialect. This op is added as a part of --convert-onnx-to-krnl pass.
Signed-off-by: Prashant Kumar <pk5561@gmail.com>
* Add unit tests for Size op.
* Remove unit tests.
Co-authored-by: Tian Jin <tjingrant@gmail.com>
* temporarily allow ppc64le build to fail
There is some problem with the Travis server for ppc64le, so until it gets fixed, we should allow ppc64le builds to fail
* sign commit
Signed-off-by: Kevin O'Brien <caomhin@us.ibm.com>
Co-authored-by: Tian Jin <tjingrant@gmail.com>
* Define krnl.permute op.
* Support krnl.permute operation.
* Properly remove loop references.
* Re-push, Github was down.
* Need to debug interpretOp error.
* Fix lowering bug by erasing ops after full krnl IR interpretation is done, and clean up & comment code.
* Introduce permute, unroll operations.
* More debug.
* Remove std::set.
* krnl.terminate fails to be converted.
* Pass all tests, need to add legal ops as well as part of the conversion target.
* Change test format to new permute spec.
* Bug fix for nested iterate op lowering.
* Simplify error reporting.
* Fix compilation error.
* Increase comments coverage.
* Remove unnecessary imports.
* Re-trigger Jenkins
* Add permute/unroll tests.
* Retrigger Jenkins
* initial implementation of gather
* added tests
* format
* remove affine load for second load, as it uses an indirection
* changes suggested by reviewers
* remove backend tests until I can verify them locally
Co-authored-by: Tian Jin <tjingrant@gmail.com>
* Add lowering of Vector dialect for lower-all-llvm pass
* Fix generating CallOp instructions when return type is void
* Fix lowering of memref
* Reformat using clang-format
* Record more context.
* Reflow comments.
Co-authored-by: Tian Jin <tjingrant@gmail.com>
* Define krnl.permute op.
* Support krnl.permute operation.
* Properly remove loop references.
* Re-push, Github was down.
* Need to debug interpretOp error.
* Fix lowering bug by erasing ops after full krnl IR interpretation is done, and clean up & comment code.
* Introduce permute, unroll operations.
* More debug.
* Remove std::set.
* krnl.terminate fails to be converted.
* Pass all tests, need to add legal ops as well as part of the conversion target.
* Change test format to new permute spec.
* Bug fix for nested iterate op lowering.
* Simplify error reporting.
* Fix compilation error.
* Increase comments coverage.
* Remove unnecessary imports.
* Re-trigger Jenkins
* Add permute/unroll tests.
* Retrigger Jenkins
* remove & (ref) for Attributes
Co-authored-by: Tian Jin <tjingrant@gmail.com>
* Define krnl.permute op.
* Support krnl.permute operation.
* Properly remove loop references.
* Re-push, Github was down.
* Need to debug interpretOp error.
* Fix lowering bug by erasing ops after full krnl IR interpretation is done, and clean up & comment code.
* Introduce permute, unroll operations.
* More debug.
* Remove std::set.
* krnl.terminate fails to be converted.
* Pass all tests, need to add legal ops as well as part of the conversion target.
* Change test format to new permute spec.
* Bug fix for nested iterate op lowering.
* Simplify error reporting.
* Fix compilation error.
* Increase comments coverage.
* Remove unnecessary imports.
* Re-trigger Jenkins
* Add permute/unroll tests.
* Retrigger Jenkins
* transpose fusion and removal
* format
* fix comments
Co-authored-by: Tian Jin <tjingrant@gmail.com>
* Use && instead of and for Windows
* Simulate fork on Windows by redirecting stderr
* Use exisiting onnx-mlir instead of cloning from master
* Update python3 libary for azo
* avoid git add .vscode
* revert change
Co-authored-by: Gheorghe-Teodor Bercea <gt.bercea@gmail.com>
* Add shape inference and names
- Add shape inference for PRelu
- Fix shape inference for group conv
for ConvTranspose
- Add input and output names for
graphs (functions)
- Add support for (u)int8 tensor
attributes
* Fix format issues
* Revert formatting for gen_onnx_mlir.py
* Pads can have ArrayAttr and DenseElementsAttr so support both
* NumInputs is the number of graph inputs that don't have initializers
* Add test for 2D batchnorm
* Fix typo in define_loops in new 2d BN test
* Change 'name' to 'onnx_node_name'
* Fix Batchnorm for 2D I/O and add lowering test
Co-authored-by: Gheorghe-Teodor Bercea <gt.bercea@gmail.com>
* Create gtest submodule and point benchmark to master
* Added submodule files for gtest
* Update benchmark submodule
* Add googletest to top level cmake so that any gtest_adds are not dependent on benchmark.
* Update buildbot, circle CI and travis CI
* Copy test-onnx-mlir.sh to docker container
* build dependencies for tests
Co-authored-by: Tian Jin <tjingrant@gmail.com>
* Rewriting rule
* Fix formulas
* Reuse op results
* Const propagation for Div and Sqrt
* Explicitly use ONNXConstantOp
* Minor revise
* Const propagation for unsqueeze
* Do const propagationnce all tensors have inferred shapes
* LIT tests for fusion
* Add LIT tests for constant propagation on Div, Sqrt, and Unsqueeze
* Missing dash
Co-authored-by: Tian Jin <tjingrant@gmail.com>
* move scalerop to decompose
* change clang format
* change clang format
* add shape inference for scaler op
* fixing generated onnxop
* generate onnx.md
* redo get onnx.md and onnxop.td.inc using onnx 1.6
* Add shape inference for scaler op
* add benefit for scaler decompose and simplify scaler shape inference
* add scaler decompose benefit num and simplify shape inference
* add cast builder
* cast rewrite only for float
* add cast op same type rewrite rule
* working on cast lowering
* cast lowering working
* add cast lowering
* fix format
* Delete OpBuildTable.inc
* complete requested changes
Co-authored-by: chentong319 <chentong@us.ibm.com>
* Update LLVM commit ID to include to the new modeling of LLVM type in MLIR
* Fix commit id discrepancy
* Update README.md
* Update MLIR version
* Force rebuild prereq dockers and see what happens.
* Use LLVM commit ID that corresponds to MLIR News, 13th edition (8/7/2020)
Co-authored-by: Tian Jin <tjingrant@gmail.com>
* Reorganize main function.
* Follow review comments.
* Emit constants are globals in Krnl and LLVM dialects.
* Make mempooling more robust.
* Fix.
* Update MainUtils.cpp
Additional canonicalization not required anymore.
* move scalerop to decompose
* change clang format
* change clang format
* add shape inference for scaler op
* fixing generated onnxop
* generate onnx.md
* add benefit for scaler decompose and simplify scaler shape inference
* cast rewrite only for float
* add cast op same type rewrite rule
* working on cast lowering
* cast lowering working
* correct onnx version
* update onnx md
* add test for tensor<10xf64>
* Add shape inference for Ops used by BERT
* Erf
* Pow
* ReduceMean
* Dropout
* Expand
https://github.com/onnx/onnx/blob/master/docs/Operators.md#expand
Deduce the value of the shape operand by looking at the producer
of the operand.
Currently supported producers are: onnx.Constant and onnx.Shape.
* Add corresponding tests for each op.
* Sort the list of ops with shape inference in gen_onnx_mlir.py
in alphabetic order for clarity.
* Restart CI
Co-authored-by: Tian Jin <tjingrant@gmail.com>
* catch errors after build command
* remove spaces
* use %ERRORLEVEL% instead
* move modification to CI command only
* add extra nextline to prevent modification
* base implementation
* add example
* change table gen
* docs
* small change for review
Co-authored-by: Alexandre Eichenberger <alexe@us.ibm.com>
Co-authored-by: Tian Jin <tjingrant@gmail.com>
* Detect llvm-project commit change in utils/clone-mlir.sh and rebuild llvm-project
for zLinux Jenkins build bot
* Fix MainUtils.cpp compilation on Windows
* Fix clang-format
* Update comments on Windows not to delete the constant pack object file
* move scalerop to decompose
* change clang format
* change clang format
* add shape inference for scaler op
* fixing generated onnxop
* generate onnx.md
* add benefit for scaler decompose and simplify scaler shape inference
* cast rewrite only for float
* add cast op same type rewrite rule
* fix format
Co-authored-by: chentong319 <chentong@us.ibm.com>
* Define krnl.permute op.
* Support krnl.permute operation.
* Properly remove loop references.
* Re-push, Github was down.
* Need to debug interpretOp error.
* Fix lowering bug by erasing ops after full krnl IR interpretation is done, and clean up & comment code.
* Introduce permute, unroll operations.
* More debug.
* Remove std::set.
* krnl.terminate fails to be converted.
* Pass all tests, need to add legal ops as well as part of the conversion target.
* Change test format to new permute spec.
* Bug fix for nested iterate op lowering.
* Simplify error reporting.
* Fix compilation error.
* Increase comments coverage.
* Remove unnecessary imports.
* Re-trigger Jenkins
* Add permute/unroll tests.
* Retrigger Jenkins
* Using a non-trivial example.
* Add more complex example/test case.
* move scalerop to decompose
* change clang format
* change clang format
* add shape inference for scaler op
* fixing generated onnxop
* generate onnx.md
* Add shape inference for scaler op
* add benefit for scaler decompose and simplify scaler shape inference