Enabling Software Composability for the Manycore Era
|Title||Enabling Software Composability for the Manycore Era|
|Year of Publication||2009|
|Authors||Pan, H., Hindman B., & Asanović K.|
Increasing processor core counts will be the main path to future hardware performance improvements, but a thriving parallel software industry is possible only if programmers can arbitrarily compose parallel libraries without sacrificing performance. Unfortunately, current parallel libraries compose poorly, as each library obliviously performs its own resource management leading to destructive interference through oversubscription of real machine resources. In this paper, we present the design and implementation of Lithe, a user-level co-operative resource management layer that can sit below existing libraries to provide “bolt-on” composability of existing parallel code, or can be used as a basis for new customized, yet composable, parallel programming libraries. We show that Lithe versions of the TBB and OpenMP parallel programming models adds no measurable overhead to stand-alone execution of pure TBB and pure OpenMP code respectively. For a sparse QR application previously written to use a manually tuned partition of hardware threads between OpenMP and TBB, we show relinking with the Lithe-compliant libraries provides superior performance with no manual tuning required.