Using fine-grain threads and run-time decision making in parallel computing

David K. Lowenthal, Vincent W. Freeh, Gregory R. Andrews

Research output: Contribution to journalArticle

17 Scopus citations

Abstract

Programming distributed-memory multiprocessors and networks of workstations requires deciding what can execute concurrently, how processes communicate, and where data is placed. These decisions can be made statically by a programmer or compiler, or they can be made dynamically at run time. Using run-time decisions leads to a simpler interface - because decisions are implicit - and it can lead to better decisions -because more information is available. This paper examines the costs, benefits, and details of making decisions at run time. The starting point is explicit fine-grain parallelism with any number (even thousands) of threads. Five specific techniques are considered: (1) implicitly coarsening the granularity of parallelism, (2) using implicit communication implemented by a distributed shared memory, (3) overlapping computation and communication, (4) adaptively moving threads and data between nodes to minimize communication and balance load, and (5) dynamically remapping data to pages to avoid false sharing. Details are given on the performance of each of these techniques as well as on their overall performance for several scientific applications.

Original languageEnglish (US)
Pages (from-to)41-54
Number of pages14
JournalJournal of Parallel and Distributed Computing
Volume37
Issue number1
DOIs
StatePublished - Aug 25 1996

    Fingerprint

ASJC Scopus subject areas

  • Software
  • Theoretical Computer Science
  • Hardware and Architecture
  • Computer Networks and Communications
  • Artificial Intelligence

Cite this