| Sponsor | Kishore Ramachandran/Bikash Agarwalla
{rama,bikash}@cc 217 CCB |
| Area | Parallel Systems/Software Engineering |
Problem
This project is aimed at evaluating the programmability of the
Stampede distributed programming system. You will implement a multipoint
distributed video capture application in two different ways:
(1) using Stampede API, (2) using Unix sockets. The application
itself is simple and straightforward.
Video streams from a set of cameras, each attached to a skiff board, are to
be sent to backend cluster. The video frames in each stream will be
indexed sequentially with monotonically increasing sequence numbers.
A program running on the cluster will receive these streams and produce
a composite video stream in which each frame is a mixture of the frames
with corresponding indices from all the streams.
Some preliminary C programming experience with a threading package
(such as pthreads) and network programming using sockets is necessary
to do this project.
You have to come up with some quantitative metric for comparing the programming ease of the two approaches.
Background:
Stampede is a cluster parallel programming system developed at Compaq CRL (formerly DEC CRL) for interactive multimedia applications. Emerging application domains such as interactive vision and animation require the efficient management of "temporally evolving" data, which often translates to providing "soft real time" guarantees for such applications. Stampede system provides a higher level data abstraction called Space-time Memorywhich is well-suited to providing the common parallel programming requirements found in most interactive applications, namely, buffer management, inter-task synchronization, and meeting real-time constraints. Other features of Stampede include cluster-wide threads and consistent distributed shared objects.
Space-Time Memory: A Parallel Programming Abstraction for Interactive Multimedia Applications. 10th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, May 1999.
Deliverables:
Demonstration of the application in the two different ways; quantitative evaluation of the programming ease of one versus the other.
Evaluation:
Based on the completeness of the implementation, and the originality of
ideas for programmability.