OCR-Vx
Research group Scientific Computing, University of Vienna
Contact person: Jiri Dokulil jiri.dokulil<at>univie.ac.at
About OCR
The Open Community Runtime (OCR) is a task-based runtime system for parallel and distributed computing. The OCR specification (version 1.1.0 is avaiable here; the latest draft is 1.2.0, avaiable here) is similar to standards like MPI or OpenMP, because it defines the API and semantics, but not the actual implementation. An open-source reference implementation (XSOCR) was created by Rice University, Intel, and other contributors.
The basic OCR objects are tasks, events, and data blocks. A task is a piece of work that needs to be executed, when it is ready. A task is ready when all of its dependences have been satisfied. Events are helper objects used to set up dependences. Data blocks are containers for application data. Any application data (except for local variables used by a running task) has to be placed in data blocks. The data blocks are managed by the OCR runtime and can be replicated or relocated.
In OCR, a task is a C function. Any data block accessible by a task is passed as an argument to the function. The function contains computation, but it may also contain calls to the OCR API, which is used to create new OCR objects (like tasks or data blocks) and manage these objects (e.g., set up dependences). The dependences in OCR are not specified directly among tasks. Instead, events are used. Event is an OCR object used purely for synchronization of tasks. Dependences may be set up between an event (as the source) and event or task (as the destination). For each task, there is an automatically created event (completion event), which represents the end of that task. So, if a task B needs to start after task A finishes, a dependence needs to be set up from B's completion event to task B.
A more detailed introduction can be found in this paper (PDF) or in our publications.
About OCR-Vx
OCR-Vx is a collection of OCR runtimes created at the University of Vienna. There are currently three implementations, with different scope and purpose:
- OCR-V1 (or "OCR one") - a single threaded implementation of the OCR specification, with minimal dependencies and extensive checks for errors. A testbed for rapid implementation of experimental features.
- OCR-Vsm - shared memory implementation of the OCR on top of the TBB.
- OCR-Vdm - distributed implementation of the OCR, based on the ideas of the OCR-Vsm.
The same application code can be used in combination with XSOCR or any of the three OCR-Vx runtimes. This compatibility is even possible at the object file level. The application can be compiled once and the runtime is selected by linking the application with one of the four runtime libraries.
Download
The final version of OCR (including OCR-V1, OCR-Vsm, and OCR-Vdm) is available for download here. These are the latest source codes of the runtime.
Projects
- FWF project P 29783 - Dynamic Runtime Systems For Future Parallel Architectures, 2017/04/01-2021/03/31.
Publications
- Jiri Dokulil, Siegfried Benkner: Retargeting of the Open Community Runtime to Intel Xeon Phi, International Conference On Computational Science, ICCS 2015.
- Jiri Dokulil, Siegfried Benkner: OCR extensions - local identifiers, labeled GUIDs, file IO, and data block partitioning, technical report, 2015.
- Jiri Dokulil, Martin Sandrieser, Siegfried Benkner: OCR-Vx - An Alternative Implementation of the Open Community Runtime, International Workshop on Runtime Systems for Extreme Scale Programming Models and Architectures, in conjunction with SC15, 2015.
- Jiri Dokulil, Martin Sandrieser, Siegfried Benkner:
Implementing the Open Community Runtime for Shared-Memory and Distributed-Memory Systems, 24th Euromicro International Conference on Parallel, Distributed and Network-based Processing, 2016.
- Jiri Dokulil, Jana Katreniakova: Visualization of Open Community Runtime Task Graphs, 21st International Conference Information Visualisation, IV 2017.
- Jiri Dokulil, Siegfried Benkner, Jakub Yaghob: The Open Community Runtime on the Intel Knights Landing Architecture, International Conference on Algorithms and Architectures for Parallel Processing, ICA3PP 2017.
- Jiri Dokulil, Jana Katreniakova: Automatic detection of synchronization errors in codes that target the Open Community Runtime, 24th International Conference on Parallel and Distributed Computing, Euro-Par 2018.
- Jiri Dokulil, Siegfried Benkner: Adaptive scheduling of collocated applications using a task-based runtime system, 30th International Symposium on Computer Architecture and High Performance Computing, SBAC-PAD 2018.
- Enes Bajrovic, Siegfried Benkner, Jiri Dokulil: Pipeline Patterns on top of Task-Based Runtimes, The 19th International Conference on Parallel and Distributed Computing, Applications and Technologies, PDCAT 2018.
- Jiri Dokulil: Consistency model for runtime objects in the Open Community Runtime, The Journal of Supercomputing, May 2019, Volume 75, Issue 5, pp 2725–2760.
- Jiri Dokulil, Siegfried Benkner: Automatic Placement of Tasks to NUMA Nodes in Iterative Applications, 2020 28th Euromicro International Conference on Parallel, Distributed and Network-Based Processing, PDP 2020.
- Jiri Dokulil, Siegfried Benkner: NUMA-aware CPU core allocation in cooperating dynamic applications, 2020 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW), RADR 2020.