Experimental Linear Algebra Performance Studies
Table of Contents generated with DocToc
What is ELAPS?
ELAPS is a multi-platform open source environment for fast yet powerful experimentation with dense linear algebra kernels, algorithms, and libraries. It allows to construct experiments to investigate how performance and efficiency vary depending on factors such as caching, algorithmic parameters, problem size, and parallelism. Experiments are designed either through Python scripts or a specialized GUI, and run on the whole spectrum of architectures, ranging from laptops to clusters, accelerators, and supercomputers. The resulting experiment reports provide various metrics and statistics that can be analyzed both numerically and visually.
Python version 2.7.x
Kernels to measure (e.g. BLAS/LAPACK libraries)
The Framework consists for three layers:
The first, "bottom" layer is written in C/C++ and contains the Sampler, a low-level command line tool responsible for executing and timing individual kernels. The Sampler has to be compiled for each specific combination of hardware and libraries (the only stage in which the user needs to configure the system); ELAPS can interface with any number of Samplers. See docs/Sampler.md.
The Sampler comes with a set of utility routines that cover basic tasks of experiment setups, such as matrix initializations and file-I/O. See docs/Utility.md.
The second, "middle" layer is the Python library
elaps, which centers around the class
Experimentthat implements the previously introduced experiments. An Experiment can be executed on different Samplers, both locally or through job submission systems. The outcome is a
Report, which provides not only structured access to the individual measurements, but also functionality to analyze different metrics and statistics. See docs/Experiment.md and docs/Report.md.
This layer also includes the
plotmodule, which is based on the matplotlib library, and is used to easily visualize Reports in graphical form. See docs/plot.md.
To use ELAPS:
- clone the GitHub repository, and
- compile one or more
Samplers (see docs/Sampler.md).
Now, ELAPS is ready to go. To get started, run