| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
|
| |
Silences a Clang++ warning/error:
> In file included from src/edf/qpa.cpp:12:
> include/edf/qpa.h:7:18: error: private field 'm' is not used [-Werror,-Wunused-private-field]
> unsigned int m;
> ^
> 1 error generated.
|
| |
|
|
|
|
|
|
|
| |
Felipe Cerqueira reported incorrect QPA results. The root cause was
a corner case in the demand calculation. This patch fixes the
underestimation of demand if time == deadline and adds a test case
discovered by Felipe that triggered the bug.
|
| |
|
| |
|
| |
|
|
|
|
| |
Quite handy when debugging LPs...
|
|
|
|
| |
Dump a LP solution to a stream for inspection.
|
| |
|
|
|
|
| |
This can reveal bugs in constraints that accidentally include Ti.
|
|
|
|
| |
Much faster than the alternatives, so use it when available.
|
|
|
|
|
|
|
|
| |
Using the plain, old C API seems to be *much* faster.
single:
lp_dpcp_bounds::cpu_costs: total=19569.9ms last=93.2767ms average=88.9543ms count=220
lp_dflp_bounds::cpu_costs: total=21537.3ms last=102.459ms average=97.8969ms count=220
|
|
|
|
|
| |
Add a bridge to the GLPK library. Availability is auto-discovered by
the build system. Most of the code is solver-agnostic.
|
|
|
|
|
| |
...via Swig to Python. The actual Python API will
be finalized later.
|
|
|
|
| |
This is in preparation of merged LPs.
|
|
|
|
|
| |
These files implement the generation and evaluation of linear programs
that bound maximum s-aware pi-blocking under the DPCP and the DFLP.
|
|
|
|
|
|
|
| |
This patch introduces a concrete subclass of Solution that implements the actual
solving of linear programs by means of invoking the CPLEX Concert Technology API.
The project can still be compiled on systems that do not have CPLEX installed.
|
|
|
|
|
|
|
| |
- Constraints are expressed as lists of terms.
- Linear programs consist of only equalities and less-than-or-equal constraints.
- Solvers hide behind an abstract solution class that can evaluate
linear expressions.
|
|
|
|
|
| |
The LP code generates variable IDs based on task identity.
It's convenient to keep track of this explicitly.
|
|
|
|
| |
Explicit iterator handling is cumbersome. Hide it when possible.
|
|
|
|
|
| |
The LP code requires many of the same definitions. Therefore, this patch splits the reusable
type definitions into an individual file to facilitate inclusion.
|
|
|
|
|
|
|
|
| |
Hashmaps will be needed by the LP code.
Additionally, add definitions for hash maps with uint64_t keys.
This is only relevant for legacy C++ libs as used on Mac OS X.
On Linux, we use the newer C++ '11 STL implementation.
|
|
|
|
|
| |
CPUClock is useful for repeatedly measuring how long
some piece of code executes.
|
|
|
|
|
|
|
|
| |
The priority ceilings under the MPCP are defined in a way
such that one processor has a slightly lower ceiling.
This doesn't really affect the outcome much, but this patch
changes the analysis to be exactly as defined for the sake
of accuracy.
|
|
|
|
|
|
| |
This will be used by the new LP-based MPCP analysis.
Also, report local blocking to Python and add a clarifying comment.
|
|
|
|
|
| |
The LP-based analysis of the DPCP can reuse this, so make it
available globally.
|
|
|
|
| |
schedulers in native code and easy max lateness computation.
|
| |
|
|
|
|
| |
Based on Zhang and Burns (2009), "Schedulability Analysis for Real-Time Systems with EDF Scheduling", IEEE Transactions on Computers, Vol 58, No 9.
|
|
|
|
| |
This corresponds to h(t) in Zhang and Burns (2009)'s QPA paper.
|
|
|
|
| |
There should be no symbol after #endif.
|
| |
|
| |
|
|
|
|
| |
The bound should not reflect requests executed by agents that can be preempted.
|
|
|
|
| |
Part of refactoring sharedres.cpp.
|
|
|
|
| |
Part of refactoring sharedres.cpp.
|
|
|
|
| |
Part of refactoring sharedres.cpp.
|
|
|
|
| |
Part of refactoring sharedres.cpp.
|
|
|
|
| |
Part of refactoring sharedres.cpp.
|
|
|
|
| |
Part of refactoring sharedres.cpp.
|
|
|
|
| |
Part of refactoring sharedres.cpp.
|
|
|
|
|
|
| |
integral_t == integral time units
fractional_t == fractions of integral time units
This is hopefully less of an eyesore than mpq_class and mpz_class.
|
|
|
|
|
| |
Not strictly needed in this case, but it's better to follow
established safe-programming conventions. This fixes some warnings.
|
|
|
|
|
| |
There's no point in declaring pass-by-value return types to be
constant. This fixes a warning under gcc 4.2.1.
|
|
|
|
|
| |
Give up after running for 5 seconds. This is almost never triggered, but once in a while
this should help to catch a pseudo-polynomial excursion.
|
| |
|
|
Based on the code available at http://www.cs.unc.edu/~bbb/diss,
this is a cleaned-up version of schedcat intended to serve as
the basis for all further development.
Notable improvements: more unit tests and a cleaner module structure.
|