Hanchen Ye
66bf9a7623
[Readme] Update instructions for resnet18 example
2022-02-17 20:27:16 -06:00
Hanchen Ye
723d42304a
[QoREstimation] Support scf if op
2022-02-17 19:52:58 -06:00
Hanchen Ye
577fa54c49
[Support] Include transfer load/store when getting the memref access map
2022-02-17 16:01:39 -06:00
Hanchen Ye
b3c40d94bb
[HLSCpp] Update the definition of MulPrimOp to support multiplication packing; [EmitHLSCpp] Support the emission of hlscpp primitive ops
2022-02-17 14:50:05 -06:00
Hanchen Ye
3100f042f3
[EmitHLSCpp] Support max/min ops
2022-02-16 19:12:51 -06:00
Hanchen Ye
d775ccc9f9
[EmitHLSCpp] Support reinterpret_cast op
2022-02-16 18:41:19 -06:00
Hanchen Ye
887424942b
[HLSCpp] Remove unused operations from the visitor; [EmitHLSCpp] Start the emissionts of vector load/store, transfer read/write, broadcast, mul primitive
2022-02-16 14:57:09 -06:00
Hanchen Ye
9626e556b7
[Transforms] Support vectorization in the pass pipeline; Update several passes to make them aware of transfer_read/write ops
2022-02-16 04:19:33 -06:00
Hanchen Ye
b0cb590fb6
[Transforms] Enable the pass pipeline with tunable dataflow granularity and loop tiling size
2022-02-16 02:28:52 -06:00
Hanchen Ye
770ae66603
[CreateHLSCppPrimitive] Factor out this pass from LegalizeToHLSCpp; Move LegalizeToHLSCpp to Transforms directory; [Transforms] Add scalehls pass pipeline
2022-02-16 00:39:09 -06:00
Hanchen Ye
ec415f92d5
[LegalizeToHLSCpp] Support to create mul and cast primitives for integer calculations
2022-02-15 23:35:57 -06:00
Hanchen Ye
7af2c0cafd
[HLSCpp] Introduce MulPrimOp and CastPrimOp for DSP double pumping
2022-02-14 17:20:34 -06:00
Hanchen Ye
5c8e1ebda2
[QoREstimator] Improve the accuracy when resource can be shared between multiple loop bands
2022-02-13 23:21:22 -06:00
Hanchen Ye
1be6af93d8
[QoREstimator] Support fexp op; Start to specify dsp usage in config.json
2022-02-11 05:56:38 -06:00
Hanchen Ye
baa212b473
[QoREstimation] Resolve an issue when estimating multi-loop functions with no_touch annotations
2022-02-11 04:51:42 -06:00
Hanchen Ye
dfc2ab12c2
[ReduceInitialInterval] Implement this pass
2022-02-09 14:22:05 -06:00
Hanchen Ye
8a8de8b4c2
[MaterializeReduction] Implement this pass
2022-02-07 00:38:25 -06:00
Hanchen Ye
817620d5a0
[QoREstimation][MultipleLevelDSE] Use JSON file for configuration
2022-01-21 22:13:55 -06:00
Hanchen Ye
5e7171e9ac
[HLSKernel] Remove this dialect from the repo
2022-01-21 03:55:49 -06:00
Hanchen Ye
d65454f24e
Clean up Conversion/Passes.h
2022-01-21 03:26:51 -06:00
Hanchen Ye
5fc4d2682b
[QuantizeONNX] Remove from the repo
2022-01-21 03:22:56 -06:00
Hanchen Ye
f354a8a3a6
Bump Polygeist to version 3f0e66045f01305e2b09de186552a3c42cdfd8e5
2022-01-21 02:58:31 -06:00
Hanchen Ye
2fdba859f7
[PartialAffineLoopTiling] Support to simplify loop structure after tiling
2021-11-12 01:51:15 -06:00
Hanchen Ye
aaf11f432d
Add build-scalehls.sh script; [README] Update build and test instructions; [Polygeist] Update polygeist submodule to avoid gettimeofday failure
2021-11-09 00:49:06 -06:00
Hanchen Ye
31981f14e4
[Support] Add getArrays API; [BindingsPython] Add PyArrayList class for array iteration; Remove logics after python exception
2021-11-06 15:45:43 -05:00
Hanchen Ye
1bdc117ddb
[ArrayPartition] Add array partition API with explicit factors and kinds (cyclic or block)
2021-11-06 02:43:47 -05:00
Hanchen Ye
68f1d2a577
[AffineLoopOrderOpt] Support to specify permMap; [BindingsPython] Support LoopPermutation API; [pyscalehls] Add comments to each optimization call
2021-11-03 22:05:05 -05:00
Hanchen Ye
07d027d3c5
[BindingsPython] Directly use C++ API for ScaleHLS transform util bindings
2021-11-03 15:49:46 -05:00
Hanchen Ye
ad8dea7101
[BindingsPython] Support applyLoopPipelining API
2021-11-03 01:20:47 -05:00
Hanchen Ye
82f8c7b221
[BindingsPython] Support MemoryAccessOpt API
2021-11-03 01:04:38 -05:00
Hanchen Ye
76abd5b96e
[BindingsPython] Support AffineLoopOrderOpt and RemoveVariableBound APIs
2021-11-03 00:47:13 -05:00
Hanchen Ye
b422ef16ee
[BindingsPython] Support PyAffineLoopBand and PyAffineLoopBandIterator utility; Support applyAffineLoopPerfection API
2021-11-03 00:21:14 -05:00
Hanchen Ye
7359ec02c0
Update Polygeist to daeb952
2021-11-01 16:27:57 -05:00
Hanchen Ye
0f663e69c3
Support HLSCpp dialect python binding
2021-10-08 03:27:49 -05:00
Hanchen Ye
9b5be88f51
Add HLSCpp dialect CAPI
2021-10-08 03:01:38 -05:00
Hanchen Ye
b20b152bd6
Port applyLegalizeToHLSCpp to python
2021-10-08 02:51:21 -05:00
Hanchen Ye
b8f3882e5e
Remove MlirFunc definitions
2021-10-03 16:59:33 -05:00
Hanchen Ye
0492347bef
Add pyscalehls tool; Python binding for applyArrayPartition
2021-10-03 10:18:25 -05:00
Hanchen Ye
8ec060ea11
Start of transform utils python binding
2021-10-01 12:19:25 -05:00
Hanchen Ye
ddf17f2ae8
Remove config folder; Update -multiple-level-dse to -dse
2021-09-30 04:57:45 -05:00
Hanchen Ye
2d42d2d6b9
Update README; Enable output QoR estimation in DSE; Register LLVM dialect
2021-09-30 04:44:47 -05:00
Hanchen Ye
ab9d20a6eb
Support to import scalehls in python; Move analysis utils to support folder; Move qor estimator to transform folder
2021-09-30 02:18:31 -05:00
Hanchen Ye
149ed35967
Start of capi and python binding
2021-09-29 23:33:56 -05:00
Hanchen Ye
9825bcd3ca
remove SCF2Affine conversion passes
2021-08-23 13:30:36 -05:00
Hanchen Ye
c5f894dd08
[scalehls-clang] Update test cases; [SCFToAffine] Solve an issue when loop bound is induction variable
2021-08-11 22:29:30 -05:00
Jianyi Cheng
5f430e18b7
Add SCFToAffine conversion pass ( #25 )
...
- Added two passes to raise scf dialect:
- Check whether each scf.for op can be raised to an affine.for op and raise it if it can.
- Check whether each memref.load/memref.store op can be raised to an affine.load/affine.store op and raise it if it can.
- Added a unit test for SCFToAffine
2021-07-03 01:39:31 -05:00
Hanchen Ye
964c7315eb
[MultipleLevelDSE] start of supporting function pipelining; [Test] add gemm.c test case
2021-06-02 12:52:49 -05:00
Hanchen Ye
c3deb43ee8
[Dialect] fix several bugs
2021-05-01 01:06:35 -05:00
Hanchen Ye
671b4a9991
fix bugs in new LLVM version
2021-04-30 13:21:20 -05:00
Hanchen Ye
ab22a45c20
remove redundant includes
2021-04-21 22:20:37 -05:00
Hanchen Ye
3d1bcb906e
[MultipeLevelDSE, LoopPipeline] fix bugs; [QoREstimation] fix no_touch attribute support; [LegalizeToHLSCpp] split out callable API;
2021-04-21 21:59:47 -05:00
Hanchen Ye
6b0255366a
[Analysis] remove AnalysisBase class, update emitter, estimator, and optimizer accordingly; [MultipleLevelDSE] update with new attributes
2021-04-21 03:26:37 -05:00
Hanchen Ye
68b1895d31
[HLSCpp] update definition of attributes, hope this is the final version...; [LegalizeToHLSCpp, QoREstimation] update with new attributes
2021-04-21 00:29:52 -05:00
Hanchen Ye
cb2df2dc37
[HLSCpp] update ScheduleAttr to TimingAttr; [QoREstimation] using HLSCpp attribute for representing resource and timing annotations
2021-04-19 00:11:10 -05:00
Hanchen Ye
2fda888955
[HLSCpp] use ODS for the dialect declaration
2021-04-16 09:58:08 -05:00
Hanchen Ye
a26b6d0518
[HLSCpp] update all attributes; add attribute parser and printer; [QoREstimation] update with ScheduleAttr
2021-04-16 01:07:08 -05:00
Hanchen Ye
c798c28717
[HLSCpp] start to add structure attributes for representing directives, scheduling, and resource info
2021-04-15 14:12:46 -05:00
Hanchen Ye
d1786aeed7
[QuantizeOnnx] update the pass name
2021-04-06 20:35:32 -05:00
Hanchen Ye
ea9467cfe5
[QuantizeDNNModel] add support of div op and some cast ops
2021-04-06 18:47:30 -05:00
Hanchen Ye
d14f8718d0
[QuantizeDNNModel] impl this pass for quantizing onnx model to 8/32 bits representation; [HLSCpp] add MulOp and AddOp
2021-04-06 17:25:57 -05:00
Hanchen Ye
d0b847c26a
[MultipleLevelDSE] support to specify the maximum exploration and loop parallelism; [Samples] add trmm test case, update the problem size of all benchmarks to 1024
2021-03-31 22:45:14 -05:00
Hanchen Ye
cd03a1def3
[MultipleLevelDSE] support to explore directive-only design space
2021-03-31 19:32:56 -05:00
Hanchen Ye
a9d93f0ed2
[MultipleLevelDSE] support to specify sample number; [EmitHLSCpp] stop to emit interface pragma if array is fully partitioned; [Samples] update polybench test script
2021-03-31 15:56:00 -05:00
Hanchen Ye
1d00ea9812
[ArrayPartition] fix a bug; add applyArrayPartition() to transform utils; [Samples] update dnn test target fpga
2021-03-30 15:54:53 -05:00
Hanchen Ye
1e1b50df06
[MultipleLevelDSE] support to sample pareto points and dump to mlir files
2021-03-29 20:09:02 -05:00
Hanchen Ye
6bf2845742
[MultipleLevelDSE] support to dump all design spaces (loops and funcs); begin of exporting pareto design points C++ files; [Samples] reconstruct the file structure
2021-03-29 18:53:55 -05:00
Hanchen Ye
58bd312356
[ArrayPartition] update to target FuncOp rather than ModuleOp; [MultipleLevelDSE] add resConstraint option; [Samples] update polybench benchmarks
2021-03-29 15:52:34 -05:00
Hanchen Ye
dec53d8e36
[SplitFunction] support to further split sub-functions into multiple single-loop-function
2021-03-26 22:38:07 -05:00
Hanchen Ye
a040ce5009
[PartialAffineLoopTile] support loop order opt immediately after loop tiling; [AffineLoopOrderOpt] fix a small bug; [Samples] update the ablation study script
2021-03-26 12:23:28 -05:00
Hanchen Ye
b6534145a1
[ArrayPartition] support to handle top functions containing multiple sub-functions
2021-03-23 21:58:09 -05:00
Hanchen Ye
b0c331f44c
[PartialAffineLoopTile] add appy-pipeline option
2021-03-23 11:53:14 -05:00
Hanchen Ye
1fe0475195
update to LLVM f178c13fa899; [ArrayPartition] fixed a bug; [Samples] remove array initialization in atax, bicg, and gesummv
2021-03-22 17:29:43 -05:00
Hanchen Ye
dc3ef5ee67
[ArrayPartition] resolve an issue that non-pipelined loops are not considered; [Transforms] add an applyFullyUnrollAndPartition() until; [Samples] reverse gemm, syrk, syr2k back...
2021-03-16 23:57:18 -05:00
Hanchen Ye
4c9708d239
[Analysis] add a getAverageTripCount() util for estimation and dse
2021-03-16 17:31:19 -05:00
Hanchen Ye
1d39291a92
[MultipleLevelDSE] fixed a small issue; [Samples] update the problem sizes of polybench test cases
2021-03-04 19:58:46 -06:00
Hanchen Ye
17d34f0563
[MultipleLevelDSE] evaluate the tile config that fully unrolls all sequential loops in the design space initialization
2021-03-02 18:51:48 -06:00
Hanchen Ye
15bc2ff8f2
update to LLVM c68d289
2021-03-02 14:31:08 -06:00
Hanchen Ye
05681e4f34
[SimplifyMemrefAccess] significantly reduce the overall complexity
2021-03-01 22:27:02 -06:00
Hanchen Ye
2a7ceaf21b
[MultipleLevelDSE] dse params passed in through target-spec.ini rather than pass options; update debug info emission format
2021-03-01 00:33:06 -06:00
Hanchen Ye
d1e87c7af7
[QoREstimation] improve estimation speed by using parallel loop information; [Transforms] update utils to apply LegalizeToHLSCpp after loop tiling; [MultipleLevelDSE] add topFunc as pass option
2021-02-28 23:30:57 -06:00
Hanchen Ye
66f932c9db
[LegalizeToHLSCpp] support to annotate parallel loops; [Transforms] improve the speed of SimplifyMemrefAccess and AffineStoreForward by using the parallel information
2021-02-28 20:52:10 -06:00
Hanchen Ye
6b6b07e764
[AffineStoreForward] rewrite this pass to improve the speed
2021-02-18 18:23:29 -06:00
Hanchen Ye
a580fe4239
[QoREstimation] add dep-analysis option to improve the estimation speed
2021-02-18 00:48:01 -06:00
Hanchen Ye
dbf65620df
[MultipleLevelDSE] support to combine loop design spaces and conduct function-level optimization
2021-02-17 21:45:12 -06:00
Hanchen Ye
5b3848291a
[MultipleLevelDSE] update the code structure; add FuncDesignPoint and FuncDesignSpace class; [QoREstimation] bypass the estimation of loops marked as no_touch
2021-02-17 12:53:24 -06:00
Hanchen Ye
22aea10608
[MultipleLevelDSE] support explore design space method
2021-02-13 12:53:34 -06:00
Hanchen Ye
9658ab6938
[MultipleLevelDSE] update code structure
2021-02-12 15:14:07 -06:00
Hanchen Ye
3e3435dc84
[MultipleLevelDSE] support ds initialization and pareto frontier update; support ds dump; remove ProfileDesignSpace pass; [PartialAffineLoopTile] become fully in-place tiling
2021-02-12 14:54:36 -06:00
Hanchen Ye
390333e5ec
[MultipleLevelDSE] add new DesignPoint and DesignSpace class for representing and iterating in the design space, remove the TileSpace class; [LoopPipelining] pass loop band into this pass and make optimization to happen in place
2021-02-12 01:25:56 -06:00
Hanchen Ye
d7a3456fc2
[MultipleLevelDSE] remove greedy dse algorithm; [ProfileDesignSpace] move this pass to Transforms folder due to dependence issue; update all CMakeLists
2021-02-10 20:04:46 -06:00
Hanchen Ye
a55495582c
[Transforms] use loop band as input for all loop transforms; update the method description of Utils
2021-02-10 08:50:56 -06:00
Hanchen Ye
265d888f5f
add pthread support in cmake; [Transforms] support apply per-loop opt strategy in Utils; [Samples] increase problem size of some polybench test cases
2021-02-10 01:20:00 -06:00
Hanchen Ye
c76938dccc
[Readme] update test instructions; fixed several small bugs
2021-02-08 01:48:59 -06:00
Hanchen Ye
fa2b63f958
rename HLSCppEstimator/Optimizer/Emitter to ScaleHLSXXX; [Transforms] op builder is no longer passed around but generated locally; [applyOptStrategy] update and optimize the implementation
2021-02-08 01:32:33 -06:00
Hanchen Ye
69ec8c0b4a
[Transforms] move all transformation APIs to Transforms/Utils
2021-02-04 20:01:50 -06:00
Hanchen Ye
55d7c17d02
[ProfileDesignSpace] factor out a new pass for profiling; distribut test cases in test/Transforms into different sub-directories
2021-02-04 11:56:09 -06:00
Hanchen Ye
80bf2ceba4
[Transforms] distribute transform passes into 4 different folders; move HLSKernelBufferize pass to Dialect/HLSKernel folder
2021-02-02 19:22:15 -06:00
Hanchen Ye
7eb1ce40ce
[MultipleLevelDSE] start to support profiling mode to profile the performance and resource utilization of the whole design space
2021-02-02 18:46:38 -06:00
Hanchen Ye
f083e3c663
[QoREstimation] support per-loop estimation; annotate with/without resourc-sharing dsp utilization to pipelined loops
2021-02-02 17:48:00 -06:00
Hanchen Ye
0b7fde18d9
support to specify targeted II for pipelined loop/function
2021-02-02 15:04:45 -06:00