Commit Graph

226 Commits

Author SHA1 Message Date
Hanchen Ye 1e1cd2f828 [AffineLoopOrderOpt] complete the impl of this pass; move getLoopBandFromLeaf/Root to analysis utils, update several pass accordingly 2021-01-20 00:56:40 -06:00
Hanchen Ye d3d13e0bd0 fix bugs related to dependency analysis; [AffineLoopOrderOpt] add initial impl of applyAffineLoopOrderOpt method 2021-01-19 15:55:36 -06:00
Hanchen Ye 7c1130452e [AffineLoopOrderOpt] start of this pass; update test case names 2021-01-19 01:53:57 -06:00
Hanchen Ye 847d50b829 add copyright header; remove redundant includes and usings; move EmitHLSCpp to Tanslation directory 2021-01-19 01:36:00 -06:00
Hanchen Ye 4e963dfe3d remove redundant mlir:: in all lib files; [MultipleLevelDSE] start of leaf loop nests optimization 2021-01-18 23:13:22 -06:00
Hanchen Ye 0ac1bd5d4a [MultipleLevelDSE] support to simplify loop nest by loop pipelining 2021-01-18 20:17:18 -06:00
Hanchen Ye 4a594c9303 [LoopPipelining] recursively fully unroll all inner loops until no failure are met 2021-01-18 17:27:24 -06:00
Hanchen Ye 47837eee6e [Samples] add resnet18 ablation study scripts; [MultipleLevelDSE] add two helper methods; fix clang++ warnings 2021-01-14 14:51:30 -06:00
Hanchen Ye 53c9e141e0 [Analysis] update getLayoutMap() method in utils 2021-01-12 14:01:16 -06:00
Hanchen Ye 145e39b66e update LLVM to bc8acf2 2021-01-11 19:18:10 -06:00
Hanchen Ye 9025bd5091 [SplitFunction] support to remove redundant copy nodes, factor out applySplitFunction() method; [LegalizeDataflow] factor out applyLegalizeDataflow() method (#20) 2021-01-11 15:26:00 -06:00
Hanchen Ye dd57e01069 [QoREstimation] update getDSPMap() method name and some value names 2021-01-11 03:51:41 -06:00
Paul Jeong 5b8b38b732 [QoREstimation] Basic bram estimation with array partitioning 2021-01-11 03:42:28 -06:00
Hanchen Ye e47205e779 [QoREstimation] when partition factor is more than 2 and partition index cannot be determined for a memory access operation, a function call will be generated and change the original dependency relationship, this patch is intended to support this mechanism 2021-01-11 02:48:56 -06:00
Hanchen Ye 996c9cff8a [QoREstimation] consider loop/function interval in the DSP resource estimation 2021-01-10 20:48:54 -06:00
Hanchen Ye 9cc5f3abdc [FuncPipelining] comprehensively support function pipelining in emitter, estimator, and array partition pass 2021-01-10 18:43:40 -06:00
Hanchen Ye 5bf4d7943e [FuncPipelining] support function pipelining; fix some small bugs 2021-01-09 23:31:33 -06:00
Hanchen Ye ba3ca07833 [QoREstimation] factor out QoREstimation.h (#20); [MultipleLevelDSE] start of auto dse 2021-01-08 02:20:11 -06:00
Hanchen Ye 9f31dd663d [AffineStoreForward] factor out applyAffineStoreForward() method; [SimplifyMemrefAccess] factor out applySimplifyMemrefAccess() method 2021-01-08 01:13:41 -06:00
Hanchen Ye 07d77f7193 [ArrayPartition] support multi-loops array partition; factor out applyArrayPartition() method (#20) 2021-01-07 23:29:49 -06:00
Hanchen Ye a01b440a95 [LoopPipelining] factor out applyLoopPipelining() method (#20) 2021-01-07 20:36:05 -06:00
Hanchen Ye 5b2af8e248 [AffineLoopPerfection] factor out applyAffineLoopPerfection() method (#20) 2021-01-07 18:38:11 -06:00
Hanchen Ye 94d6d57dda [RemoveVariableBound] factor out applyRemoveVariableBound() method (#20) 2021-01-07 16:44:09 -06:00
Hanchen Ye 18260436aa add license 2021-01-06 11:31:03 -06:00
Hanchen Ye 13f6f83120 update tabalegen description for all operations and passes 2021-01-04 13:51:15 -06:00
Hanchen Ye 1353100dad [Analysis] fixed a bug in Utils 2021-01-03 23:35:52 -06:00
Hanchen Ye 6fecfda97c [QoREstimation] update storageType handling, default set as bram s2p 2021-01-03 23:04:37 -06:00
Hanchen Ye cf581f2694 [HLSCpp] remove all uses of ArrayOp, now all of the array-related pragmas are represented with MemRefType, fixed related bugs 2021-01-03 22:49:34 -06:00
Hanchen Ye f052331cbc [QoREstimation] estimate based on memref type rather than ArrayOp attributes 2021-01-03 17:48:36 -06:00
Hanchen Ye ff6e7f0c4c [ArrayPartition] use memref layout map to represent partition type rather than ArrayOp attributes 2021-01-03 16:16:55 -06:00
Hanchen Ye 34f32ab2f2 [AffineLoopPerfection] add a constraint for a legal perfection; [HLSCpp] update some attribute definitions; an important flaw is introduing hlscpp.array operation causes storing to argument memrefs has semantic incorrectness. Although this flaw can be handled by hlscpp emitter, and has not caused malignant issues by now, this should be carefully considered and refactored 2021-01-01 13:21:12 -06:00
Hanchen Ye d086c3a2e8 update some passes name; [RemoveVariableBound] support single result expr variable bound; [Samples] fix syrk and syr2k error 2020-12-30 14:27:33 -06:00
Hanchen Ye f9eb0642d2 [Samples] add lenet and mobilenetv2 example; update corresponding readme instruction 2020-12-26 14:05:36 -06:00
Hanchen Ye abfccd8052 [SplitFunction] support internal values and memories in sub-function 2020-12-26 13:38:24 -06:00
Hanchen Ye bc5818254b [SplitFunction] support merge several dataflow levels into one sub-function; [LegalizeDataflow] update getSuccessorMap() method to fix bugs 2020-12-26 02:59:09 -06:00
Hanchen Ye 98060b98fe [LegalizeDataflow] support to legalize loop and other operations simultaneously, support insert-copy and min-gran option for controlling whether CopyOps are inserted and the minimum granularity of dataflow 2020-12-25 23:40:33 -06:00
Hanchen Ye 8310ef8670 [Readme] update onnx-mlir integration test instruction; [Samples] add onnx-mlir and PolyBench folder, add export_resnet18.py script 2020-12-25 16:18:38 -06:00
Hanchen Ye c9599e11bf [QoREstimation] update UI32 attribute to I64 for meeting the requirement of estimating super large designs 2020-12-25 15:25:24 -06:00
Hanchen Ye ed867403d8 [Readme] update LLVM repo url; FunctionType::get to builder.getFunctionType 2020-12-25 10:03:48 -06:00
Hanchen Ye 1b6e00b303 Update LLVM to latest (7d246cb) 2020-12-25 02:41:38 -06:00
Hanchen Ye 9652bee260 [LegalizeDataflow] update impl structure and fix bugs, support resnet18 legalization; [EmitHLSCpp] emit bool rather than ap_int<1> 2020-12-25 00:04:10 -06:00
Hanchen Ye fef0cdc3fe [LegalizeDataflow] support loop-based dataflow legalization; [SplitFunction] include live-in analysis 2020-12-24 14:18:14 -06:00
Hanchen Ye f02955c284 [Readme] add onnx-mlir integration test instructions; add mnist.onnx, resnet18 test case; [EmitHLSCpp] support cast ops emission 2020-12-24 00:15:47 -06:00
Hanchen Ye a3b4ed185b [LegalizeOnnx] support convert add to apply, try to promote LoadOp to AffineOp; however, the LoadOp lowered from onnx pooling operation CANNOT be promoted, sad 2020-12-23 23:21:42 -06:00
Hanchen Ye bb182fd561 [LegalizeOnnx] support lowering of krnl.memcpy operation; fixed related bugs 2020-12-23 22:11:25 -06:00
Hanchen Ye e0ca62e238 [EmitHLSCpp] support TensorToMemrefOp emission; fixed related bugs 2020-12-23 17:48:21 -06:00
Hanchen Ye 21347b2665 [LegalizeOnnx] support to legalize the output of onnx-mlir flow to pure standard/affine IR 2020-12-23 16:45:38 -06:00
Hanchen Ye 9067cb6383 [Test] add benchmarks of comba 2020-12-22 22:43:53 -06:00
Hanchen Ye 4c1cc9e4b1 [QoREstimator] support DSP estimation (#18) 2020-12-22 15:33:12 -06:00
Hanchen Ye 85c47e98e3 [QoREstimation] support function call estimation, a known issue is CallOps inside of loops are not comprehensively considered; estimation refinement for multiple loops and select op (#5); fix related bugs 2020-12-21 19:02:39 -06:00