- Why can't I wait for specific tasks in Pheet?
- Waiting for specific tasks requires maintaining a future object for each task on the side of the programmer. We believe this is a really clumsy and inefficient model, leading to cases where the programmer has to store futures for thousands of tasks and waiting for each task individually. Finish on the other hand allows for a quite efficient implementation on the side of the scheduler, and simplifies the programming model a lot. Deadlock-freedom can be guaranteed for applications that do not use blocking synchronization in-between tasks apart from Finish. For cases where fine-grained task-dependencies have to be maintained, a DAG-API similar to the Nabbit library for Cilk will be provided in the future
- Why doesn't Pheet support older compilers?
- To simplify the programming interface for Pheet, Pheet relies heavily on some C++11 features like variadic templates and template aliasing, as well as move semantics. In addition, we now plan to adopt to the C++11 memory model as well as the C++11 threading facilities to increase portability of Pheet to other platforms.
- Which hardware architectures does Pheet currently support?
- Pheet has been heavily tested on x86, and has also been used on the Xeon Phi processor. As soon as more compilers support all necessary C++11 features, and the main data-structures have been ported to the C++11 memory model, we will start testing it on other architectures like ARM, Sparc and IBM Power
- What does Pheet stand for?
- The acronym means Parallel Hybrid Execution Environment for Tasks, but we prefer to just call it Pheet. The similarity to the english word feet is intended, since feet are used for running, and Pheet is a run-time system.