Hanchen Ye
|
9b527faf0c
|
simplify scalehls-opt and scalehls-translate tool; add InitAllDialects and InitAllPasses methods; remove ablation_test_run.sh and update readme as well
|
2021-01-21 16:14:13 -06:00 |
Hanchen Ye
|
2489d1baf9
|
[MultipleLevelDSE] update tiling strategy, fix several bugs; [AffineLoopOrderOpt] support reverse permutation
|
2021-01-21 04:07:13 -06:00 |
Hanchen Ye
|
57dc6c62a5
|
[MergeAffineIf] implement of this pass
|
2021-01-20 23:19:19 -06:00 |
Hanchen Ye
|
d36201ce66
|
[MultipleLevelDSE] support automatic tiling strategy dse; [AffineStoreForward] fix a major bug; [PartialAffineLoopTile] fix the issue when constant trip count is not power of 2
|
2021-01-20 21:11:07 -06:00 |
Hanchen Ye
|
e0c3b2ad8e
|
[PartialAffineLoopTiling] factor out applyPartialAffineLoopTiling() method, reimplement the tiling strategy
|
2021-01-20 16:45:11 -06:00 |
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
|
4a594c9303
|
[LoopPipelining] recursively fully unroll all inner loops until no failure are met
|
2021-01-18 17:27:24 -06:00 |
Hanchen Ye
|
53c9e141e0
|
[Analysis] update getLayoutMap() method in utils
|
2021-01-12 14:01:16 -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
|
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
|
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
|
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
|
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
|
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
|
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
|
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 |
Hanchen Ye
|
b0bf044c9a
|
[QoREstimation] support scheduling reverse (#5); update scheduling emission style
|
2020-12-21 11:32:25 -06:00 |
Hanchen Ye
|
53550db33a
|
[EmitHLSCpp] support to emit line number and schedule information; [HLSCpp] update all code related to storage_type attribute to align with Vivado 2019.1 settings
|
2020-12-20 17:52:56 -06:00 |
Hanchen Ye
|
1ef835680b
|
[SimplifyMemRefAccess] implement this pass; [QoREstimation] fix a bug in dep-II estimation
|
2020-12-19 21:02:27 -06:00 |
Hanchen Ye
|
b9af6f5355
|
[SimplifyMemRefAccess] start of this pass; [Analysis] update getLoadStoresMap method in utils
|
2020-12-19 17:36:17 -06:00 |
Hanchen Ye
|
6103dfba45
|
[StoreOpForward] impl of this pass; update checkSameLevel method in Analysis utils
|
2020-12-19 17:06:27 -06:00 |
Hanchen Ye
|
117a1bd0f4
|
[HLSCpp] eliminate PragmaOps, update ArrayOp definition; [Analysis] refactor Utils; [StoreForward] start of this pass
|
2020-12-18 23:42:41 -06:00 |
Hanchen Ye
|
2d943dd238
|
remove redundant includes in all files; [QoREstimation] refactor include structure
|
2020-12-18 21:16:22 -06:00 |
Hanchen Ye
|
cea67c2064
|
[QoREstimation] refactor the estimation from ASAP -> ALAP; [ArrayPartition] move partiton_num annotation from QoREstimation to this pass
|
2020-12-18 20:21:20 -06:00 |
Hanchen Ye
|
5d854f3b74
|
[QoREstimation] support profiling latency based estimation (#2)
|
2020-12-17 21:40:29 -06:00 |
Hanchen Ye
|
18e5f434bb
|
[QoREstimation] fix bugs and incorrect behaviors in the implementation; [Passes] add some TODOs
|
2020-12-17 17:05:26 -06:00 |
Hanchen Ye
|
512c842908
|
[QoREstimator] thoroughly rewrite the estimator with new strategy and structure
|
2020-12-17 06:10:48 -06:00 |
Hanchen Ye
|
fac1498067
|
[LoopPipelining] move automatic flattening to this pass; [QoREstimation] support AffineIfOp estimation, know issue: dependencies between load/store operations should be considered in scheduling
|
2020-12-14 23:41:08 -06:00 |
Hanchen Ye
|
2307b0141f
|
[QoREstimation] restructure qor estimator
|
2020-12-14 16:24:36 -06:00 |
Hanchen Ye
|
3f6d8e8560
|
[Passes] small bugs fixed; remove HLSCppAnalyzer; insert-pipeline-pragma to loop-pipelining
|
2020-12-14 13:45:13 -06:00 |
Hanchen Ye
|
31ce83be83
|
[RemoveVarLoopBound] simplify impl logic; [QoREstimation] update to FuncOp pass, remove op-latency configuration
|
2020-12-13 22:07:04 -06:00 |
Hanchen Ye
|
142ffadd14
|
[Passes] change target operation from ModuleOp to FuncOp if possible
|
2020-12-13 19:39:33 -06:00 |
Hanchen Ye
|
4e163d6edc
|
[LegalizeDataflow] start of this pass; [HLSKernel] add CopyOp and lowering
|
2020-12-11 00:10:58 -06:00 |
Hanchen Ye
|
0414489dfd
|
[HLSKernelBufferize] impl of this pass; a known issue is the unused return tensor can not be eliminated
|
2020-12-10 22:55:05 -06:00 |
Hanchen Ye
|
fa105e1746
|
[HLSKernel] support tensor output for CNNOps
|
2020-12-10 17:33:59 -06:00 |
Hanchen Ye
|
6b5d682df1
|
[ConvertToHLSCpp] support defining top function; [EmitHLSCpp] support to emit interface pragmas according to whether the current function is top function or not
|
2020-12-09 18:59:00 -06:00 |
Hanchen Ye
|
b01d469bf3
|
[SplitFunction] start of split-function pass
|
2020-12-09 13:04:51 -06:00 |
Hanchen Ye
|
f9bf38240e
|
[ArrayPartition] impl of this pass; note that due to the insufficient AffineExpr simplification mechanism in MLIR, this pass can't handle too complicated cases
|
2020-12-07 23:24:15 -06:00 |
Hanchen Ye
|
a06d34e837
|
[ArrayPartition] start of array partition pass
|
2020-12-07 00:03:51 -06:00 |
Hanchen Ye
|
7cb98f3a87
|
[Samples] add ablation test script; update Readme; bug fix in InsertPipelinePragma
|
2020-12-06 23:48:20 -06:00 |
Hanchen Ye
|
939f01cd05
|
[InsertPipelinePragma] imple of this pass; support to specify the insertion level
|
2020-12-05 23:53:18 -06:00 |
Hanchen Ye
|
1ba479f1e6
|
[RemoveValLoopBound] impl this pass; only support single-dim variable upper bound
|
2020-12-05 23:26:58 -06:00 |
Hanchen Ye
|
a57f014e6b
|
[PartialAffineLoopTile] add the impl of this pass
|
2020-12-05 21:18:49 -06:00 |
Hanchen Ye
|
8be4fd1211
|
[AffineLoopPerfection] add this new pass: now only support sequential nested loop and constant loop bound
|
2020-12-04 23:24:16 -06:00 |
Hanchen Ye
|
1fa7700ae8
|
[Conversion] update all conversion passes definition to TableGen
|
2020-12-04 18:34:24 -06:00 |
Hanchen Ye
|
a8a6d639e1
|
[HLSKernel] CNNOps verifiers (#16)
|
2020-12-01 22:44:00 -06:00 |
Hanchen Ye
|
192e3e3fd7
|
[BenchmarkGen] support generating the last dense layer, and impl corresponding affine lowering (#15)
|
2020-12-01 21:20:39 -06:00 |
Hanchen Ye
|
e5cd6673e7
|
[BenchmarkGen] support generate CNN benchmarks without considering the last dense layer (#15)
|
2020-12-01 18:31:23 -06:00 |
Hanchen Ye
|
ac4f3725d1
|
[HLSKernelToAffine] impl of SyrkOp, Syr2kOp, and TrmmOp lowering
|
2020-12-01 00:49:50 -06:00 |
Hanchen Ye
|
ac1c9966a8
|
[HLSKernelToAffine] impl of GemmOp and SymmOp lowering
|
2020-11-30 22:57:42 -06:00 |
Hanchen Ye
|
29aff5e6fb
|
[HLSKernel] update BLASOps def; [HLSKernelToAffine] start of BLASOps lowering
|
2020-11-30 21:02:11 -06:00 |
Hanchen Ye
|
8f1eadd913
|
[HLSKernel] rewrite def of CNNOps, all input and output are bufferized now; add mergeOp; [HLSKernelToAffine] update a compact lowering impl; [HLSKernelToLinalg] removed because this will not bring us significant simplification/convenience
|
2020-11-30 12:39:41 -06:00 |
Hanchen Ye
|
ba0b949477
|
[HLSKernel] add BLASOps and ISPOps
|
2020-11-18 22:56:07 -06:00 |
Hanchen Ye
|
c6ce8991d7
|
[HLSKernelToLinalg] add to linalg converter
|
2020-11-18 20:17:17 -06:00 |
Hanchen Ye
|
2fb35bdc68
|
[EmitHLSCpp] start of supporting scf ops; [scalehls-gen] start of benchmark generation
|
2020-11-05 18:20:17 -06:00 |
Hanchen Ye
|
cf4e36e626
|
[HLSKernelToAffine] impl lowering of maxpool, relu, gemm ops
|
2020-11-05 15:48:47 -06:00 |
Hanchen Ye
|
6adc65da7a
|
[HLSKernel] add maxpool, relu, and gemm operations
|
2020-11-04 22:40:29 -06:00 |
Hanchen Ye
|
41e3747b85
|
[HLSKernel] start of HLSKernel ops lowering; add ConvOp
|
2020-11-01 21:27:53 -06:00 |
Hanchen Ye
|
eb34f4ee7b
|
[HLSKernel] mechanical rename Benchmark to HLSKernel
|
2020-10-28 22:20:37 -05:00 |
Hanchen Ye
|
da05ac2d84
|
[Benchmark] start of implementing benchmark dialect and benchmark-to-affine lowering
|
2020-10-27 18:36:17 -05:00 |
Hanchen Ye
|
6bbb1be13c
|
[HLSCppEmitter] emit ArrayOp and loop/func pragmas; compatible with Vivado HLS 2019.1 for now.
|
2020-10-10 23:35:21 -05:00 |
Hanchen Ye
|
3f7a58d55f
|
[QoREstimation] new resource-aware II analysis! memory port resources are taken into consideration
|
2020-10-10 22:53:52 -05:00 |
Hanchen Ye
|
cbfb623c67
|
[QoREstimation] unroll loops in IR now! support a real partition-aware loop scheduling
|
2020-10-10 02:33:26 -05:00 |
Hanchen Ye
|
28926c5cc2
|
[QoREstimation] impl of getAccessNum method, this will take partition information and count number of accesses for each partition of each dimension of each load/store op, which will help to better estimate II and iteration latency
|
2020-10-08 02:45:44 -05:00 |
Hanchen Ye
|
58655710f5
|
remove expired files and includes; update readme
|
2020-10-06 01:58:10 -05:00 |
Hanchen Ye
|
8365d24ded
|
[QoREstimation] update code with the new ArrayOp; add new HLSCppToolBase class
|
2020-10-06 01:36:51 -05:00 |
Hanchen Ye
|
f3c40918e3
|
[HLSCppDialect] add array operations, and corresponding modification in HLSCppEmitter, ConverToHLSCpp
|
2020-10-05 23:26:42 -05:00 |
Hanchen Ye
|
3555fb9d2d
|
[HLSCppDialect] use enum to update attributes definition; enhance pragma operations to support bind_storage, partition, and interface; [HLSCppEmitter] support all enhanced pragma operations
|
2020-10-04 20:14:22 -05:00 |
Hanchen Ye
|
4838b15b0f
|
update func_pragma definition; update readme
|
2020-10-01 20:10:51 -05:00 |
Hanchen Ye
|
e2c21ca9ab
|
[QoREstimation] support dependency-based II analysis
|
2020-10-01 16:16:02 -05:00 |
Hanchen Ye
|
46f444463e
|
[QoREstimator] a simple impl of estimator with lots of assumptions, can handle unroll and pipeline
|
2020-09-30 23:26:26 -05:00 |
Hanchen Ye
|
003a91472c
|
update to the newest version LLVM
|
2020-09-30 09:14:18 -05:00 |
Hanchen Ye
|
77eaacd030
|
[HLSCppDialect] update pragma operations definition, update corresponding emitters
|
2020-09-25 23:19:24 -05:00 |
Hanchen Ye
|
4470f6c232
|
[QoREstimation] move this pass to Analysis directory
|
2020-09-24 15:18:34 -05:00 |
Hanchen Ye
|
21968283d1
|
[QoREstimation] split out QoREstimation.h, StaticParam.h, and Visitor.h; refine QoREstimation code structure with new created classes; a relative completed searchLongestPath implementation
|
2020-09-24 00:30:03 -05:00 |
Hanchen Ye
|
ce293ee4c5
|
[QoREstimation] design parameters data structure; initial impl of longer path search
|
2020-09-23 18:23:43 -05:00 |
Hanchen Ye
|
b605503236
|
remove global dialect registration; update file structure
|
2020-09-23 14:10:34 -05:00 |
Hanchen Ye
|
9b7c1c1c69
|
[HLSCppDialect] pragma operations come back... eventually I found the analysis+estimate 2-step approach in COMBA is misleading, basically you can't clearly partition the task into two passes (StaticAnalysis and QoREstimation), so that I decide to merge the two into one QoREstimation pass. In this case, there's no need to move around estimated or extracted parameters between different passes, which means we can create an internal data structure in QoREstimation pass for decently holding all parameters, and pragma information will continue to be represented as pragma operation
|
2020-09-23 12:39:14 -05:00 |
Hanchen Ye
|
e06ba37001
|
[QoREstimation] initial implementation; add several config files for holding profiling data, resource constraint, and tool configuration. These config file can be passed to the compiler through QoREstimation pass option
|
2020-09-22 23:32:29 -05:00 |
Hanchen Ye
|
50b2a6c099
|
[HLSCppDialect] remove pragma operations: the functionality of pragma ops has been fully covered by param ops, and param ops is much more friendly to dse, hince there are no reason to maintain two groups of op with overlapped semantics; [README] update install & test instructions
|
2020-09-20 02:21:20 -05:00 |
Hanchen Ye
|
e1b878e845
|
[HLSCppDialect] refine parameter operations definition; create seperate attributes tablegen
|
2020-09-20 02:05:58 -05:00 |
Hanchen Ye
|
53a83dee09
|
[HLSCppDialect] add many new passes declaration; add parameter operations declaration; remove scalehls-estimator tool
|
2020-09-19 18:21:08 -05:00 |
Hanchen Ye
|
8a67b13b99
|
[HLSCppDialect] add Assign operation, ConvertToHLSCpp pass; [HLSCppEmitter] add two testcases
|
2020-09-13 23:40:24 -05:00 |
Hanchen Ye
|
c707e72a0a
|
[PragmaInsertion] simple initial implementation for testing new pragma operations
|
2020-09-13 18:08:46 -05:00 |
Hanchen Ye
|
565a8f15d0
|
update code structure: add scalehls-estimator, EstimateQoR, and hlscpp::PragmaInsertion pass
|
2020-09-13 16:35:47 -05:00 |
Hanchen Ye
|
a31192405d
|
[HLSCppDialect] add pipeline & unroll & array_partition pragma operation
|
2020-09-13 01:02:15 -05:00 |
Hanchen Ye
|
1a6491b4fd
|
[HLSCppDialect] add ApplyPragmasOp and PragmaOpInterface
|
2020-09-12 18:30:04 -05:00 |
Hanchen Ye
|
45fe55af67
|
add new HLSCpp dialect and scalehls-opt tool
|
2020-09-09 23:44:47 -05:00 |
Hanchen Ye
|
1f4200e88a
|
mechanical rename hlsld to scalehls; update file structure
|
2020-09-06 18:05:16 -05:00 |
Hanchen Ye
|
01baa10c97
|
[EmitHLSCpp] some basic classes; hlsld-translate entry; add testcase
|
2020-08-26 23:23:22 -05:00 |
Hanchen Ye
|
b35338e68e
|
build code structure; update readme; remove pymlir directory
|
2020-08-25 14:11:30 -05:00 |
hanchen8
|
0d548a41f4
|
Add FpgaKrnl Ops defination
|
2020-05-06 21:15:55 -05:00 |
hanchen8
|
dbe3466267
|
construct files structure
|
2020-04-21 17:29:35 -05:00 |