Commit Graph

10 Commits

Author SHA1 Message Date
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