Skip to content
This repository has been archived by the owner on Mar 3, 2020. It is now read-only.

PFuncTutorial

Stefan Vigerske edited this page Mar 3, 2020 · 1 revision

PFunc, short for Parallel Functions, is a lightweight and portable library that provides C and C++ APIs to express task parallelism. The features offered by PFunc are a strict superset of the features offered by current solutions for task parallelism. Specifically, PFunc extends the feature set of current solutions with custom task scheduling, task priorities and task affinities. Furthermore, PFunc offers task groups for SPMD-style programming and multiple task completion notifications for parallel execution of DAGs. PFunc's extended feature set is geared towards helping knowledgeable users optimize their application performance. In this section, we describe PFunc with an emphasis on its new features. PFunc's design is based on the principles of generic and generative programming. As a result, PFunc is able to offer a wide variety of customizations to its users without incurring any runtime penalties. Using PFunc is a two step process. First, users generate a customized library instance description that best suits their needs. Second, the generated library instance description is used to parallelize user applications.