Commit Graph

20 Commits

Author SHA1 Message Date
Aliaksei Chapyzhenka 37b7baff75
LLVM bump (as we know it) (#3074)
* LLVM bump (as we know it)

* minor format fix

* DCMAKE_BUILD_TYPE=?

* Update lib/Dialect/MSFT/MSFTOps.cpp

Co-authored-by: Andrew Young <youngar17@gmail.com>

* Update lib/Dialect/FIRRTL/FIRRTLOps.cpp

Co-authored-by: Andrew Young <youngar17@gmail.com>

* Update lib/Dialect/Calyx/CalyxOps.cpp

Co-authored-by: Andrew Young <youngar17@gmail.com>

* removed anon module test

Co-authored-by: Andrew Young <youngar17@gmail.com>
2022-05-09 14:30:14 -07:00
Julian Oppermann 1ded1c8659
[Scheduling] Add an ILP-based solver for the CyclicProblem. (#2650) 2022-02-19 20:52:52 +01:00
Julian Oppermann f9277e3f75
[Scheduling] Add a scheduler for the ChainingProblem. (#2557) 2022-02-04 10:42:53 +01:00
Julian Oppermann 677d780169
[Scheduling] Set up infrastructure for using OR-Tools' solvers. (#2465) 2022-01-18 10:55:15 +01:00
Julian Oppermann a51080a577
[Scheduling] Implement de Dinechin's "fast" modulo scheduler. (#2397) 2021-12-27 21:35:04 +01:00
Julian Oppermann 5bfb9ae3cc
[Scheduling] Define problem to model operator chaining. (#2233)
This commit defines a ChainingProblem, which models the accumulation of physical propagation delays on combinational paths along SSA dependences within a scheduling problem's abstract time steps/cycles.
2021-12-20 21:25:59 +01:00
Julian Oppermann 7fab996c4d [Scheduling] Shorten problem name, NFC.
s/SharedPipelinedOperatorsProblem/SharedOperatorsProblem

The "pipelined" in the name is kind of redundant because fully-pipelined operators currently are the default assumption in the modeling.
2021-11-20 21:57:34 +01:00
Martin Erhart aab7c1a212
[LLVM] Bump LLVM to adopt 'pretty accessors' (#2008)
This requires a lot of renaming of operations from the standard dialect to the arith dialect which was split off since the last LLVM bump.
2021-10-18 09:06:14 +02:00
Julian Oppermann 1b0fe70750 [Scheduling] Fix handling of self-arcs in simplex schedulers. 2021-10-02 11:53:33 +02:00
Julian Oppermann bff070fa32
[Scheduling] Define modulo scheduling problem. (#1886) 2021-09-28 10:08:44 +02:00
Julian Oppermann c07a9ee213
[Scheduling] [3/3] Add scheduler for shared pipelined operators problem: Heuristic algorithm. (#1622)
Finally, add the actual heuristic algorithm, and enable the tests.
2021-08-23 22:15:06 +02:00
Julian Oppermann ae1a177f91
[Scheduling] [1/3] Add scheduler for shared pipelined operators problem: Preparations. (#1620)
- Add parameter S to the simplex tableau.
- Keep track of variable locations in the tableau.
- Add entry point in Algorithms.h.
- Set up test pass, prepare test cases.
2021-08-23 19:46:38 +02:00
Julian Oppermann b1003cc890
[Scheduling] Add problem model for shared, pipelined operators. (#1552)
Extends the basic problem model with a new operator type property 'limit', representing the maximum number of operations that can "use" a given operator type in each time step.
2021-08-12 18:06:35 +02:00
Julian Oppermann e72c083ddb
[Scheduling] Support for basic problems in the simplex scheduler. (#1535) 2021-08-12 10:15:59 +02:00
Julian Oppermann d476344380
[Scheduling] Add simplex scheduler for the cyclic problem. (#1526)
This scheduler uses linear programming and a handwritten simplex solver to compute the II and start times for the CyclicProblem. It's an implementation of the approach proposed in:
B. D. de Dinechin, "Simplex Scheduling: More than Lifetime-Sensitive Instruction Scheduling", PRISM 1994.22, 1994.
2021-08-08 20:50:43 +02:00
Julian Oppermann abdaa891df
[Scheduling] Define cyclic problem. (#1476)
Straightforward extension of the basic scheduling problem:

- Dependences have an optional distance property.
- The cyclic problem has a solution property initiation interval (II).
- The solution is valid iff for each dependence i -> j with distance dist
  (default value 0, if not set), i finishes before j starts dist
  iterations/samples/pipeline starts/etc. later.
  Formally: startTime(i) + latency(assocOpr(i)) <= startTime(j) + dist * II
2021-07-27 17:09:13 +02:00
Julian Oppermann 4f56a9082c
[Scheduling] Move test passes from test/ to lib/. (#1431) 2021-07-15 10:49:16 +02:00
Julian Oppermann 7d89311c07
[Scheduling] Add an algorithm-independent problem test. (#1413)
This allows testing the `check()`/`verify()` facilities in the Problem class by reading a given schedule from the test case. Tests like this are useful because they let us test new problem models in case a suitable algorithm is still being implemented, or can only live out-of-tree.

I also separated normal and error tests, as per convention.
2021-07-15 09:49:43 +02:00
Julian Oppermann e4820a2934
[Scheduling] Separate problems and algorithms. (#1392) 2021-07-08 20:06:06 +02:00
Julian Oppermann 06c5ae9e98
[Scheduling] Provide an ASAP scheduler for the basic problem. (#1358) 2021-07-06 11:54:49 -07:00