Preserving the original MPI semantics in a virtualized processor environment

Eduardo R. Rodrigues, Philippe O.A. Navaux, Jairo Panetta, Celso L. Mendes

Research output: Contribution to journalArticlepeer-review


Processor virtualization is a technique in which a programmer divides a computation into many entities, which are mapped to the available processors. The number of these entities, referred to as virtual processors, is typically larger than the number of physical processors. For an MPI program, the user decomposes the computation into more MPI tasks than physical processors. This approach allows overlapping computation and communication, and enables load balancing. User-level threads are often used to implement these virtual processors because they are generally faster to create, manage and migrate than heavy processes or kernel threads. However, these threads present issues concerning private data because they break the private address space assumption typically made by MPI programs. In this paper, we propose a new approach to privatize data in user-level threads. This approach is based on thread-local storage (TLS), which is often used by kernel threads. We apply this technique so that MPI programs can be executed in a virtualized environment while preserving their original semantics. We show that this alternative has a more efficient context switch and lower migration cost and is simpler to implement than other approaches.

Original languageEnglish (US)
Pages (from-to)412-421
Number of pages10
JournalScience of Computer Programming
Issue number4
StatePublished - Apr 1 2013


  • MPI
  • Privatization
  • Processor virtualization
  • TLS
  • User-level threads

ASJC Scopus subject areas

  • Software


Dive into the research topics of 'Preserving the original MPI semantics in a virtualized processor environment'. Together they form a unique fingerprint.

Cite this