In numerous technologically important areas, such as aerodynamics (vehicle design), electrodynamics (semiconductor device design), magnetohydrodynamics (fusion energy device design), and porous media (petroleum recovery), production runs on expensive, high-end systems last for hours or days, and a major portion of the execution time is usually spent inside of numerical routines, such as for the solution of large-scale nonlinear and linear systems that derive from discretized systems of nonlinear partial differential equations. These numerical parts of the code can contain a large number of tuning parameters, the choice of which greatly influences the efficiency of the total code, or can even make the difference between obtaining a solution and obtaining none.

Such numerical concerns, however, are artifactual from the perspective of the scientific and engineering users, who are usually more concerned with modeling and discretization issues. The classic response to numerics was to encode the requisite mathematical, algorithmic and programming expertise into libraries that could be easily reused by a broad spectrum of domain scientists. However, in high-performance computing this solution is no longer sufficient. There is typically more than one algorithm for the stated purpose, and since several levels of algorithms are needed in a large-scale application; the different algorithms can have interlocking parameter settings, and the availability of parallel computing platforms influences algorithmic decisions. Since the difference in performance between an optimal choice of algorithm and hardware, and a less than optimal one, can span orders of magnitude, it is unfortunate that selecting the right solution strategy requires specialized knowledge of both numerical analysis and of computing platform characteristics. Our sans system aims to assist the application user to navigate this maze of computational possibilities.

This discrepancy in expertises can of course be bridged with manpower based solution: a large enough project can afford to hire a post-doc from computational science, or have a post-doc of its own cross-train in computational science. We believe, however, that it is possible have meta-software --~software operating on software~-- to deliver as good a solution, without the wasted manpower. Self-adapting Numerical Software (sans) systems have several levels on which they automate the computational choices for the application scientist: the algorithmic, network, and kernel levels. The Self-Adapting Large-scale Solver Architecture (SALSA) project tackles the algorithmic level, specifically for linear and nonlinear system solving.

Structure of the SALSA system

A SALSA system comprises the following:

  • An Intelligent Agent that includes an automated data analyzer (see below) to uncover necessary information about logical and numerical structure of the user's data, a data model for expressing this information as structured metadata (see below), and a self-adapting decision engine that can combine this problem metadata with other information (e.g. about past performance of the system) in order to choose the best library and algorithmic strategy for solving the current problem at hand;

  • A history database that not only records all the information that the intelligent component creates or acquires, but also all the data (e.g., algorithm, hardware, or performance related) that each interaction with a numerical routine produces;

  • A metadata vocabulary that expresses properties of the user data and of performance profiles, and that will be used to build the performance history database. By considering this as behavioural metadata, we are led to intelligent software components as an extension of the CCA framework. The metadata associated with user input makes it possible for the user to pass various degrees of information about the problem to be solved.

  • Analysis modules that computes the structural and mathematical properties of the user input. These computations are often heuristic in nature.

One of the more interesting aspects of a SALSA system is that it will gradually increase its intelligence. To this end, the IA needs to tune its heuristics, and build new ones over time. In this article we will outline various approaches that can be taken to this end.

Practical state of SALSA

As of early 2005 we have released two software libraries: NMD which stores metadata, and AnaMod which computes numerical metadata. Further libraries are on their way.

While NMD is a standalone product, AnaMod completely relies on Petsc, and all future Salsa products will likewise target first and foremost integration with Petsc. The goal is that Petsc will ultimately have a KSPSALSA which automagically will solve your problem the right way. Needless to say we're not there yet.

Apr 16 2014 Contact: Admin Login