P2G is a framework for parallel processing continuous multimedia workloads on heterogeneous architectures and in a distributed manner. P2G comprises a custom programming language, a compiler, runtime library, instrumentation and a scheduler for distributing workloads.
By controlling the complete software stack from programming language to application level runtime we believe that it is possible to achieve excellent parallel performance on multiple architectures. The P2G framework has a convenient programming model which encourage programmers to think about task and data dependencies.
The application is compiled into an intermediate representation representing the data and task dependencies exposed by the programmer. Right before execution starts this intermediate representation is compiled into executable object code that best utilize the underlying architecture.
By monitoring performance and system load, the P2G system can dynamically adapt and schedule the workload differently to achieve better overall performance. It also merges tasks and data to better amortize the overhead seen when the execution payload is suboptimal.