Periodic Reporting for period 2 - ALLScale (An Exascale Programming, Multi-objective Optimisation and Resilience Management Environment Based on Nested Recursive Parallelism) Reporting period: 2017-04-01 to 2018-09-30 Summary of the context and overall objectives of the project The computational and data analysis requirements for industrial and scientific research in particular in the field of simulation (life sciences, computational engineering and chemistry, earth and climate science, astrophysics, etc.) are a fundamental driving force for the need to build exascale systems.Existing programming models require heroic programming and optimisation efforts to achieve high efficiency on large-scale parallel computers. Invariably, these efforts are platform- specific and non-portable. The potential of existing programming models to effectively utilize future Exascale systems, while addressing the challenges of energy-efficiency, diminishing resilience and hardware diversity, is severely limited. It follows that the lack of appropriate, high-productivity and portable programming models for Exascale computing is a fundamental barrier for the future of science and engineering.AllScale has set six major scientific objectives focusing on a programming environment for ExaScale computing. In order to meet these objectives AllScale will catalyze the development of scalable, performance-portable and resilient applications in science and engineering. These applications will be optimized to achieve shorter execution-time, lower the energy, power and resource usage and support resilience, and with all these optimizations considered together, will adapt effectively to the parallel computing systems of all scales.Objective 1: Single-source-to-any scale development environment. Objective 2: Maximize and exploit the potential of nested recursive parallelism for HPC.Objective 3: Multi-objective optimization for execution time, energy and resource usage. Objective 4: Unified runtime system orchestrating parallel program executions on target architectures.Objective 5: Mitigating increased risk of soft/hard faults. Objective 6: Monitoring framework for online analysis of non-functional parameters.With the AllScale environment, many compute and data intensive applications will be able to produce results in shorter time for larger problem sizes and computing on Exscale application will become an everyday practice. Work performed from the beginning of the project to the end of the period covered by the report and main results achieved so far In this project, a multidisciplinary team of computer scientists and application providers has actively worked on an innovative programming approach for ExaScale, decoupling the specification of parallelism from managing tasks during runtime. This has led to the development of an innovative programming environment that is based on nested recursive parallelism, focusing on the following developments during the project phase (M1-M36):1. AllScale source-to-source compiler2. AllScale runtime system3. Resilience support4. Online performance analysisThe Consortium demonstrated the effectiveness and efficiency of the AllScale programming model for multiple different application domains, including implicit Particle-In-Cell based space weather simulations, adaptive meshing and data assimilation based oil spill simulations, and unstructured mesh and multi-grid based computational fluid dynamics simulations. Those applications, implemented using AllScale’s shared memory like programming model, have been successfully tested on various different target architectures, including x86 based systems, POWER and ARM based architectures. AllScale contributes to the strengthening of the European SMEs by providing a novel highly competitive technology and aggregating SME contributions with those of research organizations.Academic partners released different components of the AllScale environment as open source. This has been done in order to insure the maximum impact of the new technology and its widespread use and acceptance across the scientific community. This approach is essential for a long-term sustainability, as it is putting forward the totally new programmatic approach of the AllScale environment. IBM will follow a exploitation strategy, where the use of – part of or in its entirety – the AllScale innovation outcomes need extensions for future offerings, to become part of the next generation supercomputers systems. AllScale provided IBM researchers with insight into all aspects of the AllScale toolchain functionality. Internal discussions continued throughout the duration of the project regarding the potential integration of different components of the toolchain with future offerings.NUMECA has identified a possible commercial exploitation of its pilot application towards the aeronautics market. This exploitation will be tightly linked to follow up projects which will extend the AllScale components capabilities towards more advanced features required by the pilot application. Progress beyond the state of the art and expected potential impact (including the socio-economic impact and the wider societal implications of the project so far) By realizing the AllScale vision through the development of the AllScale API, compiler, runtime system, and runtime system sub-systems, the following goals have been achieved:- The provisioning of an effective and efficient, purely C++ based, target platform oblivious, shared-memory like programming model for large-scale HPC applications- The effective separation of concerns among HPC application developers, parallel API designers, compiler and runtime developers, and runtime service specialists- The creation of moldable HPC applications that can be adapted to a given target architecture, load characteristic, and user-preferences in computation time, resource usage and energy consumption- The transparent integration of checkpoint/restarting techniques in HPC applications to compensate for node failures within a running application instanceAs a result, the AllScale environment can be used as a platform facilitating the effective development of HPC applications using state-of-the art C++ development tools. The provided range of parallel data structures and algorithms provide a valuable foundation for future development projects, eliminating the need for re-implementing frequently encountered patterns while still facilitating their customization where needed. Applications, once developed using the AllScale API, can be ported to a variety of target architectures. Furthermore, such applications benefit from future developments like the support of additional parallel resource types or improved runtime services by simple re-compilation and linking. Thus, future developments can be integrated in (then) legacy codes following this paradigm.The AllScale tool chain is currently operational and used for various parallel computers including the LEO3 (UIBK), VSC-3 (UIBK), Beskow (KTH), Meggie (FAU), Cori (NERSC) parallel computer. The AllScale environment can be downloaded and installed from https://github.com/allscale under the GNU General Public License and the Boost Software License. The project partners are committed to maintain the tool chain beyond the project completion. In the future, it is unlikely that HPC will lose momentum, as most major information technology analysts (e.g. Gartner, ITC) forecast that HPC will play an important role in IT. Moreover, several existing and new technologies depend on HPC, such as Big Data, artificial intelligence, machine learning, IoT, requiring adaptation of the researched technologies to these new paradigms. AllScale will be open and adapt to these new developments beyond its lifetime.