OCR-V1
Research group Scientific Computing, University of Vienna
Contact person: Jiri Dokulil jiri.dokulil<at>univie.ac.at
About
OCR-V1 is a part of the OCR-Vx project. It is a single-threaded implementation of the OCR specification with minimal dependences on other libraries. It provides extensive checks to verify that the application makes correct calls to the OCR API. The checked error conditions include:
- API call arguments - the parallel and distributed runtimes don't perform all checks. This is not just a minor optimization, since performing a full check in a distributed environment may require communicating with other nodes.
- object lifetime - when an API call is made the OCR-V1 runtime checks, whether all objects are in the correct state.
- data block access - the runtime keeps a copy of data blocks passed to a task and if the block is read-only, it checks that it wasn't actually modified. Furthermore, as soon as the data block is released by the task, the memory region is invalidated, so if the task accessed the released data, the error will be obvious.
- objects remaining at the end - if an OCR object (task, data block,...) is not deleted by the application, it is reported by the runtime at the end.
OCR-V1 also serves as a testbed for experiments with extensions and modifications of the API. The following extensions are available at the moment:
- local identifiers - LIDs are identifiers of OCR objects valid within a task
- labelled GUIDs - alternative to the OCR 1.0.1 proposal, using local identifiers and creator functions to support concurrent creation of mapped objects
- file IO - file support based on existing data block mechanisms
- data block partitioning - dynamic partitioning of data blocks
- debug extensions - a debug label can be attached to all OCR objects
Download
An older version (with cleaned-up, more readable source codes) is available here. The latest version is of all source codes is available on the main page.