TY - GEN
T1 - Stapl-rts
T2 - 29th ACM International Conference on Supercomputing, ICS 2015
AU - Papadopoulos, Ioannis
AU - Thomas, Nathan
AU - Fidel, Adam
AU - Amato, Nancy Marie
AU - Rauchwerger, Lawrence
N1 - Publisher Copyright:
© Copyright 2015 ACM.
PY - 2015/6/8
Y1 - 2015/6/8
N2 - Modern HPC systems are growing in complexity, as they move towards deeper memory hierarchies and increasing use of computational heterogeneity via GPUs or other accelerators. When developing applications for these platforms, programmers are faced with two bad choices. On one hand, they can explicitly manage all machine resources, writing programs decorated with low level primitives from multiple APIs (e.g. Hybrid MPI/OpenMP applications). Though seemingly necessary for efficient execution, it is an inherently non-scalable way to write software. Without a separation of concerns, only small programs written by expert developers actually achieve this efficiency. Furthermore, the implementations are rigid, difficult to extend, and not portable. Alternatively, users can adopt higher level programming environments to abstract away these concerns. Extensibility and portability, however, often come at the cost of lost performance. The mapping of a user's application onto the system now occurs without the contextual information that was immediately available in the more coupled approach. In this paper, we describe a framework for the transfer of high level, application semantic knowledge into lower levels of the software stack at an appropriate level of abstraction. Using the stapl library, we demonstrate how this information guides important decisions in the runtime system (stapl-rts), such as multi-protocol communication coordination and request aggregation. Through examples, we show how generic programming idioms already known to C++ programmers are used to annotate calls and increase performance.
AB - Modern HPC systems are growing in complexity, as they move towards deeper memory hierarchies and increasing use of computational heterogeneity via GPUs or other accelerators. When developing applications for these platforms, programmers are faced with two bad choices. On one hand, they can explicitly manage all machine resources, writing programs decorated with low level primitives from multiple APIs (e.g. Hybrid MPI/OpenMP applications). Though seemingly necessary for efficient execution, it is an inherently non-scalable way to write software. Without a separation of concerns, only small programs written by expert developers actually achieve this efficiency. Furthermore, the implementations are rigid, difficult to extend, and not portable. Alternatively, users can adopt higher level programming environments to abstract away these concerns. Extensibility and portability, however, often come at the cost of lost performance. The mapping of a user's application onto the system now occurs without the contextual information that was immediately available in the more coupled approach. In this paper, we describe a framework for the transfer of high level, application semantic knowledge into lower levels of the software stack at an appropriate level of abstraction. Using the stapl library, we demonstrate how this information guides important decisions in the runtime system (stapl-rts), such as multi-protocol communication coordination and request aggregation. Through examples, we show how generic programming idioms already known to C++ programmers are used to annotate calls and increase performance.
KW - Application driven optimizations
KW - Data flow
KW - Distributed memory
KW - Parallel programming
KW - Remote method invocation
KW - Runtime systems
KW - Shared memory
UR - http://www.scopus.com/inward/record.url?scp=84957544989&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84957544989&partnerID=8YFLogxK
U2 - 10.1145/2751205.2751233
DO - 10.1145/2751205.2751233
M3 - Conference contribution
AN - SCOPUS:84957544989
T3 - Proceedings of the International Conference on Supercomputing
SP - 425
EP - 434
BT - ICS 2015 - Proceedings of the 29th ACM International Conference on Supercomputing
PB - Association for Computing Machinery
Y2 - 8 June 2015 through 11 June 2015
ER -