Motivated by multimedia content analysis applications, we aim to provide a single software environment for productive, efficient, portable and scalable application development. A compelling approach to making applications scalable is to explicitly map their computation onto parallel platforms. However, developing efficient parallel implementations and fully utilizing the available resources remains a challenge due to the increased code complexity, limited portability and required low-level knowledge of the underlying hardware.
PyCASP is a Python-based framework that automatically maps computation onto parallel platforms from Python application code. Using PyCASP, applications can be prototyped in a couple hundred lines of Python code and automatically scale to modern parallel processors and clusters.
PyCASP is based on a pattern-oriented approach and designed for multimedia content analysis applications. It is comprised of several "components" that automatically map computations that typically occur in content analysis applications to parallel platforms from Python code. Below is a graphic of all the components PyCASP aims to cover. Application patterns determine the algorithms implemented in PyCASP components, each classified to a particular computatio using Computational patterns. PyCASP also aims to support a set of Structural patterns to aid in composition of components.
PyCASP is available on GitHub here with documentation available here. The software is currently being developed, so please bear with us as we fix bugs, add documentation etc.