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.