  Task based parallel programming has shown competitive outcomes in many
aspects of parallel programming such as efficiency, performance, productivity
and scalability. Different approaches are used by different software
development frameworks to provide these outcomes to the programmer, while
making the underlying hardware architecture transparent to her. However, since
programs are not portable between these frameworks, using one framework or the
other is still a vital decision by the programmer whose concerns are
expandability, adaptivity, maintainability and interoperability of the
programs. In this work, we propose a unified programming interface that a
programmer can use for working with different task based parallel frameworks
transparently. In this approach we abstract the common concepts of task based
parallel programming and provide them to the programmer in a single programming
interface uniformly for all frameworks. We have tested the interface by running
programs which implement matrix operations within frameworks that are optimized
for shared and distributed memory architectures and accelerators, while the
cooperation between frameworks is configured externally with no need to modify
the programs. Further possible extensions of the interface and future potential
research are also described.
