INTERTWinE is developing a Resource Manager to enable interoperability between APIs and libraries by co-ordinating the usage of hardware resources.
The Resource Manager aims to improve interoperability and composability between parallel runtime systems and parallel libraries. Co-ordinating access to CPU / GPU resources between different runtime systems and APIs can help to avoid both oversubscription and undersubscription situations.
In the context of the Resource Manager, various different APIs have been developed to arbitrate access to CPUs between multiple parallel runtime systems and to improve the interoperability between task-based programming models and communication APIs. These APIs are designed as low-level mechanisms that will be used to implement and enforce high-level user-defined policies.
The offloading API - based on OpenCL - will be used to call parallel kernels (e.g. a piece of code written in OpenMP or StarPU) from one runtime system to another one.
The resource partitioning API - also based on OpenCL - will be used to indicate which specific CPUs can be used to execute a parallel kernel.
A cooperation API will be provided so different runtimes in the same process can lend and borrow CPUs between them when they are not using all the resource or they need more resources respectively.
Resource manager: Task pause and resume
A survey of the current resource usage patterns of the project runtime systems and libraries. It presents some relevant use cases, details potential issues that may arise from such use cases, and lists requirements from the Resource Manager to address or mitigate these issues.