Expressing Coarse-Grain Dependencies Among Tasks in Shared Memory Programs

Publication: Research - peer-reviewJournal article – Annual report year: 2011

View graph of relations

Designers of embedded systems face tight constraints on resources, response time and cost. The ability to analyze embedded systems is essential to timely delivery of new designs. Many analysis techniques model parallel programs as task graphs. Task graphs capture the worst-case execution times of individual program tasks and the data dependencies among these. This paper introduces two compiler directives which let programmers annotate source code with data dependencies among tasks. Compiler analysis overapproximates the actual dependencies among tasks. The directives help eliminate potential data dependencies that do not occur at runtime. This lets tools compute more accurate task graphs from the annotated code. The correct use of the directives cannot be verified at compile time. Therefore, the check for correct use is done at runtime—not unlike dynamic array bounds checking in many languages. The overhead of verifying the correct use of the directives was measured on a set of benchmarks on two platforms. The overhead of runtime checks was found to be negligible in all instances.
Original languageEnglish
JournalI E E E Transactions on Industrial Informatics
Issue number4
Pages (from-to)652-660
StatePublished - 2011
CitationsWeb of Science® Times Cited: 1


  • Scheduling, Assertions, Task partitioning, Data dependencies, Embedded systems, Real-time
Download as:
Download as PDF
Select render style:
Download as HTML
Select render style:
Download as Word
Select render style:

ID: 6226399