Aspen: Abstract Scalable Performance Engineering Notation

Aspen: Abstract Scalable Performance Engineering Notation

Aspen is a set of tools based around a domain specific language to support the prediction of application performance on future architectures.  Aspen combines an abstract description of an application with an abstract description of a machine and provides a performance prediction.  Aspen supports “what-if” exercises that enable application developers to explore the potential benefits of alternate algorithms without needing to re-write the code.  Similarly, architects can explore the impact of changing machine properties without having to build the computing system.  Tools in the Aspen suite enable the extraction of application descriptions from applications.

You can learn more about Aspen in our publications at http://ft.ornl.gov/publications .

To request the source, email us at aspen-dev@elist.ornl.gov.

Aspen Design Flow

Aspen understands two types of models: application models and abstract machine models.  Application models consist of algorithm structure and resource requirements, while abstract machine models consist of speeds and feeds, and the can be queried alone or in combination using tools based on the Aspen library. Aspen models can be generated by hand, by automated modeling tools. Results can be used on their own or as input to a number of systems like simulators, runtime systems, or workflow monitoring applications.

The Aspen Language

Aspen is designed to be a semantic representation of a program or algorithm which allows for automatic symbolic analysis.  The language itself consists of import parameters (such as problem size), resource usage (such as memory and floating point operations), and control flow (such as iteration and parallelism).  An example of an Aspen model for a 3D FFT is shown below:

param n = 1024
kernel FFT1D
{
  execute [ n ]
  {
    flops [5 * log2(n)] as dp , complex , simd
    loads [a * max(1, log(n)/log(Z))] of size [wordSize] from fftVol
  }
}
kernel FFT3Dstep
{
  map [ n^2 ]
  {
    call FFT1D
  }
}

Note that the model allows composability; the 1D FFT is used directly in the 3D FFT step, and this 3D FFT algorithm itself can be imported by reference in a molecular dynamics application, for instance. With clear semantics, this form of model is also more easily understood, shared, and updated than other types of analytical modeling.

Analysis with Aspen

The representation in Aspen application models allows for a wide variety in the types of analysis possible from a single model.  For instance, one might inquire about the number of floating point operations or bytes of memory required to operate on at a given problem size.  The figure below shows this type of resource usage inquiry across multiple algorithms normalized for memory size:

As Aspen models contain multiple levels of parallelism, one might explore peak idealized concurrency across phases of a program, as seen in the figure below:

Aspen can also predict performance by convolving an application model with an abstract machine model, even generating, for example, synthetic profiling output from an application based on a hypothetical application model on a theorized machine.

For more information, see the publication Synthetic Program Analysis with Aspen.

Generating Aspen Performance Models

The Aspen application model is similar in structure to an executable program, which can simplify its creation.  While it is a great convenience and useful capability to be able to model and analyze algorithms without requiring source code, when such code is available the semantic structure of Aspen simplifies creation of the application model.  Capabilities now in the OpenARC research compiler can, in fact, do this automatically through static source code analysis.  For more information, see the Future Technologies Group paper on COMPASS.