Programming heterogeneous systems is often considered challenging and cumbersome. Therefore, the DEEP programming model provides a dedicated development and runtime environment which makes porting applications to DEEP a snap. If your application supports MPI, you are almost done and your application will benefit from optimized MPI implementations for the InfiniBand fabric on the Cluster side as well as for the EXTOLL network on the Booster side. If your application does not use MPI, the task-based OmpSs programming model might even save you from explicitly parallelizing your application yourself.
As the Cluster side and the Booster side have very different characteristics, they are suitable for different kinds of codes: codes with limited scalability will run just fine on the Cluster side, whereas highly-scalable codes will run very efficiently on the Xeon® Phi™ accelerators of the Booster and benefit from the low-latency and high-bandwidth EXTOLL interconnect. Since most applications will comprise both categories of codes, the DEEP software stack supports dynamic offloading of the highly-scalable code parts to the Booster. However, as the Booster Interface introduces constraints on communication latency, the DEEP programming model foresees to trench applications at a boundary involving only less frequent communication with limited data volume. After offloading the highly-scalable code parts to the Booster, collective operations shall therefore be mostly restricted to either the Cluster-part or the Booster-part of the applications.
As many existing HPC applications employ the message passing programming paradigm, the DEEP software stack features a fully standard compliant MPI-3 implementation to facilitate easy porting of such applications.
Additionally, the DEEP software stack supports the OmpSs data-flow programming model for porting applications to the heterogeneous DEEP architecture.