![]() |
Field G. Van Zee
libflame: The Complete Reference www.lulu.com (Frequently updated here) 2009 Paperback: $11.58 or download for free |
![]() |
Robert A. van de Geijn
and Enrique S. Quintana-Ortí. The Science of Programming Matrix Computations www.lulu.com 2008 Paperback: $14.21 or download for free |
Science: Knowledge that has been reduced to a system.
The objective of the FLAME project is to transform the development of dense linear algebra libraries from an art reserved for experts to a science that can be understood by novice and expert alike. Rather than being only a library, the project encompasses a new notation for expressing algorithms, a methodology for systematic derivation of algorithms, Application Program Interfaces (APIs) for representing the algorithms in code, and tools for mechanical derivation, implementation and analysis of algorithms and implementations.
A number of on-line presentations provide a more interactive overview of the FLAME project.
The key insight that enables the FLAME methodology is a new, more stylized notation for expressing loop-based linear algebra algorithms. This notation closely resembles how algorithms are naturally illustrated with pictures.
Figure 1: Blocked LU Factorization without pivoting (Variant 1).
The FLAME project promotes the systematic derivation of loop-based algorithms hand-in-hand with the proof of their correctness. Key is the ability to identify the loop-invariant: the state to be maintained before and after each loop iteration, which then prescribes the loop-guard, the initialization before the loop, how to progress through the operand(s), and the updates. To derive the shown algorithm for LU factorization one fills in the below "worksheet". In the grey-shaded areas predicates appear that ensure the correctness of the algorithm.
Figure 2: Derivation of algorithm in Figure 1.
A number of APIs have been defined fo representing the algorithms in different languages. These include
FLaTeX |
FLAME LaTeX commads for typesetting algorithms and worksheets. |
|
FLAME@lab |
FLAME M-script (Matlab/Octave) API. |
|
FLAME/C |
FLAME API for the C programming language. |
|
FLARE |
The Formal Linear Algebra Recovery Environment (FLARE) adds algorithmic fault-tolerance to some FLAME implementations. |
|
OpenFLAME |
FLAME API for SMP parallelism via OpenMP. |
|
OOCLA |
FLAME API for Out-of-Core sequential algorithms. |
|
PLAPACK2e |
FLAME extension of the Parallel Linear Algebra Package (PLAPACK). |
|
POOCLAPACK2e |
FLAME extension of the Parallel Out-of-Core Linear Algebra Package (POOLAPACK). |
|
function [ A_out ] = LU_blk_var1( A, nb_alg ) [ ATL, ATR, ... ABL, ABR ] = FLA_Part_2x2( A, ... 0, 0, 'FLA_TL'); while ( size( ATL, 1 ) < size( A, 1 ) ) b = min( size( ABR, 1 ), nb_alg ); [ A00, A01, A02, ... A10, A11, A12, ... A20, A21, A22 ] = ... FLA_Repart_2x2_to_3x3( ATL, ATR, ... ABL, ABR, b, b, 'FLA_BR'); %----------------------------------------------% A01 = trilu( A00 ) \ A01; A10 = A10 / triu( A00 ); A11 = A11 - A10 * A01; A11 = LU_unb_var1( A11 ); %----------------------------------------------% [ ATL, ATR, ... ABL, ABR ] = ... FLA_Cont_with_3x3_to_2x2( A00, A01, A02, ... A10, A11, A12, ... A20, A21, A22, ... 'FLA_TL'); end A_out = [ ATL, ATR ABL, ABR ]; return |
Figure 3: FLAME@lab code for algorithm in Figure 1.
A number of tools have been created to help the development of FLAME algorithms.
Spark is a tool for mechanical creation of code skeletons. By filling out a menu, an outline for FLAME@lab code, FLAME/C code, FLaTeX algorithm, or FLaTeX worksheet are generated. This greatly simplifies the generation of the rigid format advocated by the FLAME methodology.
AutoFLAME represents a glimpse at the ultimate goal of the FLAME
project: the mechanical (automatic) generation of linear algebra
libraries. For now, given a mathematical description of the
linear algebra operation, the system can derive correct algorithms and
code, with moderate human intervention.
The FLAME Team includes participants from UT-Austin' Department of Computer Sciences, UT-Austin's Center for Space Research, UT-Austin's Texas Advanced Computing Center, Universidad Jaume I (Spain), Aachen University (Germany), and industry (IBM, Intel, National Instruments, NEC Solutions (America), Inc.).
Active participants
Junior Professor |
CS, Aachen University, Germany |
|
Ph.D. Student |
CS, UT-Austin |
|
Senior Research Scientist |
TACC, UT-Austin |
|
Masters Student |
Math, UT-Austin |
|
Research Associate |
TACC, UT-Austin |
|
Brian Gunter |
Assistant Professor |
TU-Delft |
Undergraduate Student |
Math, UT-Austin |
|
Bryan Marker | Ph.D. Student | CS, UT-Austin |
Mercedes Marques | Ph.D. Candidate | Univ. Jaume I (Spain) |
Undergraduate Student |
CS, UT-Austin |
|
Undergraduate Student |
CS, UT-Austin |
|
Maggie Myers |
Lecturer |
CS, UT-Austin |
Ph.D. Student |
ECE, UT-Austin |
|
Ph.D. Student |
AE, UT-Austin |
|
Associate Professor |
Univ. Jaume I (Spain) |
|
Associate Professor |
Univ. Jaume I (Spain) |
|
Undergraduate Student |
CS, UT-Austin |
|
Professor |
CS, UT-Austin |
|
Research Scientist Associate II |
CS, UT-Austin |
|
Undergraduate Student |
CS, UT-Austin |
|
Undergraduate Student |
Math, UT-Austin |
The FLAME project is sponsored by the National Science Foundation, National Instruments, NEC Solutions (America), Inc., and Hewlett-Packard.
The FLAME project has generated a large number of journal and conference publications, in addition to a working note series.
The LinearAlgebraWiki on linear algebra theory, algorithms, and implementation is being maintained by the FLAME project.
Libraries and materials can be downloaded for those interested in trying the approach and resulting libraries.
We maintain a number of documents and web pages.
The FLAME libraries are maintained in a repository managed with subversion.
Please e-mail us at flame@cs.utexas.edu or rvdg@cs.utexas.edu.
Last Updated on 12 August 2008 by field.