Zoltan is added as thirdParty package

This commit is contained in:
Hamidreza
2025-05-15 21:58:43 +03:30
parent 83a6e4baa1
commit d7479cf1bd
3392 changed files with 318142 additions and 1 deletions

28
thirdParty/Zoltan/docs/tu_html/Makefile vendored Normal file
View File

@ -0,0 +1,28 @@
# $Id$
#
TEXFILES=contents.tex introduction.tex examples.tex methods.tex api.tex
LATEX=latex
PDFLATEX=pdflatex
LATEX2HTML=latex2html
all: contents.dvi contents.html contents.pdf
contents.html: $(TEXFILES)
$(LATEX2HTML) contents.tex
contents.pdf: $(TEXFILES)
$(PDFLATEX) contents
$(PDFLATEX) contents
contents.dvi: $(TEXFILES)
$(LATEX) contents
$(LATEX) contents
DVICLEAN=contents.toc contents.log contents.aux contents.dvi
PDFCLEAN=contents.pdf
HTMLCLEAN=/bin/rm -rf contents
clean:
/bin/rm -f $(DVICLEAN) $(PDFCLEAN)
$(HTMLCLEAN)

48
thirdParty/Zoltan/docs/tu_html/README vendored Normal file
View File

@ -0,0 +1,48 @@
# @HEADER
#
########################################################################
#
# Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring
# Copyright 2012 Sandia Corporation
#
# Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
# the U.S. Government retains certain rights in this software.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# 3. Neither the name of the Corporation nor the names of the
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Questions? Contact Karen Devine kddevin@sandia.gov
# Erik Boman egboman@sandia.gov
#
########################################################################
#
# @HEADER
The Zoltan tutorial was written in LaTeX, but can be converted to html.
The Makefile assumes latex2html is available.
Just type 'make' and you should get
contents.pdf - the pdf version for printing
tutorial.html - html version for web browsing

207
thirdParty/Zoltan/docs/tu_html/api.tex vendored Normal file
View File

@ -0,0 +1,207 @@
%
% This section describes in high level terms how an application uses Zoltan
%
\chapter{Using the Zoltan library}
\label{cha:using}
\section{Overview}
Zoltan supports dynamic load balancing, but it is important
to understand what Zoltan is \emph{not}. Zoltan can suggest
a better data distribution, but does not transparently move
your data around. Zoltan does not know anything about application
data structures. A typical use of Zoltan is
load balancing in dynamic applications. The application
should periodically call Zoltan to get a suggested improved
data decomposition, but it's up to the application to
decide when to call Zoltan and whether to move (migrate) data or not.
Zoltan is a toolkit that contains many different algorithms.
No single algorithm is best in all situations, and it is
up to the application to decide which algorithm to use.
Zoltan makes it easy to try out and compare many different
algorithms. Often, just changing a single parameter is sufficient.
Now let's dive into the software issues. Zoltan is a big and complex
piece of software. It was designed for production use, not as an educational
tool, so it may take a while to get up to speed.
The Zoltan library is a C library that you can link with your C,
C++ or Fortran application. Details of the C++ and Fortran bindings
are provided in the User's Guide
(\url{http://cs.sandia.gov/Zoltan/ug_html/ug.html}).
Because Zoltan uses MPI for communication, you must link your application
with the Zoltan library and with MPI. (It is actually possible to build
Zoltan without MPI, using the bundled serial MPI library, siMPI,
but this is rarely useful.)
The following points summarize the interface between your
application and the Zoltan library:
\begin{itemize}
\item Your parallel application must have a global set of IDs that uniquely identify each object that will be included in the partitioning. Zoltan is flexible about the data type or size of your IDs.
\item You make a call to the Zoltan library to create a load balancing instance or handle. All subsequent interactions with Zoltan related to this partitioning problem are done through this handle.
\item You set parameters that state which partitioning method you wish Zoltan to use, how you want the method to behave, and what type of data you will be providing.
\item You create functions that Zoltan can call during partitioning to obtain your data. You provide the names of these functions to Zoltan.
\item When you want to partition or repartition your data, all processes in your parallel application must call Zoltan. When Zoltan returns, each process will have lists of the
IDs of the data it must move to another process and of the data it will receive from
other processes. You must free these lists when you are done with them.
\item The Zoltan functions that you call will return success or failure information.
\end{itemize}
Most Zoltan users will only use the partitioning functions of Zoltan. But Zoltan provides
some other useful capabilities as well, such as functions to aid with data migration, and
global data dictionaries to locate the partition holding a data object.
After discussing the partitioning interface, we will briefly introduce those capabilities.
\section{Downloading and building Zoltan}
Zoltan is available both as a stand-alone software package, or
as a package within the Trilinos framework. The source code
is the same, so it makes little difference which one you get.
If you currently use Trilinos, you probably have Zoltan already.
Zoltan currently supports two different build systems, one manual
and one automatic (automake or soon, Cmake). Again, you can choose
which system to use. For detailed instructions, see the Zoltan User's Guide.
After you build Zoltan, you will have a library \textbf{libzoltan.a},
to which you should link your application.
\section{Initializing and releasing Zoltan}
Every process in your parallel application must initialize Zoltan once
with a call to \textbf{Zoltan\_Initialize}. Every
partitioning instance that is created with \textbf{Zoltan\_Create} must be freed at
the end with \textbf{Zoltan\_Destroy}. And all lists returned by
Zoltan must be freed with \textbf{Zoltan\_LB\_Free\_Part}. These functions
are defined in the User's Guide at
\url{http://cs.sandia.gov/Zoltan/ug\_html/ug\_interface\_init.html}
and they are are illustrated in each of the examples in chapter ~\ref{cha:ex}.
\section{Application defined query functions}
To make Zoltan easy to use, we do not impose any particular data structure
on an application, nor do we require an application to build a particular
data structure for Zoltan. Instead, Zoltan uses a callback function interface,
in which Zoltan queries the application for needed data. The application must
provide simple functions that answer these queries.
To keep the application interface simple, we use a small set of callback functions
and make them easy to write by requesting only information that is easily accessible
to applications. For example, the most basic partitioning algorithms require only
four callback functions. These functions return the number of objects owned by a
processor, a list of weights and IDs for owned objects, the problem's dimensionality,
and a given object's coordinates. More sophisticated graph-based partitioning
algorithms require only two additional callback functions, which return the number
of edges per object and edge lists for objects.
The User's Guide
(\url{http://cs.sandia.gov/Zoltan/ug\_html/ug\_query.html})
provides detailed prototypes for application defined query functions.
Several working examples of query functions can be found in this document,
for example in the Recursive Coordinate Bisection section (\ref{sec:rcb});
\section{Using parameters to configure Zoltan}
The behavior of Zoltan is controlled by several parameters and debugging-output
levels.
For example, you will set the parameter \textbf{NUM\_GID\_ENTRIES} to the
size of your application's global IDs, and you will set \textbf{DEBUG\_LEVEL}
to indicate how verbose you want Zoltan to be.
These parameters can be set by calls to \textbf{Zoltan\_Set\_Param}. Reasonable
default values for all parameters are specified by Zoltan. Many of the parameters
are specific to individual algorithms, and are listed in the descriptions of those
algorithms in the User's Guide
(\url{http://cs.sandia.gov/Zoltan/ug\_html/ug\_param.html}).
Each example in the next chapter (\ref{cha:ex}) includes code that sets
general parameters and parameters for specific algorithms.
\section{Errors returned by Zoltan}
All interface functions, with the exception of \textbf{Zoltan\_Create}, return an
error code to the application. The possible return codes are defined in
\textbf{include/zoltan\_types.h} and Fortran module \textbf{zoltan}.
They are:
\begin{description}
\item [ZOLTAN\_OK] Function returned without warnings or errors.
\item [ZOLTAN\_WARN] Function returned with warnings. The application will probably be able to continue to run.
\item [ZOLTAN\_FATAL] A fatal error occured within the Zoltan library.
\item [ZOLTAN\_MEMERR] An error occurred while allocating memory. When this error occurs, the library frees any allocated memory and returns control to the application. If the application then wants to try to use another, less memory-intensive algorithm, it can do so.
\end{description}
\section{Additional functionality provided by Zoltan}
The Zoltan library includes many functions, in addition to its
partitioning codes, which are designed to aid parallel
large-data message passing applications.
While the focus of this tutorial is partitioning, we list these additional
capabilities here. Most are described more fully in the User's Guide.
Where examples of use exist in the source code, we will point that out.
\begin{description}
\item [Data migration]
Existing applications that are being ported to Zoltan may already contain code to
redistribute data across a parallel application. However new codes may wish to
use Zoltan's data migration capabilities. The application must supply functions
to pack and unpack the data. Zoltan can either do the data migration automatically
after computing the new partitioning, or the application can explicitly call
\textbf{Zoltan\_Migrate} to perform the migration.
Details and examples can be
found in the User's Guide
(\url{http://cs.sandia.gov/Zoltan/ug\_html/ug\_interface\_mig.html}).
\item [Distributed directory utility]
The owner (i.e. the processor number) of any computational object is subject to
change during load balancing. An application may use this directory utility to
manage its objects' locations. A distributed directory balances the load (in terms
of memory and processing time) and avoids the bottle neck of a centralized directory design.
This distributed directory module may be used alone or in conjunction with Zoltan's
load balancing capability and memory and communication services.
Details of this feature can be found in the User's Guide
(\url{http://cs.sandia.gov/Zoltan/ug\_html/ug\_util\_dd.html}).
\item [Timers]
\textbf{Zoltan\_Timer\_Create} is a useful function
that creates a platform independent
timer that can be used by a parallel application. The application can
specify, for each timer, whether timing checks should involve a
global barrier or not. The Zoltan timer is not documented in the User's
Guide, but the example \textbf{examples/C/zoltanExample1.c} uses it.
\item [Unstructured communication]
The unstructured communication package provides a simple interface for
doing complicated patterns of point-to-point communication, such as those
associated with data remapping. This package consists of a few simple functions
which create or modify communication plans, perform communication, and destroy
communication plans upon completion. The package has proved useful in a
variety of different applications. For this reason, it is maintained as a separate
library and can be used independently from Zoltan.
Details of this feature can be found in the User's Guide
(\url{http://cs.sandia.gov/Zoltan/ug\_html/ug\_util\_comm.html}).
\item [Memory allocation wrappers]
This package consists of wrappers around the standard C memory allocation and
deallocation routines which add error-checking and debugging capabilities. These
routines are packaged separately from Zoltan to allow their independent use in other
applications.
They are described more fully in the User's Guide
(\url{http://cs.sandia.gov/Zoltan/ug\_html/ug\_util\_mem.html}).
\item [Parallel ordering]
With the \textbf{Zoltan\_Order} function,
Zoltan provides limited capability for ordering a set of objects, typically
given as a graph.
This feature is described more fully in the User's Guide
(\url{http://cs.sandia.gov/Zoltan/ug\_html/ug\_interface\_order.html}).
\item [Parallel coloring]
Zoltan provides limited capability for coloring a set of objects, typically given
as a graph. In graph coloring, each vertex is assigned an integer label such
that no two adjacent vertices have the same label.
This feature is described more fully in the User's Guide
(\url{http://cs.sandia.gov/Zoltan/ug\_html/ug\_interface\_color.html}).
\end{description}

View File

@ -0,0 +1,21 @@
\documentclass[12pt, notitlepage, openany]{book}
\usepackage{url}
\title{Zoltan Tutorial}
\author{Erik G. Boman, Karen D. Devine, Lee Ann Riesen}
\date{January 31, 2007; revised Jan. 9, 2009}
\begin{document}
\maketitle
\tableofcontents
\newpage
\input{introduction}
\input{methods}
\input{api}
\input{examples}
\end{document}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,51 @@
%
% What this document is, what prior knowledge is assumed, and
% brief outline of what is contained in it.
%
% PLEASE FEEL FREE TO RE-WRITE ANY OF THIS!!
%
\chapter{Introduction}
This document provides an introduction to data partitioning
and load balancing using the Zoltan Toolkit (version 3.1).
Zoltan is a parallel toolkit for load balancing
(and several other combinatorial scientific computing tasks)
targeted to the high performance computing community.
This tutorial only covers load balancing,
and other capabilities in Zoltan are barely mentioned.
The Zoltan library is written in C but can be
linked with C, C++ and Fortran90 applications.
It requires MPI to run in parallel.
Most of the examples in this tutorial are C language examples.
In Chapter~\ref{cha:lb} we
discuss the load balancing problem in general and describe
common algorithms, which are also supported in Zoltan.
Zoltan's role in addressing the load balancing problem is to
efficiently partition,
or repartition, the problem data across mulitple processes while an
application is running, when requested to do so by the application.
% In Chapter~\ref{cha:partitioning} we
% describe in more detail the partitioning
% methods available in Zoltan, and try provide a guide
% to choosing the method or methods best suited to your problem.
In Chapter~\ref{cha:using} we briefly explain the interface
through which your application employs Zoltan. This topic is
convered in more detail in the
Zoltan User's Guide available at
\url{http://cs.sandia.gov/Zoltan/ug_html/ug.html}.
An example can be worth a thousand words, so you may wish to
skip this chapter and look through the examples in the last section first.
The final chapter of this document (~\ref{cha:ex}) provides
source code examples for simple applications that use Zoltan.
These examples may be found in the \textbf{examples} directory
of the Zoltan source code. Zoltan is open source and freely available.
You will find additional documents and publications at the
Zoltan web site at \url{http://cs.sandia.gov/Zoltan/}.
The User's Guide is a very useful reference and provides
many details we could not cover here.

View File

@ -0,0 +1,68 @@
%
% This section describes load balancing and the methods offered by Zoltan.
%
\chapter{Data partitioning and load balancing}
\label{cha:lb}
As problem sizes grow, parallel computing has become an important tool
in computational science. Many large-scale computing tasks are
today run on parallel computers, with multiple processors or cores.
An important issue is then how to best divide the data and work
among processes (processors). This problem is known as \emph{data partitioning}
or \emph{load balancing}. We will use these phrases interchangably.
Partitioning or load balancing can either be performed once
(static partitioning) or multiple times (dynamic load balancing).
We wish to divide work evenly but at the same time minimize
communication among processes. Communication could either be
message passing (on distributed memory systems) or memory access
(on shared-memory systems).
We give a brief overview of the different categories of partitioning methods,
and later explain how to use them in Zoltan.
\section{Geometric methods}
Geometric methods rely on each object having a set of coordinates.
Data objects are partitioned based on geometric locality.
We assume that it is beneficial to keep objects that are close together on
the same processor, but there is no explicit model of communication.
Examples of geometric methods include recursive coordinate bisection (RCB)
and space-filling curves. An advantage of geometric methods is that
they are very fast to compute, but communication volume in
the application may be high.
\section{Graph partitioning}
Graph partitioning is perhaps the most popular method. This approach is
based on representing the application
(computation) as a graph, where data objects are vertices and
data dependencies are edges. The graph partitioning problem is then
to partition the vertices into equal-sized sets, while minimizing the
number of edges with endpoints in different sets (parts).
This is an NP-hard optimization problem, but fast multilevel
algorithms and software produce good solutions in practice.
In general, graph partitioning produces better quality partitions
than geometric methods but also take longer to compute.
\section{Hypergraph partitioning}
The graph model has several deficiencies. First, only symmetric
relations between pairs of objects can be represented. Second,
the communication model is inaccurate and does not model
communication volume correctly.
Hypergraphs generalize graphs, but can represent relationships
among arbitrary sets of objects (not just pairs). Also,
communication volume is exact, so hypergraph methods
produce very high quality partitions. The main drawback of hypergraph
methods is that they take longer to run than graph algorithms.
\section{Methods in Zoltan}
Zoltan is a toolkit containing many load balancing methods. We explain how
to use Zoltan in the next chapter. The methods currently available
in Zoltan (version 3.1) are:
\begin{description}
\item[Simple:] BLOCK, RANDOM. These are intended for testing, not real use.
\item[Geometric:] RCB, RIB, HSFC.
\item[Graph:] Zoltan has a native graph partitioner, and optionlly supports ParMetis and PT-Scotch.
\item[Hypergraph:] Zoltan has a native parallel hypergraph partitioner.
\end{description}

View File

@ -0,0 +1,231 @@
<!-------- @HEADER
!
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring
! Copyright 2012 Sandia Corporation
!
! Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
! the U.S. Government retains certain rights in this software.
!
! Redistribution and use in source and binary forms, with or without
! modification, are permitted provided that the following conditions are
! met:
!
! 1. Redistributions of source code must retain the above copyright
! notice, this list of conditions and the following disclaimer.
!
! 2. Redistributions in binary form must reproduce the above copyright
! notice, this list of conditions and the following disclaimer in the
! documentation and/or other materials provided with the distribution.
!
! 3. Neither the name of the Corporation nor the names of the
! contributors may be used to endorse or promote products derived from
! this software without specific prior written permission.
!
! THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
! EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
! PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
! CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
! EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
! PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
! LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
! NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
! SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
!
! Questions? Contact Karen Devine kddevin@sandia.gov
! Erik Boman egboman@sandia.gov
!
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! @HEADER
------->
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="filename" content="tutorial.html">
<meta name="review" content="xx/xx/xx">
<meta name="subject" content="Zoltan Tutorial Guide">
<meta name="sandia.approval_type" content="formal">
<meta name="sandia.approved" content="SANDxx-xxxx">
<meta name="sandia.create_date" content="05/30/06">
<meta name="keywords" content="Zoltan, Zoltan tutorial, Zoltan dynamic load balancing library, Zoltan parallel computing">
<meta name="description" content="Zoltan: Tutorial">
<title>Zoltan Tutorial</title>
<!----CHANGE INFORMATION IN AREAS WITH THIS HEADER---->
<!----SCROLL DOWN TO FIND OTHER AREAS TO BE CHANGED---->
<!--------CHANGE THE NAME AFTER THE DASH-------->
<!--------CHANGE THE FILENAME-------->
<!--------CHANGE THE REVIEW DATE-------->
<!--------CHANGE THE SUBJECT-------->
<link rel="schema.sandia" href="https://www.sandia.gov/html_schema.htm">
<!--------CHANGE THE SAND NUMBER INFO-------->
<!--------INSERT THE DATE DOCUMENT CREATED-------->
<link rev="owns" title="name of contact" href="mailto:kddevin@sandia.gov">
<!--------CHANGE THE PAGE OWNER AND EMAIL ADDRESS-------->
<link rev="made" title="name of contact" href="mailto:kddevin@sandia.gov">
<!--------CHANGE THE PAGE MAKER AND EMAIL ADDRESS-------->
<!--------PLACE FIVE KEY WORDS WITHIN THE QUOTES-------->
<!---------------END OF THIS CHANGE AREA--------------->
</head>
<body text="#000000" background="https://www.sandia.gov/images/bkgrnd.gif">
<!-- KDD Turned off alternative link colors in template; the ><! following line was part of the above body command. ><! link="#003366" vlink="#cc0033" alink="#000000">-->
<a NAME="TOP"></a><!---TOP BANNER AREA STARTS HERE--->
<table BORDER=0 valign="top" >
<tr VALIGN=TOP>
<td VALIGN=TOP WIDTH="140" >
<table BORDER=0 WIDTH="130" valign="top" >
<tr VALIGN=TOP>
<td VALIGN=TOP WIDTH="128"><!--SANDIA LOGO AT TOP LEFT--><a href="https://www.sandia.gov/Main.html"><img SRC="https://www.sandia.gov/images/snlstkdc.gif" ALT="[Sandia National Laboratories]" BORDER=0 valign="top" height=49 width=126></a>
<p><img ISMAP SRC="https://www.sandia.gov/images/labelNEW.gif" ALT="[navigation panel]" HSPACE=2 BORDER=0 usemap="#shortMap" height=119 width=111></td>
<td><img SRC="https://www.sandia.gov/images/1pixel.gif" BORDER=0 height=1 width=10></td>
</tr>
</table>
<table BORDER=0 WIDTH="140" valign="top" >
<tr ALIGN=LEFT VALIGN=TOP>
<td VALIGN=TOP WIDTH="114"><!----------- 1st little turquoise bevel button ------------>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="114" BGCOLOR="#00CCFF" >
<tr VALIGN=TOP BGCOLOR="#99FFFF">
<td ALIGN=LEFT><img SRC="https://www.sandia.gov/images/1pixel.gif" height=1 width=1></td>
<td ALIGN=RIGHT><img SRC="https://www.sandia.gov/images/1pixel.gif" height=1 width=1></td>
</tr>
<tr ALIGN=CENTER VALIGN=CENTER>
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="http://cs.sandia.gov/Zoltan/Zoltan_pdf/tutorial.pdf">
PDF Version of Tutorial</a></font></b></td>
</tr>
<tr VALIGN=BOTTOM BGCOLOR="#006699">
<td ALIGN=LEFT><img SRC="https://www.sandia.gov/images/1pixel.gif" height=1 width=1></td>
<td ALIGN=RIGHT><img SRC="https://www.sandia.gov/images/1pixel.gif" height=1 width=1></td>
</tr>
</table>
&nbsp;</td>
<td VALIGN=TOP WIDTH="20"></td>
</tr>
<tr VALIGN=TOP>
<td COLSPAN="2"></td>
</tr>
<tr ALIGN=LEFT VALIGN=TOP>
<td VALIGN=TOP WIDTH="114"><!----------- 2nd little turquoise bevel button ------------>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="114" BGCOLOR="#00CCFF" >
<tr VALIGN=TOP BGCOLOR="#99FFFF">
<td ALIGN=LEFT><img SRC="https://www.sandia.gov/images/1pixel.gif" height=1 width=1></td>
<td ALIGN=RIGHT><img SRC="https://www.sandia.gov/images/1pixel.gif" height=1 width=1></td>
</tr>
<tr VALIGN=BOTTOM BGCOLOR="#006699">
<td ALIGN=LEFT><img SRC="https://www.sandia.gov/images/1pixel.gif" height=1 width=1></td>
<td ALIGN=RIGHT><img SRC="https://www.sandia.gov/images/1pixel.gif" height=1 width=1></td>
</tr>
</table>
&nbsp;</td>
<td VALIGN=TOP WIDTH="20"></td>
</tr>
<tr VALIGN=TOP>
<td COLSPAN="2"></td>
</tr>
<tr ALIGN=LEFT VALIGN=TOP>
<td VALIGN=TOP WIDTH="114"><!----------- 3rd little turquoise bevel button ------------>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="114" BGCOLOR="#00CCFF" >
<tr VALIGN=TOP BGCOLOR="#99FFFF">
<td ALIGN=LEFT><img SRC="https://www.sandia.gov/images/1pixel.gif" height=1 width=1></td>
<td ALIGN=RIGHT><img SRC="https://www.sandia.gov/images/1pixel.gif" height=1 width=1></td>
</tr>
<tr ALIGN=CENTER VALIGN=CENTER>
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="../ug_html/ug.html">
Zoltan User's Guide</a></font></b></td>
</tr>
<tr VALIGN=BOTTOM BGCOLOR="#006699">
<td ALIGN=LEFT><img SRC="https://www.sandia.gov/images/1pixel.gif" height=1 width=1></td>
<td ALIGN=RIGHT><img SRC="https://www.sandia.gov/images/1pixel.gif" height=1 width=1></td>
</tr>
</table>
&nbsp;</td>
<td VALIGN=TOP WIDTH="20"></td>
</tr>
<tr VALIGN=TOP>
<td COLSPAN="2"></td>
</tr>
<tr ALIGN=LEFT VALIGN=TOP>
<td VALIGN=TOP WIDTH="114"><!----------- 4Ath little turquoise bevel button ----
-------->
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="114" BGCOLOR="#00CCFF" >
<tr VALIGN=TOP BGCOLOR="#99FFFF">
<td ALIGN=LEFT><img SRC="https://www.sandia.gov/images/1pixel.gif" height=1 width
=1></td>
<td ALIGN=RIGHT><img SRC="https://www.sandia.gov/images/1pixel.gif" height=1 widt
h=1></td>
</tr>
<tr ALIGN=CENTER VALIGN=CENTER>
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="../Zoltan.html">
Zoltan home page</a></font></b></td>
</tr>
<tr VALIGN=BOTTOM BGCOLOR="#006699">
<td ALIGN=LEFT><img SRC="https://www.sandia.gov/images/1pixel.gif" height=1 width
=1></td>
<td ALIGN=RIGHT><img SRC="https://www.sandia.gov/images/1pixel.gif" height=1 widt
h=1></td>
</tr>
</table>
</td>
<td VALIGN=TOP WIDTH="20"></td>
</tr>
<tr VALIGN=TOP>
<td COLSPAN="2"></td>
</tr>
</table>
&nbsp;</td>
<td VALIGN=TOP><!--MAIN CONTENT AREA STARTS HERE--><!----------------THIS IS A CHANGE AREA----------------><!------HEADER TEXT SHOULD BE REPLACE THIS TEXT------><b><font face="Verdana, Arial, Helvetica"><font size=+2>Zoltan Tutorial</font></font></b><br>
<p>
This tutorial is a quick introduction to Zoltan for new users. You can download the pdf version from the sidebar on the left.
</p>
<!---------------END OF THIS CHANGE AREA---------------><!----------------THIS IS A CHANGE AREA----------------><!--MAIN CONTENT SHOULD BE PLACED IN THE AREA BELOW-->
<!---------------------------------------------------------------------------->
<!---------------------------------------------------------------------------->
<!---------------------------------------------------------------------------->
<!---------------------------------------------------------------------------->
<hr WIDTH="100%">
<!---
<div align=right><b><i>Zoltan Tutorial </i></b></div>
<iframe src=contents/contents.html width=100% height=100%>
-->
<!-----for browsers that don't support frames----------->
<!----
<h4> <a href="contents/contents.html">Go to Tutorial</a></h4>
</iframe>
-->
</body>
</html>