* Reorganize main function.
* Follow review comments.
* Emit constants are globals in Krnl and LLVM dialects.
* Support the bundling on a per-block basis.
* Format.
* Fix test.
* Fix indent.
* Improve data structure.
* Format.
* Simplify maps for static pools.
* Format.
* Clean-up.
* Normalize memrefs with affine_map in krnl.memcpy
Added a trait of `MemRefsNormalizable` in `krnl.memcpy` to have
`krnl.memcpy` normalizable.
Reference: https://reviews.llvm.org/D86236
Signed-off-by: Haruki Imai <imaihal@jp.ibm.com>
* Simplified test case about normalizing memrefs in krnl.memcpy
Signed-off-by: Haruki Imai <imaihal@jp.ibm.com>
* Remove other krnl ops from test case for simplification
Signed-off-by: Haruki Imai <imaihal@jp.ibm.com>
* Fixed test code
Signed-off-by: Haruki Imai <imaihal@jp.ibm.com>
Co-authored-by: Alexandre Eichenberger <alexe@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.
* 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>
* 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>
* 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.
* Reorganize main function.
* Follow review comments.
* Emit constants are globals in Krnl and LLVM dialects.
* Add support for moving dynamic alloca instructions to top of functions.
* Fix memory pooling tests.
* Various fixes.
* Fix lit tests.
* More test fixes.
* Reformat.
* Reformat some more.
* Fix issue with TestConv and split-input-file.
* Use smart pointers.
* Remove redundant pointer.
* Reformat.
* Add initMap description.
* Clean up tests.
* Remove optimize_loops/return_loops op in elementwise ops lowering and fix tests in onnx_lowering.mlir.
* Fix all tests.
* Remove all occurences of def_loops/return_loops.
* Fix test.
* Fix comments for defineLoops & emitKrnlLoopsAndIterationForOperand function.
* Remove emitOptimizedLoops.
* Allow not specifying optimizedLoops when creating KrnlIterateOperandPack.
* Fix style.
* Make BuildKernelLoop helper not emit optimize/return_loop operations & retire emitKrnlLoopsAndIterationForOperand by replacing it with BuildKernelLoop.
* DefineLoops -> DefineLoopsEx, remove redundant emitKrnlLoopsAndIterationForOperand function.
* BuildKrnlLoop API name update.
* Tweak comments.
* Remove unused withEmptyOptimization flag.
* Better comment for BuildKrnlLoop.
* Fully remove krnl.return_loops/optimize_loops op.
* Trigger Windows Build
* Bump windows ci python version.
* Support krnl.block printing/parsing.
* Checkpoing, PoC working.
* Implement krnl.block operation.
* Make tuple -> make pair.
* Bug fix, white list krnl.iterate op while lowering.
* Add return loop op lowering.
* Bug fix.
* Allow using loop refs more than once if they are used by krnl.iterate op.
* More comments and include lit test.
* Make krnl.block definition more restrictive.
* Splitting tests creates modules, making affine_map matching more verbose, prefer not splitting since test cases are small.
* Use verbose mode for LIT test on Z.
* Use verbose build to diagnose.
* Missing libraries linking when building in shared mode.
* Fix whole-archive linkage.
* Try preloading affinetransforms.
* Try put AffineTransforms into LD_LIBRARY_PATH.
* Fix python syntax error.
* No need to link with whole-archive libs, as they are pre-loaded.
* Do not preload any library.
* Link with whole-archive libs.
* Explicitly shared linkage in CMake.
* Fix CMake syntax error.
* Restore test.py
* Update z13.sh
* Update z13.sh
* Provide krnl.block operation description.
* string type from tensorflow
* simplify type
* parser and print
* gen StringType for tablegen
* onnx to onnx-mlir type
* add namespace
* allow all integer type
* dialect document
* add test case
* format
* more precise type for ONNXOp
* format
* enable the failed test
* update comment
* update onnx.md
Co-authored-by: Gheorghe-Teodor Bercea <gt.bercea@gmail.com>
* PoC works.
* MNist works.
* Clean up.
* Fix test.
* Make Linux work.
* Use consistent symbol name.
* Fix variable name.
* Fix array addr access.
* Bug fix.
* Bug fix.
* install before running e2e tests.
* Fix build config.
* Use sudo when installing.
* Make embeddedDataLoader position independent.
* Enable ResNet50.
* Format code.
* Format MainUtil.
* Try not using sudo to install.
* Supply runtime dir via environment variable.
* Dump problematic operation.
* Dump entire function.
* Debug.
* Dump input.
* Dump constant op.
* Debug.
* Debug.
* Debug.
* Print to stderr.
* take care of endianness.
* Use endianness-aware execution session.
* Fix ZLinux error.
* Include warning when desired output endianness can't be deduced.
* Remove debug code.
* Remove debug code in shape inference.
* Support binary-decoder for testing constants packing.
* Support filename, move-to-file, elision-threshold configurations in constant packing pass for easy testing.
* Add lit test, fix lit test type mismatch.
* Add more consts packing tests.
* Ensure intermediate files are properly cleaned up.
* No need for constant elimination.
* Link with threading libraries.
* Remove debug code.
* Format code.
* More tests.
* test nit.
* Remove debug code.
* Reduce hard-coded constants.
* Use temporary and unique working directory for hosting model parameters.
* Test if it works.
* Try to find objcopy.
* Rename symbols using objcopy.
* Move sanitized name to linux section.
* Use verbose mode for debugging.
* Disambiguate pass constructor.
* Fix symbol name.
* Use Command API to build and execute commands.
* Move linux to use Command API.
* Fix reset args.
* Execute redefine sym.
* Format code.
* Do not use verbose mode for CircleCI.
* Remove debug code.
* Prettify code, add comments.
* getSegmentData -> getEmbeddedConstPool
* vector -> std::vector.
* Make sure we properly clean up intermediate files.
* Fix test cases.
* Add runtime directory.
* Trigger rebuild.
* [Merge with master] fix debug script.
* Diable affine fusion pass for now.
* Support generic fallback const packing mechanism.
* Remove debug code.
* Handle the case where objcopy is not available.
* Fix Windows missing types.
* Support int64.
* Copy packed constant to a local directory for non-Linux/Mac platforms.
* Nit: remove debug code, refactor const pack preprocessing out as a separate function.
* Cannot make preprocessConstPack a standalone function because file removers are stack-allocated, and they are deallocated prematurely when function stack gets popped, deleteing intermediate files too early.
* Don't require executable filename.
* Import ONNX data types directly.
* Fix LIT test.
* Bug fix, use moved string value.
* Remove redundant filenames.
* Fix CMake script.
* Embed endianness information as a symbol, and check during runtime.
* More comments, update lit tests.
* Fix lit test on BE machine.
* Copyright notices.
* Reorganize main function.
* Follow review comments.
* Emit constants are globals in Krnl and LLVM dialects.
* Replace internal malloc with memory pool and getref instruction.
* Lower krnl.getref to LLVM.
* Fix formatting issues.
* Add tests.
* Add missing dependency.
* Improve LLVM lowering.
* Add test to show getref is generic.
* Initial lowering of KrnlSqrtOp
* Fix errors and add a testcase
* typos
* Add the MLIR example
* Restore doc/doc_check/CMakeLists.txt
* Clean the code
* Edit comments
* Remove redundant parts
* Chang the use of -> to .
* Add a test for f64
* Support ONNXSqrtOp
* Fix indentation
Co-authored-by: Gheorghe-Teodor Bercea <gt.bercea@gmail.com>
* Sync with latest MLIR.
* Enable ONNX backend tests as a means to test ONNF lowering end-to-end.
* Install ONNX using quiet mode.
* Remove debug comments.
* Install ONNX from third_party/onnx.
* Check python version and fix pip command for installing ONNX.
* Using --user install option to prevent permission denied.
* Remove unused imports.
* Try using stock ONNX pip package as there are more tests in them.
* Pip got stuck building wheels, try sudo.
* Use verbose install to debug.
* Invalidate cache to build LLVM tools.
* Fix mlir installation script location.
* Debug to locate ONNF.
* Sanity check.
* Check out ONNF code first.
* Use verbose LIT output.
* 1. Update documentation to always use verbose LIT.
2. Update krnl ops to reflect new affine map attribute syntax.
* See if conda exists
* Install ONNX by manually cloning the repo.
* Install cmake first.
* Using sudo priviledge when installing.
* Limit build parallelism.
* Limit parallelism.
* Larger memory.
* Install onnx package with pip.
* Build MLIR tools.
* Invalidate cache.
* Compile model.so with -fPIC.
* Remove module dump to get concise debug output.
* Print command before executing.
* Use quiet install mode to reduce logging.
* Use -relocation-model=pic to generate position independent code.
* 1. Remove MAKEFLAGS because now buildbot has enough memory.
2. Run DocCheck as a last step.
* 1. Add verbose mode for backtend test.
* When dumping to LLVM bitcode, do not dump module IR, but print a message indicating that bitcode has been written to disk.
* Do not pass MakeFlags to CMake.
* Add more explaination for posible reasons of failing to identify tests.
* Add reshape op handling.
* Lower reshape to KRNL dialect.
* Add comments.
* Propagate reshape to KRNL IR.
* Lower KRNL reshape to affine and standard ops level dialects.
* Add lowering of reshape operation to Krnl and LLVM Dialects.
* Add test for LLVM IR dialect output for reshape.
* Fix rebase.
* Fix test variable.
* Emit errors during reshape shape inference. Address other reviewer comments.
* Store bounds as affine map attributes & check in test cases with generic printer
* Upgrading MLIR
MLIR is outdated on Buildbot, rebuilding a newer version.
* work with new version of mlir
* check-in parser tests
* custom printer
* nit
* bug fix
* enable custom asm printer test
* enable custom asm printer test
* more consistent variable naming
* test max/min
* variable naming scheme change to MLIR style
* can lower krnl to llvm
* kernel -> llvm
* comments
* bug fix
* try fixing ci
* fix ci
* deactivate model test
* fix lit test
* nit
* fix z buildbot