Active Threads: An Extensible and Portable Light-Weight Thread System

TitleActive Threads: An Extensible and Portable Light-Weight Thread System
Publication TypeTechnical Report
Year of Publication1997
AuthorsWeissman, B.
Other Numbers1100

This document describes a portable light-weight thread runtime system for uni- and multiprocessors targeted at irregular applications. Unlike most other thread packages, which utilize hard-coded scheduling policies, Active Threads provides a general mechanism for building data structure specific thread schedulers and for composing multiple scheduling policies within a single application. This allows modules developed separately to retain their scheduling policies when used together in a single application. Flexible scheduling policies can exploit the temporal and spatial locality inherent in many applications. In spite of the added flexibility, the Active Threads API is close to that of more conventional thread packages. Simple synchronization is achieved by standard mutexes, semaphores, and condition variables while more powerful parallel constructs can be easily built from threads, thread bundles (collections of threads with similar properties such as schedulers) and user-defined synchronization objects. Active Threads can be used directly by application and library writers or as a virtual machine target for compilers for parallel languages. The package is retargeted by porting the Active Threads Portability Interface that includes only eight primitives. Active Threads has been ported to several hardware platforms including SPARC, Intel i386 and higher, DEC Alpha AXP, HPPA and outperformed vendor provided thread packages by as much as orders of magnitude. A typical thread context switch cost is on the order of dozens of instructions and is only an order of magnitude more expensive than a function call. This document presents an involved performance analysis and comparisons with other commercial and research parallel runtimes. Active Threads are used as a compilation target for Sather, a parallel object-oriented language under development at ICSI. Active Threads are also being used as a base for a distributed extension of C++ that supports thread migration.

Bibliographic Notes

ICSI Technical Report TR-97-036

Abbreviated Authors

B. Weissman

ICSI Publication Type

Technical Report