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:

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.


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.