|
Project Information
Featured
Links
|
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 we provide an implementation of this interface in both a standard SMP context as well as the SST 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 attain either state. The qthreads library on an SMP (i.e. the POSIX implementation) is essentially a library for spawning and controlling tasks: user-level (non-kernel) 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 thread mobility domains; they map to specific processors or memory regions, and define where a qthread can, must, or would prefer to execute. Qthreads can be assigned to specific shepherds and do not migrate unless either directed to migrate or the shepherd is disabled or, if unassigned, stolen by another shepherd in search of work. This implementation supports both OpenMP (via the ROSE compiler) and Chapel, and can be used directly. The Qthreads OpenMP implementation has proven to load-balance and scale better than both the GCC and Intel compiler OpenMP implementations for single-address-space computation (see paper below, Scheduling Task Parallelism on Multi-Socket Multicore Systems). Projects That Use and/or Contribute to QthreadsPlatforms & RequirementsArchitecturesPOSIX Qthreads supports most POSIX-style machines, including Linux, Solaris, and MacOS X, running on a variety of architectures. It has been tested on:
CompilersQthreads has been tested with:
Build RequirementsTo compile and run the POSIX Qthreads you will require:
To compile and run SST Qthreads you will also require:
InstallationDetailed installation directions are included in the INSTALL file in the distribution. Generally, we use GNU autotools and the standard configuration and installation behavior. Papers & PublicationsTo cite qthreads, please use:
To cite sherwood, please use:
Additional related publications:
|