Commit Graph

561 Commits

Author SHA1 Message Date
Hanchen Ye 75338f35da [Test] Add errors test case for HLSCpp dialect 2022-03-23 23:26:08 -05:00
Hanchen Ye 98bf329d1e [Readme] Add verified Torch-MLIR SHA to instructions 2022-03-23 21:26:41 -05:00
Hanchen Ye 4fcc43cd3c [HLSCpp] Add verifiers to stream ops; Add DeclaresStreamChannel Trait; Move hlscpp-associated methods from support/transform utils to hlscpp namespace 2022-03-23 21:08:41 -05:00
Hanchen Ye 8adb98a3bd [Transforms] Move qor-estimation to the directive folder; [TosaAndLinalgCleanup] Rename from tosa-to-linalg-cleanup to the new name to avoid confusion 2022-03-23 17:12:39 -05:00
Hanchen Ye 05dd74fe58 [Test] Uniform the test file names 2022-03-23 17:07:39 -05:00
Hanchen Ye d87f229561 [Test] Add test cases for loop and memory transform passes 2022-03-23 16:57:42 -05:00
Hanchen Ye 40a348db6a [Test] Add test cases for graph and runtime transform passes; [FuncDataflow] Don't inline private functions 2022-03-23 16:22:55 -05:00
Hanchen Ye c73e43cf81 [Transforms] Add pytorch-pipeline-v2 with inter/intra-node memory optimizations; Remove axi-interf option from dse-pipeline as we haven't been able to scale it; [FuncDataflow] Support to specify target-func during initialization 2022-03-22 17:57:10 -05:00
Hanchen Ye 4a8b516e1d [LoopPipelining] Stop to pipeline the loop if it is already dataflowed; [Samples] Add an new end-to-end pipeline for resnet18 2022-03-22 16:55:08 -05:00
Hanchen Ye 28192bb053 [AffineLoopUnrollJam] Unroll from the innermost loop instead of the outermost 2022-03-22 16:50:14 -05:00
Hanchen Ye 8ed807fc5a [Transforms] Support to prefix the sub-functions generated by applyDataflow to distinguish different dataflows; [FuncDataflow][AffineLoopDataflow] Update these two passes accordingly 2022-03-22 16:25:44 -05:00
Hanchen Ye a659b1e6cc [PromoteBuffer] Support to handle on-chip buffer with different behaviors: read-only, write-only, and read-write; [CreateAxiInterface][CreateMemrefSubview] Fix some bugs 2022-03-22 07:37:47 -05:00
Hanchen Ye 18cf114999 [Samples] Add the instructions to run the new torch flow 2022-03-20 17:02:11 -05:00
Hanchen Ye 0dcbee8b40 [CreateAxiInterface] Support to create multiple AXI interface for the same piece of memory in order to avoid read/write channel conflicts; [EmitHLSCpp] Emit stable pragma only for function interfaces 2022-03-20 17:02:11 -05:00
Hanchen Ye 0b8c03d300 [EmitHLSCpp] Support to emit stream.channel/read/write op; [HLSCpp] stream.write must take a value as input now; [CreateTokenFlow][HoistStreamChannel] Update these passes accordingly 2022-03-20 17:02:11 -05:00
Hanchen Ye 0ea2f79303 [CreateAxiInterface] Implement this pass; [FuncDataflow][HoistStreamChannel] Fix several bugs 2022-03-20 17:02:11 -05:00
Hanchen Ye e0a844c63d [CreateAxiInterface] Factor out this pass from LegalizeToHLSCpp; [Transforms] Add a new Rntime directory to hold runtime-related passes; Move CreateRuntimeMain to the new directory; Remove redundant pass initialization methods; [Support] Add new getTopFunc/getRuntimeFunc APIs 2022-03-20 17:02:11 -05:00
Hanchen Ye 48d90f2e62 [HoistStreamChannel] Implement this pass 2022-03-20 17:02:11 -05:00
Hanchen Ye c013e74627 [FuncDataflow] Support to handle graphs containing call nodes 2022-03-20 17:02:11 -05:00
Hanchen Ye e680e83dee [CreateTokenFlow] Implement this pass, should be applied after heuristic-node-fusion pass" 2022-03-20 17:02:11 -05:00
Hanchen Ye 93ebdb5412 [HLSCpp] Add StreamChannel/Read/Write/BufferOp; Rename Mul/CastPrimOp to PrimMul/CastOp; Rename AssignOp to BufferOp 2022-03-20 17:02:11 -05:00
Hanchen Ye 9f8df6f437 [HLSCpp] Add stream type 2022-03-20 17:02:11 -05:00
Hanchen Ye 3d1605ebbf [CreateTokenFlow][HoistStreamChannel] Start of these two passes 2022-03-20 17:02:11 -05:00
Hanchen Ye cf7c39fe14 [Docs] Update scalehls architecture figure 2022-03-20 17:01:30 -05:00
Hanchen Ye bdb6f08dbd Register DLTI dialect by default 2022-03-18 22:56:31 -05:00
Hanchen Ye af8ee12337 Bump polygeist to 3bfc5726456be032fd4fc5c0fc5781b81af57ede 2022-03-18 15:49:31 -05:00
Hanchen Ye ab33f68f55 [RaiseImplicitCopy] Implement this pass, convert-copy-to-affine-loops should be used afterward to canonicalize away redundant copy ops and lower remained ones back 2022-03-18 13:01:35 -05:00
Hanchen Ye 9500860fb6 [RaiseImplicitCopy] Start of this pass 2022-03-18 11:16:54 -05:00
Hanchen Ye f9880d3b2b [HeuristicNodeFusion] Refactor this pass following a more flexible outlining + fusing manner; [Support] Factor out a localizeConstants API 2022-03-17 22:43:21 -05:00
Hanchen Ye d9583689d5 [HeuristicNodeFusion] Implement this pass 2022-03-17 16:57:08 -05:00
Hanchen Ye 07ed805316 [TosaToLinalgCleanup] Add this pass to lower tosa::ReshapeOp and tensor::PadOp 2022-03-17 16:56:33 -05:00
Hanchen Ye f2024e4855 Bump polygeist to 6588ff6101da038c68255a62a16dae8bd06280cb 2022-03-17 01:55:08 -05:00
Hanchen Ye f068e633d7 [ConvertCopyToAffineLoops] Support intern-copy-only as an option; [AffineLoopDataflow] Only dataflow innermost loop that has more than one child loops; [applyDataflow] Fix an issue when handling loop dataflowing; Remove linalg support 2022-03-17 01:17:01 -05:00
Hanchen Ye 6f12eb391a [Transforms] Rename simplificationOpts to memoryOpts; Reorganize code structure of Utils.h and Passes.h 2022-03-16 16:23:12 -05:00
Hanchen Ye 816f62cca8 [AffineLoopDataflow] Implement this pass; [Transforms] Rename min-gran and insert-copy to gran and balance, respectively 2022-03-16 16:12:00 -05:00
Hanchen Ye ec77976bd7 [Test] Reorganize file structure according to the lib/Transforms folder 2022-03-16 15:54:50 -05:00
Hanchen Ye 47f9f0ee4c [FuncDataflow] Merge LegalizeDataflow and SplitFunction into this pass; [Transforms] Add applyDataflow API for both function and loop dataflow 2022-03-16 15:52:39 -05:00
Hanchen Ye 8059ed5080 [Transfroms] Reorganize file structure 2022-03-16 15:09:39 -05:00
Hanchen Ye 8e6a21f1ad [Transforms] Factor out applyLegalizeDataflow and applySplitFunction as APIs targeting a block whose parent can be both function or affine loop 2022-03-12 15:38:58 -06:00
Hanchen Ye ded1c5727b [LoopUnrollJam] Expose pointLoopOnly option when initializing the pass; [ConvertCopyToAffineLoops] Support the optional lowering of AXI interface-associated copy ops 2022-03-10 23:36:23 -06:00
Hanchen Ye 482711615e [Transforms] Add a scalehls-test-pipeline for the local buffer flow 2022-03-10 18:18:13 -06:00
Hanchen Ye 265ec1c3da [LoopUnrollAndJam] Support to only unroll point loop bands 2022-03-10 18:17:22 -06:00
Hanchen Ye d09be1a0a0 [PromoteBuffer] Factor out this pass from LegalizeToHLSCpp 2022-03-10 17:34:16 -06:00
Hanchen Ye 1d5d43d057 [CreateMemrefSubview] Implement this pass; [Transforms] Update the getBoundOfAffineMap API to serve more users 2022-03-10 03:16:59 -06:00
Hanchen Ye c4927c8157 [Transforms] Add a getTileAndPointLoopBand helper; [AffineLoopOrderOpt] Permute loop order separately on tile and point loop band; [AffineLoopUnrollJam] Rename from AffineLoopUnrollAndPipeline and remove the pipeline feature finally 2022-03-09 20:05:46 -06:00
Hanchen Ye 2613174689 [Transforms] Add a scalehls prefix to all passes 2022-03-09 18:35:16 -06:00
Hanchen Ye 3025b838d6 [Transforms] Enhance the applyLoopTiling API to support the annotation of parallel loops and point loops 2022-03-09 18:19:26 -06:00
Hanchen Ye 36f748175e [Transforms] Rename from setParallel/Point/TopFunc to setParallel/Point/TopFuncAttr 2022-03-09 17:45:00 -06:00
Hanchen Ye bc4dc1cf84 [AffineLoopTileAndAnnotate] Implement this pass 2022-03-09 17:39:49 -06:00
Hanchen Ye d92495af40 [LegalizeDataflow] Support insertCopy as an optional argument when initializing this pass; [Transforms] Trun off insertCopy in scalehls-dse-pipeline 2022-03-09 02:31:01 -06:00