* Improve support for krnl.dim (#317)
* 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.
Signed-off-by: Tung D. Le <tung@jp.ibm.com>
* Initial Location info support (#302)
* 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>
Signed-off-by: Tung D. Le <tung@jp.ibm.com>
* Support ReduceMean
Signed-off-by: Tung D. Le <tung@jp.ibm.com>
* Add lit tests
Signed-off-by: Tung D. Le <tung@jp.ibm.com>
* Fix unknown dimensions for type f32
Signed-off-by: Tung D. Le <tung@jp.ibm.com>
Co-authored-by: Gheorghe-Teodor Bercea <gt.bercea@gmail.com>
Co-authored-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: 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>
* Detect llvm-project commit change in utils/clone-mlir.sh and rebuild llvm-project
for zLinux Jenkins build bot
* Cleanup RtMemRef API
- use forward declaration to hide private data fields
- RtMemRef.h: external user header, C/C++
- _RtMemRef.h: internal user header, C++ only
- RtMemRef.hpp and RtMemRef.cpp: implementation header and file
- add external APIs
OrderedRtMemRefDict *ormrd_create(RtMemRef **rmrs, int n)
RtMemRef **ormrd_getRmrs(OrderedRtMemRefDict *ormrd)
int ormrd_getNumOfRmrs(OrderedRtMemRefDict *ormrd)
for creating and querying OrderedRtMemRefDict with RtMemRef arrays
- data buffer installed by rmr_setData() will be managed by user
- unique_ptr<RtMemRef> must use custom deleter <RtMemRef,decltype(&rmr_destroy)>
* See if I have write access.
* Remove test CMake code.
* Use new API.
* Format code.
* Format code & rename variables for readability.
* Remove used API spec.
* Rename OrderedRtMemRefDict -> RtMemRefList, _dataMalloc -> _owningData.
* OrderedRtMemRefDict -> RtMemRefList
* Update KrnlToLLVM.cpp
* Trigger Jenkins
* Restart Jenkins
* OrderedRtMemRefDict -> RtRmrRefList
* More OrderedRtMemRefDict -> RtMemRefList.
* Format jni wrapper.
* Rename API functions to maintain stylistic consistency.
* Bug fix.
* Bug fix.
* Format code.
* Fix RtMemRefUtils.
* Format code.
* Using llvm function naming scheme.
* Rename runtime api file name to project name (onnx-mlir) as per convention.
* Include the new runtime header file.
* Reflect api header file name change in build script.
* Bug fix.
* Remove C++ code.
* Revert "Remove C++ code."
This reverts commit b217dfabae99e42db30721600cb5507866d4dc98.
* Clarify memory management responsibility.
* Add constructor to specify name & data ownership.
* Include stdbool.
* Remove dictionary semantics from RtMemRefList
* Bug fix.
* Format code.
* Format code.
* Use macro to define database of metadata.
* Prevent formatter from acting on metadata decl.
* Nit.
* Restore backend unit tests.
* Use spaces instead of tabs for better formatting.
* Use explicit template instantiation.
* Update RtMemRef struct doc.
* Make runtime compilable both in c and c++ mode.
Build two versions of the runtime library, one c version as the user-facing c runtime, and one c++ version as the one used inside this project.
* Bug fix, avoid stack allocation for output rmr list.
* Change _dyn_entry_point_main_graph -> run_main_graph for better memorability.
* Write a complete introductory tutorial on c99 Runtime and a test for it.
* Add onnx installation as dependency.
* Use target_include_directory to avoid installation.
* Format code.
* Fix cmake target_include_directories.
* Address compiler warning.
* First pass of RtMemRef->OMTensor.
* Second pass of RtMemRef -> OMTensor.
* nit, omtList -> omTensorList.
* omt -> omTensor for clarity.
* Rename OnnxMlirInternal.h -> OnnxMlirRuntime.hpp because there's no internal/external API, only C/C++ API.
* Format code.
* Restructure Runtime source code and move header -> /include and test -> /test/unit.
* Bugfix.
* Format code.
* Add unit test for OMTensor ctor.
* Update JNI CMake include directory.
* Bugfix.
* No need to re-declare ONNX types.
* Disable runtime doc test on non-x86 platforms.
* Rename OMTensor fields to be more sensible.
* Fix data type mismatch.
* size_t -> int64_t, prefer fixed width integers.
* Use consistent header guard style.
* Further tweak OMTensor API.
* Bugfix.
* Bugfix.
* Format code.
* Add doxygen config file.
* Tweak OMTensor API.
* Tweak API doc, hide OMTensorList implementation.
* Format code.
* Add new documentation item for Runtime API.
* Hide internal use only API declarations, move their comments to their implementations.
* Clarify ownership semantics in relevant API documentations.
* Fix PyRuntime.
* Remove alignment concerns from public API and include explaination of alignment issue in struct OMTensor definition.
* Print out unsupported numpy dtype.
* Use preferred way of type comparison in pybind11.
* Debug s390x issue.
* Remove debug code.
* Clarify semantics of strides/shape setter/getter, use \brief to include short description of API function.
* Improve documentation.
* Single out unpolished C++ API declarations.
* Clarify OMTensorList API.
* Bugfix.
* Bugfix.
* Assert after malloc.
* Handle malloc failures.
* Nit.
* Tweak legal notices.
* Format code.
* Remove doxygen generated files.
* Tweak legal notice format.
* Upgrade Cython
Numpy installation depends on Cython.
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
* changes to support negative indices
Signed-off-by: Alexandre Eichenberger <alexe@us.ibm.com>
* use krnl.dim now
Signed-off-by: Alexandre Eichenberger <alexe@us.ibm.com>
* move comment
Signed-off-by: Alexandre Eichenberger <alexe@us.ibm.com>
* updated test for krnl-dim pattern
Signed-off-by: Alexandre Eichenberger <alexe@us.ibm.com>
Co-authored-by: Tian Jin <tjingrant@gmail.com>
* 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>
* 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>
* 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>
* 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>
* 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.
* Move to more recent LLVM ID (May 15)
* clang-format
* Bump cache version up
* Update readme
* Fix doc check
* Move to a newer commit id
* Update LoopToStandard -> SCFToStandard
* Change MLIRSideEffects to MLIRSideEffectInterfaces
* Add AffineScope trait to KrnlIterateOp
* [ElementWise] Load/Store op to AffineLoad/AffineStore op
* [Gemm, MatMul, Reduction, Softmax] Load/Store op to AffineLoad/AffineStore op
* [Concat] Load/Store op to AffineLoad/AffineStore op
* [Pad, PadConstantValuePad, Reshape, Transpose] Load/Store op to AffineLoad/AffineStore op
* [LSTM] Load/Store op to AffineLoad/AffineStore op
* [Conv, Norm, Pooling] Load/Store op to AffineLoad/AffineStore op
* Add affine-loop-fusion pass
* Use Load/Store for scalar
* Use Load/Store for scalar
* Fix lit tests
* Unknown dimensions for broadcasting ops
* Affine Load/Store for scalar memref
* clang-format
Co-authored-by: Gheorghe-Teodor Bercea <gt.bercea@gmail.com>
Co-authored-by: Tian Jin <tjingrant@gmail.com>
* Lower Squeeze op to Krnl dialect
* Emit tensor size as a single constant; add a lit test for unknown dimensions
* Code style
* Speical case where the input is only used by this squeeze op
* Remove squeeze-in-place optimization
* Update ConvertONNXToKrnl.cpp
Twek to re-run tests.
* Trigger buildbot re-run.
* Re-run CI
Co-authored-by: Tian Jin <tjingrant@gmail.com>
* Explicit pass registration.
* Remove whole-archive linking, replace with regular linking.
* Remove whole-archive linkage related scripts.
* No need to preload library, simply expose them through LD_LIBRARY_PATH.
* Use OMLibs to record all onnx-mlir libs.
* Add OMResultTypeInferenceOpInterface lib to OMLibs.
* nit.
* No need to expose libs through LD_LIBRARY_PATH.
* Fix missing onnx header file issue.
* Define OMLibs before Tool subdirectory is imported.
* Define OMLibs at parent scope.
* Specify dependency of MainUtils on OMLibs early.
* Set OMLibs both at current & parent scope.
* Add comment about what future pass implementation should do.
* 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.
* Detect llvm-project commit change in utils/clone-mlir.sh and rebuild llvm-project
for zLinux Jenkins build bot
* Since many headers are generated and included indirectly through
other headers, there are often missing dependencies that break
parallel build. So we add header targets for KrnlOps, ONNXOps, and
MLONNXOps, and add explicit dependencies for all the relevant headers.
* fix copy-and-paste bug
Co-authored-by: Tian Jin <tjingrant@gmail.com>
* Add type inference for CastOp
* Share type translation between op builder and onnx importer
* clang-format
* Format emitted code
* Remove unnecessary dependencies
* removed warning missing return, dangling else
* fixed errors, made sure to return false in all shape inference failures
* shape inference use LogicalResults as return value
* format fixed
* format error
* additional error correction
* handle errors properly for all former emitError site, using either emitError, assert, or llvm_unreachable
* help added
* fixes
* edit of doc
* doc edit
* removed warning missing return, dangling else
* fixed errors, made sure to return false in all shape inference failures
* shape inference use LogicalResults as return value
* format fixed
* format error
Co-authored-by: Tian Jin <tjingrant@gmail.com>
* enable promote attr for pad
* use optional arguments for pad
* shape infereance for pad
* Lowering Pad
* format file
* use DenseTensor for the attribute
* use Pad in ONNXRewrite
* fix the merge conflict
* fix the attr given to constantOp
* handle ONNXConstantOp in attribute promotion
* Fix bug when AttributePromotion is called more than once
* update ONNXOps.td.inc with correct version of onnx
* update onnx.md
* responses to review
* fix the build error
* change the implementation of Pad
* delete commented out code
* clang format
Co-authored-by: Tian Jin <tjingrant@gmail.com>
* Use AffineMap
* Shared AffineMap
* AffineMap for Conv/Pooling
* Create helper files
* Remove changes for Relu
* Remove redundant includes
* Use AffineMap for AveragePool's shape inference
* Add MLIR tests for unknown dimension case
* Extract a method AffineMapIntConstant
* Comment stylist and include path
Co-authored-by: Gheorghe-Teodor Bercea <gt.bercea@gmail.com>
* Specialize the op lowering logic for elementwise operations
* Fix clang-format error.
* Update tests for LSTM since LSTM uses element-wise ops
Co-authored-by: Tian Jin <tjingrant@gmail.com>
* Run clang-format on all source code.
* Add Clang-Format Github Action.
* Apply patch produced by Clang-Format Bot.
* nit.
Co-authored-by: Gheorghe-Teodor Bercea <gt.bercea@gmail.com>
* Support dilations and enable e2e tests
* Fix allocating memory for dynamic shape
* Edit comments
* Do dilation by computing an offset from kernel index
* Correct dilation formula, add an example of out-of-bound, and add a test for dilation
* Import optional outputs as NoneType
* Shape inference for ONNXLSTM
* Edit ONNXLSTM::inferShape()
* Shape inference for ONNXLSTMOp
* Create a common function for inferring shape for RNN ops
* CheckInsertDeallocation for a specific result
* Allocate memory for LSTM
* First round of lowering
* Allocate memory for hidden and cell states
* Test with custom Tanh
* Fix an error in Ct's formula
* Add E2E tests
* Return outputs
* Refactor the code
* Enable E2E tests
* Support reverse and bidirectional directions
* Minor revision
* Return all intermediate hidden states
* Call existing activation functions
* Structs for activation functions
* Call existing activations in ONNX
* Minor revision
* Compare strings ignoring case
* Use memreftype of rank 0 for calling activation functions
* Fix getActivationPack()
* Revise the code
* Add one MLIR test
* Add MLIR tests for reverse and bidirectional modes
* Make the order of emiting instructions deterministic
* Use OperandAdaptor instead of directly use an operand index
* Use literal assignments
* Change some variable names
* Use literal assignments
* Use literal assignments
* Format the code
Co-authored-by: Gheorghe-Teodor Bercea <gt.bercea@gmail.com>
* Make onnx-mlir work with latest mlir.
* Bump CircleCI cache version.
* Fix missing passes in onnx-mlir-opt.
* Fix backend test failure.
* Fix doc.
* Fix doc and exclude the generated _site directory from DocCheck.
* Remove debug code.
* Do not hard code target name, on Mac shared lib can end with .dylib.
* FunctionPass -> PassWrapper.
* Reorganize main function.
* Follow review comments.
* Emit constants are globals in Krnl and LLVM dialects.
* Output of non-value constants. Write full source to file.
* Fix e2e tests.
* Output constant free and full code in separate files.
* Emit separate files.
* Move file output management to utils.
* Elide the values of glotbal krnl constants.
* Add dual file output for Basic flag.
* Add tests.
* Add passes to cmake file.
* Move to more recent LLVM commit ID
* Update LLVM cache version from V9 to V10
* Update to latest LLVM commit id from master, roll back conditions in util scripts
* Update circlci LLVM cache tag to ensure ci updates builds with latest LLVM commit id
* Update README.md to have matching LLVM commit id
* Update doc/Dialtects/onnx.md
* Enable onnx-mlir for VS builds on Windows
* Update README to include lit
* Update build command for Windows to include config
* Update build instructions, add cmd files for windows, enable single source of truth for MLIR commit-id (clone-mlir.sh)
* Add Visual Studio workload info
* Update ONNX op definitions
* Revert onnx submodule back to previous commit, disable warnings in CMakeLists to work around build issues with MSVC
* Update environment for path to PDcurses on Windows
* Fix directory strings to be compatible with Windows or Linux style slashes
* Fix install-mlir.sh so it works when sourced
* Ensure README and cmd files match and have correct paths
* Properly quote ONNX_MLIR_SRC_DIR
* Address PR feedback: Use llvm_unreachable to indicate failure to convert attribute proto to name/value pair
Co-authored-by: Tian Jin <tjingrant@gmail.com>