Sandia National Laboratories
Download
POSIX Implementation
- 1.0 Download / INSTALL

The Qthread Library

The qthreads API is designed to make using large numbers of threads convenient and easy, and to allow portable access to threading constructs used in massively parallel shared memory environments. The API maps well to both MTA-style threading and PIM-style threading, and is still quite useful in a standard SMP context. The qthreads API provides access to full/empty-bit (FEB) semantics, where every word of memory can be marked either full or empty, and a thread can wait for any word to atatin either state.

The qthreads library on an SMP (i.e. the POSIX implementation) is essentially a library for spawning and controlling coroutines: threads with small (4k) stacks. The threads are entirely in user-space and use their blocked/unblocked status as part of their scheduling. The library's metaphor is that there are many qthreads and several "shepherds". Shepherds can be thought of as a thread mobility domain; they generally map to specific processors or memory regions. Qthreads are assigned to specific shepherds and do not migrate (yet).

The API includes utility functions for making threaded loops, sorting, and similar operations convenient.

The Qthread library was developed to explore innovations in highly concurrent systems where the ultimate system either does not exist, or is sufficiently hard to obtain that development of software for the system becomes difficult.

Plaforms & Requirements

To compile and run the POSIX Qthreads you will require:

  • A UNIX-like shell (Qthreads uses the GNU Autotools)
  • GNU Make
  • C++ Compiler
  • Cprops Library

Qthreads is currently being ported to new platforms, including the Cray MTA and the SST.

Installation

Detailed installation directions are included in the INSTALL file in the distribution (see the link on the left).

API Documentation

Top of page

Contacts