- Works the same in Explorer (tested only on 6.0) and Netscape (tested only on Netscape 7.0 and Mozilla 1.3.1), but does not work in Opera (6.01) ***************************************************************************** */ if (document.images) { // tests for image support trilinos_title_normal = new Image(310, 55); trilinos_title_normal.src = "../../packages/common/webroot_common/trilinos_title_normal.png"; trilinos_title_over = new Image(310, 55); trilinos_title_over.src = "../../packages/common/webroot_common/trilinos_title_over.png"; sandia_normal = new Image(180, 29); sandia_normal.src = "../../packages/common/webroot_common/sandia_normal.png"; sandia_over = new Image(180, 29); sandia_over.src = "../../packages/common/webroot_common/sandia_over.png"; trilinos_normal = new Image(183, 100); trilinos_normal.src = "../../packages/common/webroot_common/trilinos_normal.png"; trilinos_over = new Image(183, 100); trilinos_over.src = "../../packages/common/webroot_common/trilinos_over.png"; } // if (document.images) //-->
|
The ML API: A C++ Framework for the Development of Scalable Multilevel and Domain Decomposition Preconditioners based on Aggregation MLAPI is an object oriented framework that enables the development and usage of efficient, scalable and portable implementations of multilevel preconditioners for general distributed sparse matrices, in both serial and parallel environments. To learn more about MLAPI, see the ACM/TOMS article. The main feature of this framework is the use of several programming paradigms for the different implementation layes, with a strong emphasis on object oriented classes and operator overloading for the top layer, and optimized FORTRAN and C code for the layers underneath. In particular, MLAPI takes advantage of ML for all computationally intensive tasks. MLAPI has been designed with the following goals in mind:
We now report one short example of MLAPI usage; more examples can be found here. The following is a power method codes using MLAPI:
int NumGlobalRows = 16;
Space MySpace(NumGlobalRows);
MultiVector x(MySpace), y(MySpace);
Operator A = Gallery("Tridiag", MySpace);
x.Random();
x = x / sqrt(x * x);
int MaxIters = 10;
for (int i = 0 ; i < MaxIters ; ++i) {
y = A * x; // matrix-vector product
double RQ = (y * x) / (x * x);
if (GetMyPID() == 0)
cout << "iter = " << i << ", RQ = " << RQ << endl;
x = y / sqrt(y * y);
}
As one can see, operators and vectors are mostly like MATLAB. This makes the
MLAPI an ideal tool to test and implement novel ideas. The MLAPI distribution,
contained within the ML package of Trilinos, reports several examples.
including a fully-fledged multilevel preconditioner based on smoothed
aggregation, and a working adaptive smoothed aggregation preconditioner.
The MLAPI documentation is maintained using Doxygen. If you use MLAPI for your applications, please let us know by writing an e-mail to the ml developers. Please also cite MLAPI using the following bibtex entry:
@Article{Sala:2006:OOF,
author = "Marzio Sala",
title = "An Object-Oriented Framework for the Development of Scalable Parallel Multilevel Preconditioners",
journal = "{ACM} Transactions on Mathematical Software",
volume = "32",
number = "3",
month = sep,
year = "2006",
accepted = "4 November 2005",
}
|
|
||
| ||||