TY - JOUR
T1 - Preserving the original MPI semantics in a virtualized processor environment
AU - Rodrigues, Eduardo R.
AU - Navaux, Philippe O.A.
AU - Panetta, Jairo
AU - Mendes, Celso L.
PY - 2013/4/1
Y1 - 2013/4/1
N2 - 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.
AB - 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.
KW - MPI
KW - Privatization
KW - Processor virtualization
KW - TLS
KW - User-level threads
UR - http://www.scopus.com/inward/record.url?scp=84873319656&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84873319656&partnerID=8YFLogxK
U2 - 10.1016/j.scico.2012.07.005
DO - 10.1016/j.scico.2012.07.005
M3 - Article
AN - SCOPUS:84873319656
SN - 0167-6423
VL - 78
SP - 412
EP - 421
JO - Science of Computer Programming
JF - Science of Computer Programming
IS - 4
ER -