Font Size: a A A

Modern task parallelism for modern high performance computing

Posted on:2011-10-25Degree:Ph.DType:Thesis
University:Indiana UniversityCandidate:Kambadur, PrabhanjanFull Text:PDF
GTID:2448390002962722Subject:Computer Science
Abstract/Summary:
The multi-core era brings new challenges to the programming community. Parallelization requirements of applications in mainstream computing and applications in emergent fields of high performance computing such as informatics must be explored. With parallelism now ubiquitous, programmability, composability, and reuse need to be closely examined in applications developed using existing parallel programming tools. In this thesis, we introduce PFunc, a novel library for expressing shared-memory task parallelism in C and C++ that has been designed with these new challenges in mind. PFunc is unique in its heavy use of generic programming---a programming paradigm for developing efficient and reusable software libraries. While developing PFunc, we applied the process of "lifting" to find both commonality and missing features among existing task parallelism implementations such as Cilk, Threading Building Blocks, and OpenMP tasks. PFunc improves on these existing solutions for task parallelism in three main ways. First, it makes customizable such features as task scheduling policy, task stealing policy, task priorities, and task affinities. Second, it introduces the ability to deliver multiple task completion notifications and the notion of task groups. Finally, it provides production-grade exception handling and performance monitoring mechanisms to assist software developers. To demonstrate the benefits of PFunc's customizable and extensible design, we present three peer-reviewed case studies: demand-driven DAG execution, frequent pattern mining, and iterative sparse solvers. PFunc has been released under the aegis of COIN-OR, a peer-reviewed open source initiative for the operations research community.
Keywords/Search Tags:Task, Pfunc, Performance
Related items