AllScale is an innovative programming approach for ExaScale, decoupling program specification of parallelism by the programmer from management tasks automatized by the underlying runtime system. The programmer is exposed to a single, generic parallel model that provides a global view of parallelism and locality which is automatically mapped by exploiting recursive parallelism to a variety of parallel resources with the help of the AllScale toolchain that supports:
- Automated applications porting from small- to extreme scale architectures
- Flexible tuning of program execution to fulfil trade-offs among execution time, energy and resource usage
- Efficient management of hardware resources and associated parameters (e.g. clock speed)
- Seamless integration of resilience management measures to compensate for isolated hardware failures,
- Online performance monitoring and analysis.
Allscale api based on c++ templates
User-level API:
- High-level abstractions (e.g. grids, meshes, stencils, channels)
- Familiar interfaces (e.g. parallel for loops, map-reduce)
Core-level API:
- Generic function template for recursive parallelism
- Set of recursive data structure templates
- Synchronization, control- and data-flow primitives
