Project Specification - Execution of Dependence Graphs
with Atomic Nodes
1. Problem Statement
Windows NT provides for multiple threads within processes.
If the NT execution environment is a multiprocessor then the
NT kernel will run the threads in parallel. The goal of this
project is to design and implement a user-level threads subsystem
which will execute a parallel program expressed as a dependence
graph with nodes which execute atomically in a near optimal manner
on a single NT workstation.
A node may have several predecessors and several
successors. Ideally it would be enabled for execution whenever
all of its inputs are available. The atomic execution property
implies that once a node has begun execution it will not interact
with the environment again until it completes its execution.
Ideally these nodes should be scheduled once, execute to completion
and then forward their results to their succesor nodes.
Overheads arise when the nodes must be awakened several
times to verify whether or not their inputs are available and
when they are pre-empted by the quanta scheduler or for other
extraneous reasons. The goal of the threads subsystem to be designed
and built for this project is to minimize those overheads. The
project should begin with a survey of the features such as priorities
which are available to control execution behavior and the synchronization
capabilities which can be used to control order of execution.
2. Work Products
a) A design document defining how the several capabilities
for control of execution behavior and synchronization will be
used to attain the stated goals. The format should be a narrative
with performance analysis and an object model with a state machine
defining the behaviors of threads and the scheduler.
b) A test plan and workload for determining the correctness
and performance of the subsystem.
c) The code for the subsystem written in C or C++.
d) A report comparing the performance of a dependence
graph program executed using standard NT threads without concern
for the special properties of the nodes and the specialized subsystem.