Zoltan is added as thirdParty package
1041
thirdParty/Zoltan/docs/Zoltan.html
vendored
Normal file
527
thirdParty/Zoltan/docs/Zoltan_FAQ.html
vendored
Normal file
@ -0,0 +1,527 @@
|
||||
<!-------- @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="Zoltan.html">
|
||||
<meta NAME="review" content="28 May, 1999">
|
||||
<meta NAME="subject" content="Zoltan Home Page">
|
||||
<meta NAME="sandia.approval_type" content="formal">
|
||||
<meta NAME="sandia.approved" content="SAND99-1375">
|
||||
<meta NAME="sandia.create_date" content="05/28/99">
|
||||
<meta NAME="keywords" content="Zoltan, Zoltan Home Page, Zoltan dynamic load balancing library, Zoltan parallel computing">
|
||||
<meta NAME="description" content="Zoltan: Home Page for the Zoltan Library project at Sandia National Laboratories">
|
||||
<meta NAME="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<title>Zoltan</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-------->
|
||||
<!--------CHANGE THE PAGE OWNER AND EMAIL ADDRESS-------->
|
||||
<link rev="made" title="name of contact" >
|
||||
<!--------CHANGE THE PAGE MAKER AND EMAIL ADDRESS-------->
|
||||
<!--------PLACE FIVE KEY WORDS WITHIN THE QUOTES-------->
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
</head>
|
||||
<body text="#000000">
|
||||
<!-- 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="160" BGCOLOR="#003366">
|
||||
<table BORDER=0 WIDTH="160" valign="top" >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="160"><!--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="160" valign="top" >
|
||||
<!-------------------------------------------------------------------------->
|
||||
<tr ALIGN=LEFT VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="150"><!----------- 0th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan.html">Zoltan
|
||||
Home Page</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 1st little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="ug_html/ug.html">Zoltan
|
||||
User's Guide</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 2nd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="dev_html/dev.html">Zoltan
|
||||
Developer's Guide</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 2A-nd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_FAQ.html">
|
||||
Frequently Asked Questions</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 3rd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_phil.html">Zoltan
|
||||
Project Description</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 4th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_pubs.html">Papers
|
||||
and Presentations</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td VALIGN=TOP WIDTH="20"></td>
|
||||
</tr>
|
||||
|
||||
<!-------------------------------------------------------------------------->
|
||||
<tr ALIGN=LEFT VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="150"><!----------- 4Ath little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_cite.html">How to Cite Zoltan</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 5th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="https://github.com/sandialabs/Zoltan/releases">Download
|
||||
Zoltan</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 6th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_bugreport.html">Report a Zoltan Bug</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 7th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica">
|
||||
<a href="mailto: zoltan-dev@software.sandia.gov">Contact Zoltan Developers</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 8th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica">
|
||||
<a href="https://www.sandia.gov/general/privacy-security/index.html">Sandia Privacy and Security Notice</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td VALIGN=TOP WIDTH="20"></td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td COLSPAN="2"></td>
|
||||
</tr>
|
||||
|
||||
<!-------------------------------------------------------------------------->
|
||||
</table>
|
||||
</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: </font></font></b>
|
||||
<br><b><font face="Verdana, Arial, Helvetica"><font size=+2>Parallel Partitioning, Load Balancing and Data-Management Services
|
||||
<p>
|
||||
Frequently Asked Questions
|
||||
</font></font></b>
|
||||
<p><!---------------END OF THIS CHANGE AREA---------------><!----------------THIS IS A CHANGE AREA----------------><!--MAIN CONTENT SHOULD BE PLACED IN THE AREA BELOW-->
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
|
||||
<hr WIDTH="100%">
|
||||
<p>
|
||||
<ol>
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------ Type questions here; hyperlink to answers below. ---------->
|
||||
<!------------ Keep them in the same order! ---------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<li> <a href="#ZOLTANH">How do I upgrade from the Zoltan v1 interface (in
|
||||
lbi_const.h) to the current Zoltan interface (in zoltan.h)?
|
||||
<li> <a href="#EMPTYPART">Zoltan's hypergraph partitioner
|
||||
is returning empty parts, that is, parts that have zero
|
||||
objects in them. Is this a bug?</a>
|
||||
<li> <a href="#MPILEAK">On some platforms, why do Zoltan partitioning
|
||||
methods RCB and RIB use an increasing amount of memory over multiple
|
||||
invocations?</a>
|
||||
<li> <a href=#INTELF90">Why does compilation of the Fortran interface hang
|
||||
with Intel's F90 compiler?</a>
|
||||
<li> <a href="#MPIRECVLIMIT">During runs (particularly on RedStorm), MPI
|
||||
reports that it is out of resources or too many messages have been posted.
|
||||
What does this mean and what can I do?</a>
|
||||
<li><a href="#MPIRECVLIMIT2">On very large problems,
|
||||
Zoltan communication routines fail in MPI_Alltoallv.
|
||||
Why does this happen and what can I do?</a>
|
||||
<li> <a href="#REALLOCBUG">Realloc fails when there is plenty of memory. Is this a Zoltan bug?</a>
|
||||
<li> <a href="#DEPFILES">What does the following message mean during
|
||||
compilation of <i>zoltan</i>:
|
||||
Makefile:28: mem.d: No such file or directory
|
||||
</ol>
|
||||
<p>
|
||||
<hr WIDTH="100%">
|
||||
<hr WIDTH="100%">
|
||||
<p>
|
||||
<ol>
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------ Type answers here. ---------------->
|
||||
<!------------ Keep them in the same order as list above! ---------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr WIDTH="100%">
|
||||
<li> <a NAME="ZOLTANH"></a>How do I upgrade from the Zoltan v1 interface (in
|
||||
lbi_const.h) to the current Zoltan interface (in zoltan.h)?
|
||||
<p>
|
||||
The Zoltan interface was revised in version 1.3 to include "Zoltan" in
|
||||
function names and defined types. Upgrading to this interface is easy.
|
||||
<ul>
|
||||
<li> Include "zoltan.h" instead of "lbi_const.h" in your source files.
|
||||
<li> For most Zoltan functions and constants, prefix "LB_" is replaced
|
||||
by "Zoltan_"; for example, "LB_Set_Param" is now "Zoltan_Set_Param."
|
||||
A few exceptions exist; for example,
|
||||
"LB_Balance" is Zoltan_LB_Balance; "LB_Free_Data" is "Zoltan_LB_Free_Data."
|
||||
See the <a href="ug_html/ug_backward.html#Backward v1.3">Release v1.3
|
||||
backward compatibility notes</a> for a complete list of name changes.
|
||||
<li> Fortran90 applications should define user-defined data
|
||||
in <i>zoltan_user_data.f90</i> rather than <i>lb_user_const.f90</i>.
|
||||
</ul>
|
||||
More complete details are in the
|
||||
<a href="ug_html/ug_backward.html#Backward v1.3">Release v1.3
|
||||
backward compatibility notes</a>.
|
||||
<hr WIDTH="100%">
|
||||
<li> <a NAME="EMPTYPART"></a>Zoltan's hypergraph partitioner
|
||||
is returning empty parts, that is, parts that have zero
|
||||
objects in them. Is this a bug?
|
||||
<p>
|
||||
The hypergraph partitioner creates partitions with up to a specified amount
|
||||
of load imbalance; the default value is 10% imbalance allowed, but the user
|
||||
can tighten the load imbalance. Any partition that satisfies the load
|
||||
imbalance tolerance is a valid partition. As a secondary goal, the
|
||||
hypergraph partitioner attempts to minimize interprocessor communication.
|
||||
Having a part with zero weight almost certainly reduces total communication;
|
||||
the zero-weight part would not need to communicate with any other part.
|
||||
<p>
|
||||
So in some cases, Zoltan is generating a valid partition -- one that
|
||||
satisfies the imbalance tolerance -- that happens to have lower total
|
||||
communication if one of the parts is empty. This is a good thing, but one
|
||||
that some applications don't like because they didn't consider having zero
|
||||
weight on a processor.
|
||||
<p>
|
||||
To try to avoid this problem, lower the imbalance tolerance so that
|
||||
the partitioner is more likely to give work to all parts. Change the value
|
||||
of Zoltan parameter
|
||||
<a href="ug_html/ug_alg.html#IMBALANCE_TOL">IMBALANCE_TOL</a>
|
||||
to a smaller value; e.g., 1.03 to allow only 3% imbalance: <br>
|
||||
<a href="ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a>(zz, "IMBALANCE_TOL", "1.03");
|
||||
<p>
|
||||
As an alternative, you may try one of Zoltan geometric methods, such as
|
||||
<a href="ug_html/ug_alg_rcb.html">RCB</a>,
|
||||
<a href="ug_html/ug_alg_rib.html">RIB</a> or
|
||||
<a href="ug_html/ug_alg_hsfc.html">HSFC</a>, which do not have this property.
|
||||
<p>
|
||||
We may in the future add a parameter to disallow zero-weight parts, but at
|
||||
present, we do not have that option.
|
||||
|
||||
<hr WIDTH="100%">
|
||||
<li> <a NAME="MPILEAK"></a>On some platforms, why do Zoltan partitioning
|
||||
methods RCB and RIB use an increasing amount of memory over multiple
|
||||
invocations?
|
||||
<p>
|
||||
Zoltan partitioning methods RCB and RIB use MPI_Comm_dup and MPI_Comm_split
|
||||
to recursively create communicators with subsets of processors.
|
||||
Some implementations of
|
||||
MPI (e.g., the default MPI on Sandia's Thunderbird cluster) do not correctly
|
||||
release memory associated with these communicators during MPI_Comm_free,
|
||||
resulting in growing memory use over multiple invocations of RCB or RIB.
|
||||
An undocumented workaround in
|
||||
Zoltan is to set the TFLOPS_SPECIAL parameter to 1 (e.g.,
|
||||
<a href="ug_html/ug_interface_init.html#Zoltan_Set_Param"><b>Zoltan_Set_Param</b></a>(zz,"TFLOPS_SPECIAL","1");), which causes an
|
||||
implementation that doesn't use MPI_Comm_split to be invoked.
|
||||
|
||||
<hr WIDTH="100%">
|
||||
<li> <a NAME=INTELF90"></a>Why does compilation of the Fortran interface hang
|
||||
with Intel's F90 compiler?
|
||||
<p>
|
||||
There is a bug in some versions of Intel's F90 compiler. We know
|
||||
Zoltan's Fortran interface compiles with Intel's F90 compiler versions
|
||||
10.1.015 through 11.1.056. We know that it does not compile with
|
||||
versions 11.1.059, 11.1.069 and 11.1.072. We reported the problem to
|
||||
Intel, and we are told that the compiler bug is fixed in version 11.1 update 7,
|
||||
which is scheduled for release in August 2010. See this
|
||||
<a href="https://software.intel.com/en-us/forums/showthread.php?t=75385">Intel
|
||||
Forum link</a> for more details.
|
||||
|
||||
<hr WIDTH="100%">
|
||||
<li><a NAME="MPIRECVLIMIT"></a>During runs (particularly on RedStorm), MPI
|
||||
reports that it is out of resources or too many messages have been posted.
|
||||
What does this mean and what can I do?
|
||||
<p>
|
||||
Some implementations of MPI (including RedStorm's implementation) limit
|
||||
the number of message receives that can be posted simultaneously. Some
|
||||
communications in Zoltan (including hashing of IDs to processors in the
|
||||
Zoltan Distributed Data Directory) can require messages from large numbers
|
||||
of processors, triggering this error on certain platforms.
|
||||
<p>
|
||||
To avoid this problem, Zoltan contains logic to use AllToAll communication
|
||||
instead of point-to-point communication when a large number
|
||||
of receives are needed. The maximum number of simultaneous receives allowed
|
||||
can be set as a compile-time option to Zoltan.
|
||||
In the <a href="ug_html/ug_usage.html#TrilinosAutotools">Autotool build
|
||||
environment</a>, option <i>--enable-mpi-recv-limit=#</i> sets the
|
||||
maximum number of simultaneous receives allowed. The default value is 4.
|
||||
|
||||
<hr WIDTH="100%">
|
||||
<li><a NAME="MPIRECVLIMIT2"></a>On very large problems,
|
||||
Zoltan communication routines fail in MPI_Alltoallv.
|
||||
Why does this happen and what can I do?
|
||||
<p>
|
||||
For very large problems, the values in the displacement arrays needed
|
||||
by MPI_Alltoallv can exceed INT_MAX (the largest integer that can be stored
|
||||
in 32 bits). The solution to this problem is to make Zoltan avoid using
|
||||
MPI_Alltoallv and, instead, use point-to-point sends and receives. The
|
||||
compile-time option
|
||||
in the <a href="ug_html/ug_usage.html#TrilinosAutotools">Autotool build
|
||||
environment</a> is <i>--enable-mpi-recv-limit=0</i>.
|
||||
|
||||
|
||||
<hr WIDTH="100%">
|
||||
<li> <a NAME="REALLOCBUG"></a>Realloc fails when there is plenty of memory. Is this a Zoltan bug?
|
||||
<p>
|
||||
This problem has been noted on different Linux clusters running parallel
|
||||
applications using different MPI libraries and C++ libraries.
|
||||
Realloc fails where a malloc call will succeed. The source of the error has
|
||||
not been identified, but it is not a Zoltan bug. The
|
||||
solution is to compile Zoltan with the flag <b>-DREALLOC_BUG</b>.
|
||||
Zoltan will replace
|
||||
every realloc call with malloc followed by a memcpy and a free.
|
||||
|
||||
<hr WIDTH="100%">
|
||||
<li> <a NAME="DEPFILES"></a>What does the following message mean during
|
||||
compilation of Zoltan?<br>
|
||||
Makefile:28: mem.d: No such file or directory</blockquote>
|
||||
<p>
|
||||
In the old "manual" build system for Zoltan, dependency files were
|
||||
generated for each source file <i>filename</i>.c. The first time Zoltan
|
||||
was built for a given platform, the dependency files do not exist.
|
||||
After producing this
|
||||
warning, gmake created the dependency files it needed and continued
|
||||
compilation.
|
||||
<p>
|
||||
Newer versions of Zoltan use autotools or cmake for builds and, thus, do
|
||||
not produce this warning.
|
||||
</ol>
|
||||
|
||||
<p>
|
||||
<hr WIDTH="100%">
|
||||
Updated: August 2, 2010
|
||||
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr WIDTH="100%">
|
||||
Copyright (c) 2000-2012, Sandia National Laboratories. <br>
|
||||
<hr WIDTH="100%">
|
||||
|
||||
<!---------MAIN CONTENT AREA ENDS HERE---------><!-- CHANGE CONTACT + E-MAIL, NOTE "SUBJECT" IN E-MAIL CODE --></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr width="100%">
|
||||
<table BORDER=0 WIDTH="100%" >
|
||||
<tr ALIGN=CENTER>
|
||||
<td VALIGN=TOP WIDTH="140">
|
||||
<table BORDER=0 WIDTH="140" >
|
||||
<tr>
|
||||
<td ALIGN=CENTER VALIGN=TOP WIDTH="120"></td>
|
||||
|
||||
<td WIDTH="20"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td ALIGN=CENTER VALIGN=TOP WIDTH="100%"></td>
|
||||
</tr>
|
||||
</table>
|
||||
<!--Image maps below-->
|
||||
<map NAME="shortMap">
|
||||
<area shape="rect" coords="2,2,108,14"href="https://www.sandia.gov/about/index.html"></area>
|
||||
<area shape="rect" coords="2,19,108,31"href="https://www.sandia.gov/mission/ste/index.html"></area>
|
||||
<area shape="rect" coords="2,36,108,48"href="https://www.sandia.gov/mission/index.html"></area>
|
||||
<area shape="rect" coords="2,53,108,65"href="https://www.sandia.gov/contact-us/index.html"></area>
|
||||
<area shape="rect" coords="2,70,108,82"href="https://www.sandia.gov/news/index.html"></area>
|
||||
<area shape="rect" coords="2,87,108,99"href="https://www.sandia.gov/search/index.html"></area>
|
||||
<area shape="rect" coords="2,104,108,116"href="https://www.sandia.gov/Main.html"></area>
|
||||
</map>
|
||||
<!----------------THIS IS A CHANGE AREA---------------->
|
||||
<!----NAME AND DATE OF LAST REVISION SHOULD BE HERE---->
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
</body>
|
||||
</html>
|
338
thirdParty/Zoltan/docs/Zoltan_bugreport.html
vendored
Normal file
@ -0,0 +1,338 @@
|
||||
<!-------- @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="Zoltan.html">
|
||||
<meta name="review" content="28 May, 1999">
|
||||
<meta name="subject" content="Zoltan Home Page">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND99-1375">
|
||||
<meta name="sandia.create_date" content="05/28/99">
|
||||
<meta name="keywords" content="Zoltan, Zoltan Home Page, Zoltan dynamic load balancing library, Zoltan parallel computing">
|
||||
<meta name="description" content="Zoltan: Home Page for the Zoltan Library project at Sandia National Laboratories">
|
||||
<meta name="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<title>Zoltan</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-------->
|
||||
<!--------CHANGE THE PAGE OWNER AND EMAIL ADDRESS-------->
|
||||
<link rev="made" title="name of contact" >
|
||||
<!--------CHANGE THE PAGE MAKER AND EMAIL ADDRESS-------->
|
||||
<!--------PLACE FIVE KEY WORDS WITHIN THE QUOTES-------->
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
</head>
|
||||
<body text="#000000">
|
||||
<!-- 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="160" BGCOLOR="#003366">
|
||||
<table BORDER=0 WIDTH="160" valign="top" >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="160"><!--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="160" valign="top" >
|
||||
<!-------------------------------------------------------------------------->
|
||||
<tr ALIGN=LEFT VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="150"><!----------- 0th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan.html">Zoltan
|
||||
Home Page</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 1st little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="ug_html/ug.html">Zoltan
|
||||
User's Guide</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 2nd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="dev_html/dev.html">Zoltan
|
||||
Developer's Guide</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 2A-nd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_FAQ.html">
|
||||
Frequently Asked Questions</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 3rd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_phil.html">Zoltan
|
||||
Project Description</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 4th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_pubs.html">Papers
|
||||
and Presentations</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td VALIGN=TOP WIDTH="20"></td>
|
||||
</tr>
|
||||
|
||||
<!-------------------------------------------------------------------------->
|
||||
<tr ALIGN=LEFT VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="150"><!----------- 4Ath little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_cite.html">How to Cite Zoltan</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 5th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="https://github.com/sandialabs/Zoltan/releases">Download
|
||||
Zoltan</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 6th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_bugreport.html">Report a Zoltan Bug</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 7th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica">
|
||||
<a href="mailto: zoltan-dev@software.sandia.gov">Contact Zoltan Developers</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td VALIGN=TOP WIDTH="20"></td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td COLSPAN="2"></td>
|
||||
</tr>
|
||||
<!-------------------------------------------------------------------------->
|
||||
</table>
|
||||
</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:
|
||||
</font></font></b>
|
||||
<br>
|
||||
<b><font face="Verdana, Arial, Helvetica"><font size=+2>
|
||||
Data-Management Services for Parallel Applications
|
||||
</font></font></b>
|
||||
<p>
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
<!----------------THIS IS A CHANGE AREA---------------->
|
||||
<!--MAIN CONTENT SHOULD BE PLACED IN THE AREA BELOW-->
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<b><font face="Verdana, Arial, Helvetica"><font size=+2>
|
||||
Reporting Zoltan Bugs
|
||||
</font></font></b>
|
||||
<hr>
|
||||
|
||||
The Zoltan team uses Trilinos' <a href="https://github.com/trilinos/Trilinos">Github</a> to
|
||||
collect bug reports.
|
||||
In your bug reports, please mention "@trilinos/zoltan" so that your bug report
|
||||
is sent to Zoltan developers.
|
||||
<p>
|
||||
|
||||
|
||||
<hr WIDTH="100%">
|
||||
|
||||
<!---------MAIN CONTENT AREA ENDS HERE---------><!-- CHANGE CONTACT + E-MAIL, NOTE "SUBJECT" IN E-MAIL CODE --></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr width="100%">
|
||||
<table BORDER=0 WIDTH="100%" >
|
||||
<tr ALIGN=CENTER>
|
||||
<td VALIGN=TOP WIDTH="140">
|
||||
<table BORDER=0 WIDTH="140" >
|
||||
<tr>
|
||||
<td ALIGN=CENTER VALIGN=TOP WIDTH="120"></td>
|
||||
|
||||
<td WIDTH="20"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td ALIGN=CENTER VALIGN=TOP WIDTH="100%"></td>
|
||||
</tr>
|
||||
</table>
|
||||
<!--Image maps below-->
|
||||
<map name="shortMap">
|
||||
<area shape="rect" coords="2,2,108,14"href="https://www.sandia.gov/about/index.html"></area>
|
||||
<area shape="rect" coords="2,19,108,31"href="https://www.sandia.gov/mission/ste/index.html"></area>
|
||||
<area shape="rect" coords="2,36,108,48"href="https://www.sandia.gov/mission/index.html"></area>
|
||||
<area shape="rect" coords="2,53,108,65"href="https://www.sandia.gov/contact-us/index.html"></area>
|
||||
<area shape="rect" coords="2,70,108,82"href="https://www.sandia.gov/news/index.html"></area>
|
||||
<area shape="rect" coords="2,87,108,99"href="https://www.sandia.gov/search/index.html"></area>
|
||||
<area shape="rect" coords="2,104,108,116"href="https://www.sandia.gov/Main.html"></area>
|
||||
</map>
|
||||
<!----------------THIS IS A CHANGE AREA---------------->
|
||||
<!----NAME AND DATE OF LAST REVISION SHOULD BE HERE---->
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
</body>
|
||||
</html>
|
437
thirdParty/Zoltan/docs/Zoltan_cite.html
vendored
Normal file
@ -0,0 +1,437 @@
|
||||
<!-------- @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="Zoltan.html">
|
||||
<meta name="review" content="28 May, 1999">
|
||||
<meta name="subject" content="Zoltan Home Page">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND99-1375">
|
||||
<meta name="sandia.create_date" content="05/28/99">
|
||||
<meta name="keywords" content="Zoltan, Zoltan Home Page, Zoltan dynamic load balancing library, Zoltan parallel computing">
|
||||
<meta name="description" content="Zoltan: Home Page for the Zoltan Library project at Sandia National Laboratories">
|
||||
<meta name="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<title>Zoltan</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-------->
|
||||
<!--------CHANGE THE PAGE OWNER AND EMAIL ADDRESS-------->
|
||||
<link rev="made" title="name of contact" >
|
||||
<!--------CHANGE THE PAGE MAKER AND EMAIL ADDRESS-------->
|
||||
<!--------PLACE FIVE KEY WORDS WITHIN THE QUOTES-------->
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
</head>
|
||||
<body text="#000000">
|
||||
<!-- 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="160" BGCOLOR="#003366">
|
||||
<table BORDER=0 WIDTH="160" valign="top" >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="160"><!--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="160" valign="top" >
|
||||
<!-------------------------------------------------------------------------->
|
||||
<tr ALIGN=LEFT VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="150"><!----------- 0th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan.html">Zoltan
|
||||
Home Page</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 1st little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="ug_html/ug.html">Zoltan
|
||||
User's Guide</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 2nd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="dev_html/dev.html">Zoltan
|
||||
Developer's Guide</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 2A-nd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_FAQ.html">
|
||||
Frequently Asked Questions</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 3rd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_phil.html">Zoltan
|
||||
Project Description</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 4th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_pubs.html">Papers
|
||||
and Presentations</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td VALIGN=TOP WIDTH="20"></td>
|
||||
</tr>
|
||||
|
||||
<!-------------------------------------------------------------------------->
|
||||
<tr ALIGN=LEFT VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="150"><!----------- 4Ath little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_cite.html">How to Cite Zoltan</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 5th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="https://github.com/sandialabs/Zoltan/releases">Download
|
||||
Zoltan</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 6th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_bugreport.html">Report a Zoltan Bug</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 7th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica">
|
||||
<a href="mailto: zoltan-dev@software.sandia.gov">Contact Zoltan Developers</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td VALIGN=TOP WIDTH="20"></td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td COLSPAN="2"></td>
|
||||
</tr>
|
||||
<!-------------------------------------------------------------------------->
|
||||
</table>
|
||||
</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:
|
||||
</font></font></b>
|
||||
<br>
|
||||
<b><font face="Verdana, Arial, Helvetica"><font size=+2>
|
||||
Data-Management Services for Parallel Applications
|
||||
</font></font></b>
|
||||
<p>
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
<!----------------THIS IS A CHANGE AREA---------------->
|
||||
<!--MAIN CONTENT SHOULD BE PLACED IN THE AREA BELOW-->
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<b><font face="Verdana, Arial, Helvetica"><font size=+2>
|
||||
How to Cite Zoltan
|
||||
</font></font></b><br>
|
||||
<hr>
|
||||
<!---------------------------------------------------------------------------->
|
||||
|
||||
<p>
|
||||
Please use (at least) one of the following references when you cite Zoltan:
|
||||
|
||||
<p>
|
||||
<small>
|
||||
@Article{<b>ZoltanIsorropiaOverview2012</b>,<br>
|
||||
author = {E. G. Boman and U. V. Catalyurek and C. Chevalier and K. D. Devine}, <br>
|
||||
title = {The {Z}oltan and {I}sorropia Parallel Toolkits for Combinatorial Scientific Computing: Partitioning, Ordering, and Coloring}, <br>
|
||||
journal = {Scientific Programming}, <br>
|
||||
year = {2012}, <br>
|
||||
volume = {20}, <br>
|
||||
number = {2}, <br>
|
||||
pages = {129--150} <br>
|
||||
} <br>
|
||||
</small>
|
||||
|
||||
<p>
|
||||
<small>
|
||||
@Article{<b>ZoltanOverviewArticle2002</b>,<br>
|
||||
author = {Karen Devine and Erik Boman and Robert Heaphy and
|
||||
Bruce Hendrickson and Courtenay Vaughan}, <br>
|
||||
title = {{Zoltan} Data Management Services for Parallel
|
||||
Dynamic Applications}, <br>
|
||||
journal = {Computing in Science and Engineering}, <br>
|
||||
year = {2002}, <br>
|
||||
volume = {4}, <br>
|
||||
number = {2}, <br>
|
||||
pages = {90--97} <br>
|
||||
} <br>
|
||||
</small>
|
||||
|
||||
<p>
|
||||
<small>
|
||||
@Unpublished{<b>ZoltanHomePage</b>,<br>
|
||||
author = {Erik Boman and Karen Devine and Lee Ann Fisk and
|
||||
Robert Heaphy and Bruce Hendrickson and Vitus Leung
|
||||
and Courtenay Vaughan and Umit Catalyurek and
|
||||
Doruk Bozdag and William Mitchell},<br>
|
||||
title = {{Zoltan} home page},<br>
|
||||
note = {\url{http://cs.sandia.gov/Zoltan}},<br>
|
||||
year = {1999}}<br>
|
||||
}<br>
|
||||
</small>
|
||||
|
||||
<p>
|
||||
<small>
|
||||
@Manual{<b>ZoltanUsersGuideV3</b>,<br>
|
||||
title = {{Zoltan 3.0}: Parallel Partitioning, Load-balancing, and Data Management Services; User's Guide},<br>
|
||||
author = {Erik Boman and Karen Devine and Lee Ann Fisk and
|
||||
Robert Heaphy and Bruce Hendrickson and
|
||||
Courtenay Vaughan and Umit Catalyurek and
|
||||
Doruk Bozdag and William Mitchell and James Teresco},<br>
|
||||
organization = {Sandia National Laboratories},<br>
|
||||
address = {Albuquerque, NM},<br>
|
||||
year = {2007},<br>
|
||||
note = {Tech. Report SAND2007-4748W
|
||||
\url{http://cs.sandia.gov/Zoltan/ug_html/ug.html}}<br>
|
||||
}<br>
|
||||
</small>
|
||||
|
||||
<p>
|
||||
<small>
|
||||
@Manual{<b>ZoltanDevelopersGuideV3</b>,<br>
|
||||
title = {{Zoltan 3.0}: Parallel Partitioning, Load-balancing, and Data Management Services; Developer's Guide},<br>
|
||||
author = {Erik Boman and Karen Devine and Lee Ann Fisk and
|
||||
Robert Heaphy and Bruce Hendrickson and
|
||||
Courtenay Vaughan and Umit Catalyurek and
|
||||
Doruk Bozdag and William Mitchell and James Teresco},<br>
|
||||
organization = {Sandia National Laboratories},<br>
|
||||
address = {Albuquerque, NM},<br>
|
||||
year = {2007},<br>
|
||||
note = {Tech. Report SAND2007-4749W,
|
||||
\url{http://cs.sandia.gov/Zoltan/dev_html/dev.html}}<br>
|
||||
}<br>
|
||||
</small>
|
||||
|
||||
<p>
|
||||
<small>
|
||||
@Inproceedings{<b>ZoltanHypergraphIPDPS06</b>,<br>
|
||||
title = {Parallel Hypergraph Partitioning for
|
||||
Scientific Computing},<br>
|
||||
author = {Karen D. Devine and Erik G. Boman and
|
||||
Robert T. Heaphy and Rob H. Bisseling
|
||||
and Umit V. Catalyurek},<br>
|
||||
conference = {IPDPS'06},<br>
|
||||
publisher = {IEEE},<br>
|
||||
year = {2006}<br>
|
||||
}<br>
|
||||
</small>
|
||||
|
||||
<p>
|
||||
<small>
|
||||
@Inproceedings{<b>ZoltanParHypRepart07</b>,<br>
|
||||
title = {Hypergraph-based Dynamic Load Balancing for Adaptive
|
||||
Scientific Computations},<br>
|
||||
author = {U.V. Catalyurek and E.G. Boman and K.D. Devine
|
||||
and D. Bozdag and R.T. Heaphy and L.A. Riesen},<br>
|
||||
booktitle = {Proc. of 21st International Parallel and
|
||||
Distributed Processing Symposium (IPDPS'07)},<br>
|
||||
publisher = {IEEE},<br>
|
||||
year = {2007},<br>
|
||||
note = {Best Algorithms Paper Award.}<br>
|
||||
}<br>
|
||||
</small>
|
||||
<p>
|
||||
|
||||
<hr>
|
||||
<!---------MAIN CONTENT AREA ENDS HERE---------><!-- CHANGE CONTACT + E-MAIL, NOTE "SUBJECT" IN E-MAIL CODE --></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr width="100%">
|
||||
<table BORDER=0 WIDTH="100%" >
|
||||
<tr ALIGN=CENTER>
|
||||
<td VALIGN=TOP WIDTH="140">
|
||||
<table BORDER=0 WIDTH="140" >
|
||||
<tr>
|
||||
<td ALIGN=CENTER VALIGN=TOP WIDTH="120"></td>
|
||||
|
||||
<td WIDTH="20"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td ALIGN=CENTER VALIGN=TOP WIDTH="100%"></td>
|
||||
</tr>
|
||||
</table>
|
||||
<!--Image maps below-->
|
||||
<map name="shortMap">
|
||||
<area shape="rect" coords="2,2,108,14"href="https://www.sandia.gov/about/index.html"></area>
|
||||
<area shape="rect" coords="2,19,108,31"href="https://www.sandia.gov/mission/ste/index.html"></area>
|
||||
<area shape="rect" coords="2,36,108,48"href="https://www.sandia.gov/mission/index.html"></area>
|
||||
<area shape="rect" coords="2,53,108,65"href="https://www.sandia.gov/contact-us/index.html"></area>
|
||||
<area shape="rect" coords="2,70,108,82"href="https://www.sandia.gov/news/index.html"></area>
|
||||
<area shape="rect" coords="2,87,108,99"href="https://www.sandia.gov/search/index.html"></area>
|
||||
<area shape="rect" coords="2,104,108,116"href="https://www.sandia.gov/Main.html"></area>
|
||||
</map>
|
||||
<!----------------THIS IS A CHANGE AREA---------------->
|
||||
<!----NAME AND DATE OF LAST REVISION SHOULD BE HERE---->
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
</body>
|
||||
</html>
|
344
thirdParty/Zoltan/docs/Zoltan_construction.html
vendored
Normal file
@ -0,0 +1,344 @@
|
||||
<!-------- @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="Zoltan.html">
|
||||
<meta name="review" content="28 May, 1999">
|
||||
<meta name="subject" content="Zoltan Home Page">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND99-1375">
|
||||
<meta name="sandia.create_date" content="05/28/99">
|
||||
<meta name="keywords" content="Zoltan, Zoltan Home Page, Zoltan dynamic load balancing library, Zoltan parallel computing">
|
||||
<meta name="description" content="Zoltan: Home Page for the Zoltan Library project at Sandia National Laboratories">
|
||||
<meta name="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<title>Zoltan</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="http://www.sandia.gov/html_schema.htm">
|
||||
<!--------CHANGE THE SAND NUMBER INFO-------->
|
||||
<!--------INSERT THE DATE DOCUMENT CREATED-------->
|
||||
<!--------CHANGE THE PAGE OWNER AND EMAIL ADDRESS-------->
|
||||
<link rev="made" title="name of contact" >
|
||||
<!--------CHANGE THE PAGE MAKER AND EMAIL ADDRESS-------->
|
||||
<!--------PLACE FIVE KEY WORDS WITHIN THE QUOTES-------->
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
</head>
|
||||
<body text="#000000">
|
||||
<!-- 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="160" BGCOLOR="#003366">
|
||||
<table BORDER=0 WIDTH="160" valign="top" >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="160"><!--SANDIA LOGO AT TOP LEFT-->
|
||||
<a href="http://www.sandia.gov/Main.html"><img SRC="http://www.sandia.gov/images/snlstkdc.gif" ALT="[Sandia National Laboratories]" BORDER=0 valign="top" height=49 width=126></a>
|
||||
<p><img ISMAP SRC="http://www.sandia.gov/images/labelNEW.gif" ALT="[navigation panel]" HSPACE=2 BORDER=0 usemap="#shortMap" height=119 width=111></td>
|
||||
|
||||
<td><img SRC="http://www.sandia.gov/images/1pixel.gif" BORDER=0 height=1 width=10></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table BORDER=0 WIDTH="160" valign="top" >
|
||||
<!-------------------------------------------------------------------------->
|
||||
<tr ALIGN=LEFT VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="150"><!----------- 0th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan.html">Zoltan
|
||||
Home Page</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 1st little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="ug_html/ug.html">Zoltan
|
||||
User's Guide</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 2nd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="dev_html/dev.html">Zoltan
|
||||
Developer's Guide</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 3rd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_phil.html">Zoltan
|
||||
Project Description</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 4th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_pubs.html">Papers
|
||||
and Presentations</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td VALIGN=TOP WIDTH="20"></td>
|
||||
</tr>
|
||||
|
||||
<!-------------------------------------------------------------------------->
|
||||
<tr ALIGN=LEFT VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="150"><!----------- 4Ath little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_cite.html">How to Cite Zoltan</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 5th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="http://www.cs.sandia.gov/~web1400/1400_download.html">Download
|
||||
Zoltan</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 6th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_bugreport.html">Report a Zoltan Bug</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 7th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica">
|
||||
<a href="mailto: zoltan-dev@software.sandia.gov">Contact Zoltan Developers</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td VALIGN=TOP WIDTH="20"></td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td COLSPAN="2"></td>
|
||||
</tr>
|
||||
<!-------------------------------------------------------------------------->
|
||||
</table>
|
||||
</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:
|
||||
</font></font></b>
|
||||
<br>
|
||||
<b><font face="Verdana, Arial, Helvetica"><font size=+2>
|
||||
Data-Management Services for Parallel Applications
|
||||
</font></font></b>
|
||||
<p>
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
<!----------------THIS IS A CHANGE AREA---------------->
|
||||
<!--MAIN CONTENT SHOULD BE PLACED IN THE AREA BELOW-->
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr WIDTH="100%">
|
||||
<p>
|
||||
<b> The Zoltan Team </b><br>
|
||||
<b> Sandia National Laboratories: </b><br>
|
||||
<a href="http://www-sccm.stanford.edu/~boman/">Erik Boman</a> <br>
|
||||
<a href="http://www.cs.sandia.gov/~kddevin">Karen Devine</a><br>
|
||||
Lee Ann Fisk<br>
|
||||
Robert Heaphy<br>
|
||||
<a href="http://www.cs.sandia.gov/~bahendr">Bruce Hendrickson</a></b><br>
|
||||
Courtenay Vaughan<br>
|
||||
<br>
|
||||
<b> Ohio State University</b><br>
|
||||
<a href="http://bmi.osu.edu/personnel/detail.cfm?id=29">Umit Catalyurek</a><br>
|
||||
Doruk Bozdag<br>
|
||||
<br>
|
||||
<b>National Institute of Standards and Technology</b><br>
|
||||
<a href="http://math.nist.gov/~mitchell">William F. Mitchell</a><br>
|
||||
<p>
|
||||
<p>
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr width="100%">
|
||||
|
||||
<b>Zoltan is temporarily unavailable in preparation for a new release.
|
||||
</b> <br>
|
||||
We expect the new release to be completed by October 13, 2006.
|
||||
If you would like an email notification of the new release, please
|
||||
join the zoltan-announce mailing list at
|
||||
<a href="http://software.sandia.gov/mailman/listinfo/zoltan-announce">http://software.sandia.gov/mailman/listinfo/zoltan-announce</a>.
|
||||
<p>
|
||||
Thank you for your patience.
|
||||
<p>
|
||||
|
||||
<b>For more information, contact:</b>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="mailto: kddevin@sandia.gov">Karen Devine</a></li>
|
||||
|
||||
</ul>
|
||||
<!---------MAIN CONTENT AREA ENDS HERE---------><!-- CHANGE CONTACT + E-MAIL, NOTE "SUBJECT" IN E-MAIL CODE --></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr width="100%">
|
||||
<table BORDER=0 WIDTH="100%" >
|
||||
<tr ALIGN=CENTER>
|
||||
<td VALIGN=TOP WIDTH="140">
|
||||
<table BORDER=0 WIDTH="140" >
|
||||
<tr>
|
||||
<td ALIGN=CENTER VALIGN=TOP WIDTH="120"></td>
|
||||
|
||||
<td WIDTH="20"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td ALIGN=CENTER VALIGN=TOP WIDTH="100%"></td>
|
||||
</tr>
|
||||
</table>
|
||||
<!--Image maps below-->
|
||||
<map name="shortMap">
|
||||
<area shape="rect" coords="2,2,108,14"href="http://www.sandia.gov/about/index.html"></area>
|
||||
<area shape="rect" coords="2,19,108,31"href="http://www.sandia.gov/mission/ste/index.html"></area>
|
||||
<area shape="rect" coords="2,36,108,48"href="http://www.sandia.gov/mission/index.html"></area>
|
||||
<area shape="rect" coords="2,53,108,65"href="http://www.sandia.gov/contact-us/index.html"></area>
|
||||
<area shape="rect" coords="2,70,108,82"href="http://www.sandia.gov/news/index.html"></area>
|
||||
<area shape="rect" coords="2,87,108,99"href="http://www.sandia.gov/search/index.html"></area>
|
||||
<area shape="rect" coords="2,104,108,116"href="http://www.sandia.gov/Main.html"></area>
|
||||
</map>
|
||||
<!----------------THIS IS A CHANGE AREA---------------->
|
||||
<!----NAME AND DATE OF LAST REVISION SHOULD BE HERE---->
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
</body>
|
||||
</html>
|
241
thirdParty/Zoltan/docs/Zoltan_download.html
vendored
Normal file
@ -0,0 +1,241 @@
|
||||
<!-------- @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="index.html">
|
||||
<meta name="subject" content="Zoltan Download Page">
|
||||
<meta name="review" content="28 May, 1999">
|
||||
<meta name="subject" content="Zoltan Home Page">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND99-1375">
|
||||
<meta name="sandia.create_date" content="05/28/99"
|
||||
<meta name="keywords" content="Zoltan, software, load balancing">
|
||||
<meta name="description" content="Software Page for the Zoltan Project at Sandia National Laboratories">
|
||||
<meta name="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]"><title>Zoltan Download Page</title>
|
||||
|
||||
<link rel="schema.sandia" href="https://www.sandia.gov/html_schema.htm">
|
||||
<link rev="owns" title="Karen D. Devine" href="mailto:kddevin@sandia.gov">
|
||||
<link rev="made" title="Karen D. Devine" href="mailto:kddevin@sandia.gov"></head><body text="#000000">
|
||||
<!-- 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 valign="top" border="0">
|
||||
<tbody><tr valign="top">
|
||||
<td ="" valign="top" width="160" BGCOLOR="#003366">
|
||||
<table valign="top" border="0" width="160">
|
||||
<tbody><tr valign="top">
|
||||
<td valign="top" width="160">
|
||||
<!--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]" valign="top" border="0" height="49" width="126"></a>
|
||||
<p><img ismap="ismap" src="https://www.sandia.gov/images/labelNEW.gif" alt="[navigation panel]" usemap="#shortMap" border="0" height="119" hspace="2" width="111"></p></td>
|
||||
|
||||
<td><img src="https://www.sandia.gov/images/1pixel.gif" border="0" height="1" width="10"></td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
<table valign="top" border="0" width="160">
|
||||
|
||||
<!-- turquoise navigation buttons on left under the Sandia menu -->
|
||||
|
||||
<tr ALIGN=LEFT VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="150"><!----------- 0th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan.html">Zoltan
|
||||
Home Page</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 7th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica">
|
||||
<a href="mailto: zoltan-dev@software.sandia.gov">Contact Zoltan Developers</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td VALIGN=TOP WIDTH="20"></td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td COLSPAN="2"></td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</td>
|
||||
|
||||
|
||||
<td valign="top"><!--MAIN CONTENT AREA STARTS HERE-->
|
||||
<b><font face="Verdana, Arial, Helvetica"><font size="+2">Zoltan Download Page</font></font></b>
|
||||
<p>
|
||||
|
||||
</p><hr width="100%">
|
||||
|
||||
<p><b>NOTE:</b> If you have not registered yet, please take a moment
|
||||
to do so at the <a href="http://cs.sandia.gov/web1400/1400_download.html">
|
||||
<b>Download Registration Form</b></a> (Note: this information is only used to
|
||||
provide usage statistics to our program sponsors).</p><p>
|
||||
|
||||
</p><hr>
|
||||
|
||||
<h3>Join the Mailing Lists</h3>
|
||||
|
||||
If you haven't done so already,
|
||||
we recommend you subscribe to these mailing lists:
|
||||
<ul>
|
||||
<li> <a href="https://software.sandia.gov/mailman/listinfo/zoltan-announce">zoltan-announce</a> is used for announcement of Zoltan news, such as new releases.
|
||||
</li><li> <a href="https://software.sandia.gov/mailman/listinfo/zoltan-users">zoltan-users</a> is a community forum for discussion of issues related to Zoltan.
|
||||
</li></ul>
|
||||
<p>
|
||||
|
||||
</p><hr>
|
||||
<p>
|
||||
|
||||
<h3>Zoltan Releases for Download</h3>
|
||||
|
||||
The most current version of Zoltan is always available in the
|
||||
<a href="https://trilinos.github.io/">Trilinos</a> framework.
|
||||
You can download
|
||||
Trilinos <a href="https://github.com/trilinos/Trilinos">here</a>.
|
||||
In the Trilinos directory, the Zoltan code is in directory
|
||||
Trilinos/packages/zoltan. In this directory, you can continue to
|
||||
build Zoltan separately from Trilinos.
|
||||
<p>
|
||||
|
||||
Stand-alone versions of Zoltan are available below.
|
||||
We recommend the latest version.
|
||||
For more details, see the
|
||||
Zoltan <a href="ug_html/ug_release.html">release notes</a>.
|
||||
|
||||
<ul>
|
||||
<li> <a href="http://cs.sandia.gov/Zoltan/Zoltan_Distributions/zoltan_distrib_v3.83.tar.gz">Version 3.83</a> (1/28/16; as in Trilinos v12.6; aaf328db7e43001ee2d3148f72f12147e51c3293) </li>
|
||||
<!------
|
||||
<li> <a href="http://cs.sandia.gov/Zoltan/Zoltan_Distributions/zoltan_distrib_v3.82.tar.gz">Version 3.82</a> (5/1/15; as in Trilinos v12) </li>
|
||||
<li> <a href="http://cs.sandia.gov/Zoltan/Zoltan_Distributions/zoltan_distrib_v3.81.tar.gz">Version 3.81</a> (11/06/14; as in Trilinos v11.12.2) </li>
|
||||
<li> <a href="http://cs.sandia.gov/Zoltan/Zoltan_Distributions/zoltan_distrib_v3.8.tar.gz">Version 3.8</a> (10/28/13; as in Trilinos v10.11) </li>
|
||||
<li> <a href="http://cs.sandia.gov/Zoltan/Zoltan_Distributions/zoltan_distrib_v3.6.tar.gz">Version 3.6</a> (11/2/11; as in Trilinos v10.8) </li>
|
||||
<li> <a href="http://cs.sandia.gov/Zoltan/Zoltan_Distributions/zoltan_distrib_v3.501.tar.gz">Version 3.501</a> (5/12/11; as in Trilinos v10.6 with additions) </li>
|
||||
<li> <a href="http://cs.sandia.gov/Zoltan/Zoltan_Distributions/zoltan_distrib_v3.3.tar.gz">Version 3.3</a> (7/31/10; as in Trilinos v10.4) </li>
|
||||
<li> <a href="http://cs.sandia.gov/Zoltan/Zoltan_Distributions/zoltan_distrib_v3.2.tar.gz">Version 3.2</a> (10/5/09) </li>
|
||||
<li> <a href="http://cs.sandia.gov/Zoltan/Zoltan_Distributions/zoltan_distrib_v3.1.tar.gz">Version 3.1</a> (9/30/08) </li>
|
||||
<li> <a href="http://cs.sandia.gov/Zoltan/Zoltan_Distributions/zoltan_distrib_v3.0.tar.gz">Version 3.0</a> (5/30/07) </li>
|
||||
---->
|
||||
<li> <a href="http://cs.sandia.gov/Zoltan/Zoltan_Distributions/zoltan_distrib_v2.1.tar.gz">Version 2.1</a> (10/05/06)</li>
|
||||
</ul>
|
||||
<p>
|
||||
|
||||
Zoltan is provided as a compressed tar file. Unpack with 'tar xfz zoltan*.tar.gz'.
|
||||
|
||||
<hr>
|
||||
|
||||
<h3>Zoltan Tutorial</h3>
|
||||
The Zoltan Tutorial presented at SciDAC2007 is now on-line. Download it here:
|
||||
<ul>
|
||||
<li>
|
||||
<a href="http://cs.sandia.gov/Zoltan/papers/Zoltan_Tutorial_Slides.pdf">Zoltan Tutorial Slides</a> (14 Mbytes; PDF)
|
||||
</li>
|
||||
<li>
|
||||
<a href="http://cs.sandia.gov/Zoltan/papers/Zoltan_Tutorial_Handouts.pdf">Zoltan Tutorial Handouts</a> (Four slides per page; 8.8 Mbytes; PDF)
|
||||
</li>
|
||||
<p>
|
||||
</ul>
|
||||
|
||||
<hr>
|
||||
</p><h5><i>Last Updated: September 23, 2008</i>
|
||||
|
||||
<!---------MAIN CONTENT AREA ENDS HERE--------->
|
||||
<!-- CHANGE CONTACT + E-MAIL, NOTE "SUBJECT" IN E-MAIL CODE -->
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
<table border="0" width="100%">
|
||||
<tbody><tr align="center">
|
||||
<td valign="top" width="160">
|
||||
<table border="0" width="160">
|
||||
<tbody><tr>
|
||||
<td align="center" valign="top" width="120"></td>
|
||||
|
||||
<td width="20"></td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</td>
|
||||
|
||||
<td align="center" valign="top" width="100%"></td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<!--Image maps below-->
|
||||
<map name="shortMap">
|
||||
<area shape="rect" coords="2,2,108,14"href="https://www.sandia.gov/about/index.html"></area>
|
||||
<area shape="rect" coords="2,19,108,31"href="https://www.sandia.gov/mission/ste/index.html"></area>
|
||||
<area shape="rect" coords="2,36,108,48"href="https://www.sandia.gov/mission/index.html"></area>
|
||||
<area shape="rect" coords="2,53,108,65"href="https://www.sandia.gov/contact-us/index.html"></area>
|
||||
<area shape="rect" coords="2,70,108,82"href="https://www.sandia.gov/news/index.html"></area>
|
||||
<area shape="rect" coords="2,87,108,99"href="https://www.sandia.gov/search/index.html"></area>
|
||||
<area shape="rect" coords="2,104,108,116"href="https://www.sandia.gov/Main.html"></area>
|
||||
</map>
|
||||
|
||||
<!----------------THIS IS A CHANGE AREA---------------->
|
||||
<!----NAME AND DATE OF LAST REVISION SHOULD BE HERE---->
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
|
||||
</body></html>
|
735
thirdParty/Zoltan/docs/Zoltan_phil.html
vendored
Normal file
@ -0,0 +1,735 @@
|
||||
<!-------- @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="Zoltan.html">
|
||||
<meta name="review" content="28 May, 1999">
|
||||
<meta name="subject" content="Zoltan Home Page">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND99-1375">
|
||||
<meta name="sandia.create_date" content="05/28/99">
|
||||
<meta name="keywords" content="Zoltan, Zoltan Home Page, Zoltan dynamic load balancing library, Zoltan parallel computing">
|
||||
<meta name="description" content="Zoltan: Home Page for the Zoltan Library project at Sandia National Laboratories">
|
||||
<meta name="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<title>Zoltan</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-------->
|
||||
<!--------CHANGE THE PAGE OWNER AND EMAIL ADDRESS-------->
|
||||
<link rev="made" title="name of contact" >
|
||||
<!--------CHANGE THE PAGE MAKER AND EMAIL ADDRESS-------->
|
||||
<!--------PLACE FIVE KEY WORDS WITHIN THE QUOTES-------->
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
</head>
|
||||
<body text="#000000">
|
||||
<!-- 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="160" BGCOLOR="#003366">
|
||||
<table BORDER=0 WIDTH="160" valign="top" >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="160"><!--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="160" valign="top" >
|
||||
<!-------------------------------------------------------------------------->
|
||||
<tr ALIGN=LEFT VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="150"><!----------- 0th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan.html">Zoltan
|
||||
Home Page</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 1st little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="ug_html/ug.html">Zoltan
|
||||
User's Guide</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 2nd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="dev_html/dev.html">Zoltan
|
||||
Developer's Guide</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 2A-nd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_FAQ.html">
|
||||
Frequently Asked Questions</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 3rd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_phil.html">Zoltan
|
||||
Project Description</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 4th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_pubs.html">Papers
|
||||
and Presentations</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td VALIGN=TOP WIDTH="20"></td>
|
||||
</tr>
|
||||
|
||||
<!-------------------------------------------------------------------------->
|
||||
<tr ALIGN=LEFT VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="150"><!----------- 4Ath little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_cite.html">How to Cite Zoltan</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 5th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="https://github.com/sandialabs/Zoltan/releases">Download
|
||||
Zoltan</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 6th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_bugreport.html">Report a Zoltan Bug</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 7th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica">
|
||||
<a href="mailto: zoltan-dev@software.sandia.gov">Contact Zoltan Developers</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td VALIGN=TOP WIDTH="20"></td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td COLSPAN="2"></td>
|
||||
</tr>
|
||||
<!-------------------------------------------------------------------------->
|
||||
</table>
|
||||
</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:
|
||||
</font></font></b>
|
||||
<br>
|
||||
<b><font face="Verdana, Arial, Helvetica"><font size=+2>
|
||||
Data-Management Services for Parallel Applications
|
||||
</font></font></b>
|
||||
<p>
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
<!----------------THIS IS A CHANGE AREA---------------->
|
||||
<!--MAIN CONTENT SHOULD BE PLACED IN THE AREA BELOW-->
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<b><font face="Verdana, Arial, Helvetica"><font size=+2>
|
||||
Project Description
|
||||
</font></font></b><br>
|
||||
<hr>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="Zoltan_phil.html#Overview">Overview</a></li>
|
||||
<li>
|
||||
Design Considerations
|
||||
<ul>
|
||||
<li>
|
||||
<a href="Zoltan_phil.html#Design">Design of Toolkits and Libraries</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="Zoltan_phil.html#ZDesign">Zoltan's Design</a></li>
|
||||
|
||||
<li>
|
||||
<a href="Zoltan_phil.html#ZExamples">Zoltan Examples</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
Dynamic Load-Balancing and Data Migration Tools
|
||||
<ul>
|
||||
<li>
|
||||
<a href="Zoltan_phil.html#Typical">Typical Approach to Dynamic Load Balancing</a
|
||||
></li>
|
||||
<li>
|
||||
<a href="Zoltan_phil.html#Harder">Why Dynamic Load Balancing is Harder
|
||||
than Static Partitioning</a></li>
|
||||
<li>
|
||||
<a href="Zoltan_phil.html#ZLB">Zoltan's Load-Balancing Suite</a></li>
|
||||
<li>
|
||||
<a href="Zoltan_phil.html#Mig">Data Migration Tools</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
Communication Tools
|
||||
<ul>
|
||||
<li>
|
||||
<a href="Zoltan_phil.html#UComm">Unstructured Communication Library</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="Zoltan_phil.html#DD">Distributed Data Directories</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="Zoltan_phil.html#MemTools">Memory Management Tools</a></li>
|
||||
|
||||
|
||||
</ul>
|
||||
<!---------------------------------------------------------------------------->
|
||||
<a name="Overview"><hr><b>Overview</b><p>
|
||||
The Zoltan library is a collection of data management services for parallel,
|
||||
unstructured, adaptive, and dynamic applications. It simplifies the
|
||||
load-balancing, data movement, unstructured communication, and memory usage
|
||||
difficulties that arise in dynamic applications such as adaptive
|
||||
finite-element methods, particle methods, and crash simulations.
|
||||
Zoltan's data-structure neutral design also lets a wide range of applications
|
||||
use it without imposing restrictions on application data structures.
|
||||
Its object-based interface provides a simple and inexpensive way for
|
||||
application developers to use the library and researchers to make new
|
||||
capabilities available under a common interface.
|
||||
<p>
|
||||
Zoltan provides tools that help developers of parallel applications.
|
||||
<ul>
|
||||
<li>
|
||||
A suite of <a href="ug_html/ug_alg.html">parallel partitioning algorithms</a>
|
||||
and <a href="ug_html/ug_interface_mig.html">data migration tools</a>
|
||||
dynamically redistribute data to reflect, say, changing processor workloads.
|
||||
</li>
|
||||
<li>
|
||||
<a href="ug_html/ug_util_dd.html">Distributed data directories</a> and
|
||||
<a href="ug_html/ug_util_comm.html">unstructured communication</a>
|
||||
services let
|
||||
applications perform complication communication using only a few simple
|
||||
primitives.
|
||||
</li>
|
||||
<li>
|
||||
<a href="ug_html/ug_util_mem.html">Dynamic memory management tools</a>
|
||||
enhance common memory allocation functions to
|
||||
simplify debugging of dynamic memory usage.
|
||||
</li>
|
||||
</ul>
|
||||
These tools are provided in an easy-to-use toolkit that is callable from C,
|
||||
C++, and Fortran90.
|
||||
|
||||
|
||||
<!---------------------------------------------------------------------------->
|
||||
<a name="Design"><hr><b>Design of Toolkits and Libraries</b><p>
|
||||
Using general-purpose libraries allows
|
||||
algorithms to be shared among and compared within many applications. The
|
||||
close dependence of libraries on application data, however,
|
||||
requires careful design to maintain separation between the
|
||||
libraries and application data structures.
|
||||
<p>
|
||||
|
||||
One way to provide this separation is to use object-based software design.
|
||||
Instead of requiring the application to build data structures
|
||||
required by the library, the application could pass functions that access
|
||||
the application data structure to the libraries.
|
||||
For example, rather than require an application to build a complicated graph
|
||||
description, the library can require an application to provide a
|
||||
function returning graph vertices and a function returning edge
|
||||
connectivity for a given vertex.
|
||||
Using these functions, the
|
||||
library can build the data structures it needs.
|
||||
<p>
|
||||
|
||||
This object-based design has a number of advantages.
|
||||
<ul>
|
||||
<li>
|
||||
Changes in the library's data structures need not
|
||||
propagate back to the application. As long as the set of required functions
|
||||
does not change, the application does not need to change to use new versions
|
||||
of the library.
|
||||
</li>
|
||||
<li>
|
||||
Once the set of required functions is implemented, the application can use all
|
||||
the algorithms in the library.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
The required functions are generally easy for
|
||||
an application to implement, as most applications need to
|
||||
access their data objects and the interactions between objects
|
||||
for their own computations.
|
||||
</li>
|
||||
<li>
|
||||
Memory usage is lower as
|
||||
an application does not have to build an intermediate data structure
|
||||
that is later converted to appropriate data structures for the library.
|
||||
</li>
|
||||
<li>
|
||||
The constructor for library data structures is called only when it
|
||||
is needed, and only the data needed for a particular algorithm is obtained.
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
There are a few disadvantages to this object-based approach as well.
|
||||
<ul>
|
||||
<li>
|
||||
Additional overhead is incurred as the library calls the functions to
|
||||
build its data structures.
|
||||
In experiments, however, this cost has been very low
|
||||
relative to the cost of actual computation in the library.
|
||||
</li>
|
||||
<li>
|
||||
A general-purposes tool can
|
||||
provide only limited support for manipulations of application data
|
||||
structures (e.g., data movement).
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
For more detailed information, see
|
||||
[<a href="http://cs.sandia.gov/pub/papers/kddevin/cmame.ps.gz">Hendrickson
|
||||
and Devine</a>].
|
||||
<p>
|
||||
|
||||
<!---------------------------------------------------------------------------->
|
||||
<a name="ZDesign"><hr><b>Zoltan's Design</b><p>
|
||||
We have chosen an object-based, callback function design. An application
|
||||
provides a number of simple callback functions that access the application
|
||||
data structures. Zoltan then calls these functions to obtain data it needs.
|
||||
Geometric algorithms are
|
||||
supported via callback functions returning objects to be balanced and the
|
||||
weights and coordinates of those objects.
|
||||
Graph-based algorithms are
|
||||
supported by callback functions returning objects to be
|
||||
balanced, edges between objects, and object and edge weights.
|
||||
For refinement-tree algorithms, additional callback functions return
|
||||
parent-child relationships.
|
||||
<p>
|
||||
Support for data migration (the movement of data to establish a new
|
||||
decomposition) is also provided through a similar callback
|
||||
function interface. An application provides callback functions that pack
|
||||
object data into and unpack data from communication buffers provided by
|
||||
Zoltan. Zoltan calls the packing function to load communication buffers,
|
||||
performs the communication necessary to move the data, and calls the unpacking
|
||||
function to unload the communication buffers.
|
||||
<!---------------------------------------------------------------------------->
|
||||
<a name="ZExamples"><hr><b>Zoltan Examples</b><p>
|
||||
Several examples of Zoltan's use can be found in the
|
||||
<a href="ug_html/ug.html">Zoltan User's Guide</a>.
|
||||
<ul>
|
||||
<li>
|
||||
<a href="ug_html/ug_intro.html#Load-Balancing Tools">General
|
||||
examples of library usage</a>.
|
||||
</li>
|
||||
<li>
|
||||
<a href="ug_html/ug_examples.html">Specific examples</a>
|
||||
for each phase of balancing
|
||||
(<a href="ug_html/ug_examples_init.html">initialization</a>,
|
||||
<a href="ug_html/ug_examples_lb.html">load balancing</a>, and
|
||||
<a href="ug_html/ug_examples_mig.html">data migration</a>).
|
||||
</li>
|
||||
<li>
|
||||
<a href="ug_html/ug_examples_query.html">Examples of callback function
|
||||
implementations</a>.
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
<!---------------------------------------------------------------------------->
|
||||
<a name="Typical"><hr><b>Typical Approach to Dynamic Load Balancing</b><p>
|
||||
Dynamic load balancing has been used in many applications, ranging from
|
||||
adaptive mesh refinement to particle methods to contact detection algorithms.
|
||||
In most applications using dynamic load balancing, the load-balancing
|
||||
algorithm is implemented directly in the application, with close coupling
|
||||
between the application's and load-balancing algorithm's data structures.
|
||||
This typical approach has two disadvantages.
|
||||
<ul>
|
||||
<li> It is possible that the application developer did not select the
|
||||
best algorithm for the application, but the developer is unable to compare the
|
||||
algorithm with others without taking time to implement many algorithms in the
|
||||
application.
|
||||
</li>
|
||||
<li> The close coupling of the algorithm's and application's
|
||||
data structures limits the algorithm's use to a single application.
|
||||
Developers wanting to use the algorithm in a new application have to re-write
|
||||
the algorithm using the new application's data structures.
|
||||
</li>
|
||||
</ul>
|
||||
As a result, research into and use of dynamic load-balancing algorithms are
|
||||
severely impaired.
|
||||
<p>
|
||||
|
||||
|
||||
<!---------------------------------------------------------------------------->
|
||||
<a name="Harder"><hr><b>Why Dynamic Load Balancing is Harder than Static Partitioning</b><p>
|
||||
Many high-quality static partitioning tools exist; examples include
|
||||
<a href="http://cs.sandia.gov/CRF/chac.html">Chaco</a>,
|
||||
<a href="https://www-users.cs.umn.edu/~karypis/metis">METIS</a>,
|
||||
<!---
|
||||
<a href="https://www.uni-paderborn.de/fachbereich/AG/monien/RESEARCH/PART/party.html">Party</a>,
|
||||
-->
|
||||
and
|
||||
<a href="https://www.labri.fr/perso/pelegrin/scotch/">SCOTCH</a>.
|
||||
General-purpose dynamic load-balancing tools are less common, however,
|
||||
since they are more difficult to implement. The difficulty arises from
|
||||
fundamental algorithmic and software-engineering
|
||||
differences between static and dynamic partitioning. These differences are
|
||||
summarized in the following table.
|
||||
<p>
|
||||
|
||||
<table border=1>
|
||||
<tr>
|
||||
<td valign=top><b>Static Partitioning...</b></td>
|
||||
<td valign=top><b>Dynamic Load Balancing...</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign=top>Generally used as a pre-processor to an application.</td>
|
||||
<td valign=top>Runs side-by-side with an application.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign=top>Can be (and usually is) implemented serially.</td>
|
||||
<td valign=top>Must be implemented in parallel.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign=top>Has only modest concern for execution time.</td>
|
||||
<td valign=top>Must run quickly (time to load balance should not exceed time to run in
|
||||
an unbalanced state).</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign=top>Has only modest concern for memory usage.</td>
|
||||
<td valign=top>Must use little memory (should not affect scalability of
|
||||
application).</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign=top>Can use file-based interfaces (read geometry from a file; write partition
|
||||
info to a file).</td>
|
||||
<td valign=top>Must use function-call interfaces.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign=top>Has no dependence on an application's data structures.</td>
|
||||
<td valign=top>Needs information stored in an application's data structures.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign=top>Accounts for part sizes and communication costs.</td>
|
||||
<td valign=top>Accounts for part sizes, communication costs, and data movement
|
||||
costs.</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>
|
||||
<!---------------------------------------------------------------------------->
|
||||
<a name="ZLB"><hr><b>Zoltan's Load-Balancing Suite</b></a>
|
||||
<p>
|
||||
In our experience, no single partitioning strategy is effective for all
|
||||
parallel computations. Some application require partitions based only on the
|
||||
problem's workloads and geometry; others benefit from explicit consideration
|
||||
of dependencies between data. Some applications require the highest quality
|
||||
partitions possible, regardless of the cost to generate them; others can
|
||||
sacrifice some quality so long as new partitions can be generated quickly.
|
||||
For some applications, the cost to relocate data is prohibitively high, so
|
||||
incremental partitioning algorithms are needed; other applications can
|
||||
tolerate greater remapping costs. Most important, application developers
|
||||
might not know in advance which strategies work best in their applications, so
|
||||
the need a convenient means of comparing algorithms.
|
||||
<p>
|
||||
We provide two classes of parallel partitioning algorithms in the Zoltan
|
||||
library:
|
||||
<ul>
|
||||
<li>Geometric methods
|
||||
<blockquote>
|
||||
<a href="ug_html/ug_alg_rcb.html">Recursive Coordinate Bisection</a><br>
|
||||
<a href="ug_html/ug_alg_rib.html">Recursive Inertial Bisection</a><br>
|
||||
<a href="ug_html/ug_alg_hsfc.html">Hilbert Space-Filling Curve Partitioning</a> <br>
|
||||
<a href="ug_html/ug_alg_reftree.html">Refinement Tree Partitioning</a>
|
||||
</blockquote>
|
||||
</li>
|
||||
<li>Topology-based methods
|
||||
<blockquote>
|
||||
<a href="ug_html/ug_alg_phg.htmml">Hypergraph partitioning</a><br>
|
||||
<a href="ug_html/ug_alg_phg.htmml">Graph partitioning</a><br>
|
||||
Graph partitioning (through interfaces to
|
||||
<a href="ug_html/ug_alg_parmetis.html">ParMETIS</a> (U. Minn.) and
|
||||
<a href="ug_html/ug_alg_jostle.html">Jostle</a> (U. Greenwich))<br>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
Once the Zoltan callback functions are implemented, an application can switch
|
||||
between partitioning algorithms by changing only the
|
||||
<a href="ug_html/ug_alg.html#LB_METHOD"><i>LB_METHOD</i></a> parameter
|
||||
through a call to
|
||||
<a href="ug_html/ug_interface_init.html#Zoltan_Set_Param"><b>Zoltan_Set_Param</b></a>.
|
||||
Thus, comparing different algorithms within a single application is easy,
|
||||
enabling users to try several algorithms and find
|
||||
the best ones for their applications.
|
||||
<p>
|
||||
<!---------------------------------------------------------------------------->
|
||||
<a name="Mig"><hr><b>Data Migration Tools</b></a>
|
||||
<p>
|
||||
A complicated part of dynamic repartitioning is the need to move data from old
|
||||
processors to new ones. This data migration requires deletions and insertions
|
||||
from the application data structures as well as communication between the
|
||||
processors.
|
||||
<p>
|
||||
To help an application with
|
||||
<a href="ug_html/ug_interface_mig.html">data migration</a>, Zoltan requires an application to
|
||||
supply callback functions that pack data into communication buffers and unpack
|
||||
data from communication buffers. Zoltan
|
||||
calls the packing function to load communication buffers with objects to be
|
||||
exported, performs all communication needed to move the data, and calls the
|
||||
unpacking function to load the objects in the data structures on the new
|
||||
processors. This mechanism eliminates the need for the application developer
|
||||
to implement complicated communication for data migration.
|
||||
<p>
|
||||
<!---------------------------------------------------------------------------->
|
||||
<a name="UComm"><hr><b>Unstructured Communication Library</b></a>
|
||||
<p>
|
||||
Unlike static applications, where communication patterns remain fixed
|
||||
throughout the computation, dynamic applications can have complicated,
|
||||
changing communication patterns. For example:
|
||||
<ul>
|
||||
<li>After adaptive mesh refinement,
|
||||
new communication patterns must reflect dependencies between newly created
|
||||
elements.
|
||||
</li>
|
||||
<li>
|
||||
Multiphysics simulations, such as crash simulations, might require complicated
|
||||
communication to transfer data between decompositions for different simulation
|
||||
phases.
|
||||
</li>
|
||||
</ul>
|
||||
Zoltan provides an
|
||||
<a href="ug_html/ug_util_comm.html">unstructured communication package</a>
|
||||
to simplify
|
||||
communication. The package builds a communication plan, including information
|
||||
about both message sends and receives for a given processor. The plan can be
|
||||
reused throughout the application, or destroyed and rebuilt when communication
|
||||
patterns change. The package also includes simple communication primitives that
|
||||
insulate the user from details of message sends and receives.
|
||||
<p>
|
||||
<!---------------------------------------------------------------------------->
|
||||
<a name="DD"><hr><b>Distributed Data Directories</b></a>
|
||||
<p>
|
||||
Dynamic applications often need to locate off-processor information. After
|
||||
repartitioning, for example, a processor might need to rebuild ghost cells and
|
||||
lists of data to be communicated. It might know which data it needs, but not
|
||||
where the data are located.
|
||||
<p>
|
||||
To help locate off-processor data, Zoltan includes a
|
||||
<a href="ug_html/ug_util_dd.html">distributed data
|
||||
directory</a> tool that is scalable with respect to both memory usage and
|
||||
computation time. Processors register their owned objects with the directory.
|
||||
Then, through a rendezvous algorithm, other processors can look up the
|
||||
location of data they need.
|
||||
<p>
|
||||
<!---------------------------------------------------------------------------->
|
||||
<a name="MemTools"><hr><b>Memory Management Tools</b></a>
|
||||
<p>
|
||||
Dynamic applications rely heavily on the ability to allocate and free memory
|
||||
as needed. Memory leaks and invalid memory accesses are common to developing
|
||||
software. Although many software development tools let users track memory
|
||||
bugs, these tools are often not available on state-of-the-art parallel
|
||||
computers.
|
||||
<p>
|
||||
Zoltan's <a href="ug_html/ug_util_mem.html">memory management package</a>
|
||||
provides simple in-application debugging
|
||||
tools that are beneficial on state-of-the-art computing platforms. The
|
||||
package includes wrappers around malloc and free that record the location of
|
||||
all memory
|
||||
allocation operations. Thus, tracking memory leaks is simplified, as
|
||||
source-code locations of unfreed-memory allocations can be printed.
|
||||
Statistics about memory allocations and frees are also available.
|
||||
<p>
|
||||
<!---------------------------------------------------------------------------->
|
||||
|
||||
<!---------MAIN CONTENT AREA ENDS HERE---------><!-- CHANGE CONTACT + E-MAIL, NOTE "SUBJECT" IN E-MAIL CODE --></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr width="100%">
|
||||
<table BORDER=0 WIDTH="100%" >
|
||||
<tr ALIGN=CENTER>
|
||||
<td VALIGN=TOP WIDTH="140">
|
||||
<table BORDER=0 WIDTH="140" >
|
||||
<tr>
|
||||
<td ALIGN=CENTER VALIGN=TOP WIDTH="120"></td>
|
||||
|
||||
<td WIDTH="20"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td ALIGN=CENTER VALIGN=TOP WIDTH="100%"></td>
|
||||
</tr>
|
||||
</table>
|
||||
<!--Image maps below-->
|
||||
<map name="shortMap">
|
||||
<area shape="rect" coords="2,2,108,14"href="https://www.sandia.gov/about/index.html"></area>
|
||||
<area shape="rect" coords="2,19,108,31"href="https://www.sandia.gov/mission/ste/index.html"></area>
|
||||
<area shape="rect" coords="2,36,108,48"href="https://www.sandia.gov/mission/index.html"></area>
|
||||
<area shape="rect" coords="2,53,108,65"href="https://www.sandia.gov/contact-us/index.html"></area>
|
||||
<area shape="rect" coords="2,70,108,82"href="https://www.sandia.gov/news/index.html"></area>
|
||||
<area shape="rect" coords="2,87,108,99"href="https://www.sandia.gov/search/index.html"></area>
|
||||
<area shape="rect" coords="2,104,108,116"href="https://www.sandia.gov/Main.html"></area>
|
||||
</map>
|
||||
<!----------------THIS IS A CHANGE AREA---------------->
|
||||
<!----NAME AND DATE OF LAST REVISION SHOULD BE HERE---->
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
</body>
|
||||
</html>
|
662
thirdParty/Zoltan/docs/Zoltan_pubs.html
vendored
Normal file
@ -0,0 +1,662 @@
|
||||
<!-------- @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="Zoltan.html">
|
||||
<meta name="review" content="28 May, 1999">
|
||||
<meta name="subject" content="Zoltan Home Page">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND99-1375">
|
||||
<meta name="sandia.create_date" content="05/28/99">
|
||||
<meta name="keywords" content="Zoltan, Zoltan Home Page, Zoltan dynamic load balancing library, Zoltan parallel computing">
|
||||
<meta name="description" content="Zoltan: Home Page for the Zoltan Library project at Sandia National Laboratories">
|
||||
<meta name="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<title>Zoltan</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-------->
|
||||
<!--------CHANGE THE PAGE OWNER AND EMAIL ADDRESS-------->
|
||||
<link rev="made" title="name of contact" >
|
||||
<!--------CHANGE THE PAGE MAKER AND EMAIL ADDRESS-------->
|
||||
<!--------PLACE FIVE KEY WORDS WITHIN THE QUOTES-------->
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
</head>
|
||||
<body text="#000000">
|
||||
<!-- 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="160" BGCOLOR="#003366">
|
||||
<table BORDER=0 WIDTH="160" valign="top" >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="160"><!--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="160" valign="top" >
|
||||
<!-------------------------------------------------------------------------->
|
||||
<tr ALIGN=LEFT VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="150"><!----------- 0th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan.html">Zoltan
|
||||
Home Page</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 1st little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="ug_html/ug.html">Zoltan
|
||||
User's Guide</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 2nd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="dev_html/dev.html">Zoltan
|
||||
Developer's Guide</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 2A-nd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_FAQ.html">
|
||||
Frequently Asked Questions</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 3rd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_phil.html">Zoltan
|
||||
Project Description</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 4th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_pubs.html">Papers
|
||||
and Presentations</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td VALIGN=TOP WIDTH="20"></td>
|
||||
</tr>
|
||||
|
||||
<!-------------------------------------------------------------------------->
|
||||
<tr ALIGN=LEFT VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="150"><!----------- 4Ath little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_cite.html">How to Cite Zoltan</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 5th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="https://github.com/sandialabs/Zoltan/releases">Download
|
||||
Zoltan</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 6th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="Zoltan_bugreport.html">Report a Zoltan Bug</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 7th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica">
|
||||
<a href="mailto: zoltan-dev@software.sandia.gov">Contact Zoltan Developers</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td VALIGN=TOP WIDTH="20"></td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td COLSPAN="2"></td>
|
||||
</tr>
|
||||
<!-------------------------------------------------------------------------->
|
||||
</table>
|
||||
</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:
|
||||
</font></font></b>
|
||||
<br>
|
||||
<b><font face="Verdana, Arial, Helvetica"><font size=+2>
|
||||
Data-Management Services for Parallel Applications
|
||||
</font></font></b>
|
||||
<p>
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
<!----------------THIS IS A CHANGE AREA---------------->
|
||||
<!--MAIN CONTENT SHOULD BE PLACED IN THE AREA BELOW-->
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<b><font face="Verdana, Arial, Helvetica"><font size=+2>
|
||||
Papers and Presentations
|
||||
</font></font></b>
|
||||
<hr>
|
||||
|
||||
This list may not be up-to-date...
|
||||
|
||||
<p>
|
||||
<b> Hypergraph Partitioning</b>
|
||||
<ul>
|
||||
<li>
|
||||
<b>Hypergraph-based Dynamic Load Balancing for Adaptive Scientific Computations.</b><br>
|
||||
U. Catalyurek, E. Boman, K. Devine, D. Bozdag, R. Heaphy, L.A. Riesen.<br>
|
||||
<i> Proceedings of IPDPS'07</i>, Best Algorithms Paper Award, March 2007.
|
||||
<br>
|
||||
<A HREF="http://cs.sandia.gov/Zoltan/abstracts/Catalyurek_IPDPS07.html">Abstract</A> (HTML)
|
||||
|
||||
<a href="http://cs.sandia.gov/Zoltan/papers/Catalyurek_IPDPS07.pdf">Paper</a> (PDF)
|
||||
|
||||
<a href="http://cs.sandia.gov/Zoltan/citations/Catalyurek_IPDPS07.txt">Citation</a> (BIBTEX)
|
||||
</li>
|
||||
<p>
|
||||
<li>
|
||||
<b>A Repartitioning Hypergraph Model for Dynamic Load Balancing</b><br>
|
||||
U. Catalyurek, E. Boman, K. Devine, D. Bozdag, R. Heaphy, L.A. Riesen.<br>
|
||||
<i>Journal of Parallel and Distributed Computing</i>,
|
||||
Vol. 69, No. 8, pp. 711-724, Aug 2009.
|
||||
<br>
|
||||
<A HREF="http://cs.sandia.gov/Zoltan/abstracts/JPDC_repart.html">Abstract</A> (HTML)
|
||||
|
||||
<a href="http://cs.sandia.gov/Zoltan/papers/JPDC_repart.pdf">Paper</a> (PDF)
|
||||
|
||||
<a href="http://cs.sandia.gov/Zoltan/citations/JPDC_repart.txt">Citation</a> (BIBTEX)
|
||||
</li>
|
||||
<p>
|
||||
<li>
|
||||
<b>Hypergraph-based Dynamic Partitioning and Load Balancing.</b><br>
|
||||
U. Catalyurek, D. Bozdag, E. Boman, K. Devine, R. Heaphy, and L.A. Riesen.<br>
|
||||
<i>Advanced Computational Infrastructures for
|
||||
Parallel/Distributed Adaptive Applications,</i> M. Parashar, ed., Wiley Publishing, Dec. 2009.
|
||||
<br>
|
||||
<!---- <a href="http://cs.sandia.gov/Zoltan/papers/wiley_chapter.pdf">Paper</a> (PDF)
|
||||
---->
|
||||
<a href="http://cs.sandia.gov/Zoltan/citations/wiley_chapter.txt">Citation</a> (BIBTEX)
|
||||
</li>
|
||||
<p>
|
||||
<li>
|
||||
<b>Parallel Hypergraph Partitioning for Scientific Computing.</b><br>
|
||||
K. Devine, E. Boman, R. Heaphy, R. Bisseling, U. Catalyurek.<br>
|
||||
<i> Proceedings of IPDPS 2006</i>, April 2006.
|
||||
<br>
|
||||
<A HREF="http://cs.sandia.gov/Zoltan/abstracts/IPDPS06_Final.html">Abstract</A> (HTML)
|
||||
|
||||
<a href="http://cs.sandia.gov/Zoltan/papers/IPDPS06_Final.pdf">Paper</a> (PDF)
|
||||
|
||||
<a href="http://cs.sandia.gov/Zoltan/citations/IPDPS06_Final.txt">Citation</a> (BIBTEX)
|
||||
</li>
|
||||
<p>
|
||||
<li>
|
||||
<b>Parallel Hypergraph Partitioning for Irregular Problems.</b><br>
|
||||
K. Devine, E. Boman, R. Heaphy, U. Catalyurek, R. Bisseling.<br>
|
||||
<i>SIAM Parallel Processing for Scientific Computing</i>, February 2006.
|
||||
<br>
|
||||
<a href="http://cs.sandia.gov/Zoltan/papers/siam_pp06.pdf">Viewgraphs</a> (PDF)
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<b>Zoltan</b>
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
<a href="https://dx.doi.org/10.3233/SPR-2012-0342"><b>The Zoltan and Isorropia Parallel Toolkits for Combinatorial Scientific Computing: Partitioning, Ordering, and Coloring</b></a>
|
||||
<br>E.G. Boman, U.V. Catalyurek, C. Chevalier, and K.D. Devine, Scientific Programming vol. 20, no. 2, 2012, special issue on Trilinos.
|
||||
<br> <br>
|
||||
<li>
|
||||
<b>Getting Started with Zoltan: A Short Tutorial.</b><br>
|
||||
K. Devine, E. Boman, L.A. Riesen, U. Catalyurek and C. Chevalier.<br>
|
||||
<i>Proc. 2009 Dagstuhl Seminar on Combinatorial Scientific Computing</i>,
|
||||
February, 2009.<br>
|
||||
<a href="http://cs.sandia.gov/Zoltan/papers/Dagstuhl09.pdf">PDF</a>
|
||||
|
||||
<a href="http://cs.sandia.gov/Zoltan/citations/Dagstuhl09.txt">Citation</a> (BIBTEX)
|
||||
|
||||
<a href="http://cs.sandia.gov/Zoltan/papers/zoltan_tutorial_dagstuhl09.pdf">Viewgraphs</a> from the tutorial (PDF)
|
||||
<br><br>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<b>Zoltan Data Management Services for Parallel Dynamic Applications.</b><br>
|
||||
K. Devine, E. Boman, R. Heaphy, B. Hendrickson, and C. Vaughan.<br>
|
||||
<i>Computing in Science and Engineering</i>, Vol. 4, No. 2, March/April 2002, pp. 90-97.
|
||||
<br>
|
||||
<a href="http://cs.sandia.gov/Zoltan/papers/c2sciprog_final.pdf">Paper</a> (PDF)
|
||||
|
||||
<a href="http://cs.sandia.gov/Zoltan/citations/c2sciprog_final.txt">Citation</a> (BIBTEX)
|
||||
<br>
|
||||
<p>
|
||||
|
||||
<li>
|
||||
<b><a href="ug_html/ug.html">Zoltan v3: Parallel Partitioning, Load Balancing and Data-Management Services, User's Guide
|
||||
</a>.</b><br>
|
||||
E. Boman, K. Devine, R. Heaphy, B. Hendrickson, V. Leung, L.A. Riesen, C. Vaughan, U. Catalyurek, D. Bozdag, W. Mitchell and J. Teresco.<br>
|
||||
Sandia National Laboratories Tech. Rep. SAND2007-4748W, Albuquerque, NM, 2007.
|
||||
<br>
|
||||
<a href="ug_html/ug.html">Manual</a> (HTML)
|
||||
|
||||
<a href="http://cs.sandia.gov/Zoltan/citations/zoltanUG.txt">Citation</a> (BIBTEX)
|
||||
<br>
|
||||
<p>
|
||||
|
||||
<li>
|
||||
<b><a href="dev_html/dev.html">Zoltan v3: Parallel Partitioning, Load Balancing and Data-Management Services, Developer's Guide
|
||||
</a>.</b><br>
|
||||
E. Boman, K. Devine, R. Heaphy, B. Hendrickson, V. Leung, L.A. Riesen, C. Vaughan, U. Catalyurek, D. Bozdag, and W. Mitchell.<br>
|
||||
Sandia National Laboratories Tech. Rep. SAND2007-4749W, Albuquerque, NM, 2007.
|
||||
<br>
|
||||
<!-----------
|
||||
<a href="http://cs.sandia.gov/Zoltan/Zoltan_pdf/dev.pdf">Manual</a> (PDF)
|
||||
|
||||
--------->
|
||||
<a href="http://cs.sandia.gov/Zoltan/citations/zoltanDEV.txt">Citation</a> (BIBTEX)
|
||||
<br>
|
||||
<p>
|
||||
<li>
|
||||
<b>Tinkertoy Parallel Computing: A Case Study With Zoltan.</b><br>
|
||||
K. Devine and B. Hendrickson.<br>
|
||||
<i>Int. J. Computational Science and Engineering</i>, 2005.
|
||||
<br>
|
||||
<A HREF="http://cs.sandia.gov/Zoltan/abstracts/tinkertoy.html">Abstract</A> (HTML)
|
||||
|
||||
<a href="http://cs.sandia.gov/Zoltan/papers/tinkertoy.pdf">Paper</a> (PDF)
|
||||
|
||||
<a href="http://cs.sandia.gov/Zoltan/citations/tinkertoy.txt">Citation</a> (BIBTEX)
|
||||
</li>
|
||||
<p>
|
||||
|
||||
<li>
|
||||
<b>Design of Dynamic Load-Balancing Tools for Parallel Applications.</b><br>
|
||||
K. Devine, B. Hendrickson, E. Boman, M. St.John, and C. Vaughan.<br>
|
||||
<i>Proceedings of the International Conference on Supercomputing</i>,
|
||||
Santa Fe, May, 2000. <br>
|
||||
<A HREF="http://cs.sandia.gov/Zoltan/abstracts/ics00.html">Abstract</A> (HTML)
|
||||
|
||||
<!----
|
||||
<A HREF="http://cs.sandia.gov/Zoltan/papers/ics00.ps.gz">Paper</A> (PS.GZ)
|
||||
|
||||
---->
|
||||
<a href="http://cs.sandia.gov/Zoltan/citations/ics00.txt">Citation</a> (BIBTEX)
|
||||
<br>
|
||||
<p>
|
||||
|
||||
</ul>
|
||||
<b>Dynamic Load Balancing</b>
|
||||
<br>
|
||||
<ul>
|
||||
<li>
|
||||
<b>Partitioning and Load Balancing for Emerging Parallel Applications and
|
||||
Architectures.</b><br>
|
||||
K. Devine, E. Boman, and G. Karypis.<br>
|
||||
Chapter in <i>Parallel Processing for Scientific Computing</i>,
|
||||
Heroux, Raghavan, Simon, eds. SIAM (2006) 99-126.
|
||||
<br>
|
||||
<!----
|
||||
<A HREF="http://cs.sandia.gov/Zoltan/papers/pp04.pdf">Paper</A> (PDF)
|
||||
|
||||
---->
|
||||
<a href="http://cs.sandia.gov/Zoltan/citations/pp04.txt">Citation</a> (BIBTEX)
|
||||
</li>
|
||||
<p>
|
||||
<li>
|
||||
<b>New Challenges in Dynamic Load Balancing.</b><br>
|
||||
K. Devine, E. Boman, R. Heaphy, B. Hendrickson, J. Teresco, J. Faik,
|
||||
J. Flaherty, L. Gervasio.<br>
|
||||
<i>Applied Numerical Mathematics</i>, Vol. 52, Issues 2-3, pp. 133-152, 2005.
|
||||
</li>
|
||||
<p>
|
||||
<li>
|
||||
<b>Partitioning and Dynamic Load Balancing for the Numerical Solution of
|
||||
Partial Differential Equations.</b><br>
|
||||
J. Teresco, K. Devine, J. Flaherty.<br>
|
||||
Chapter in
|
||||
<i>Numerial Solution of Partial Differential Equations on Parallel
|
||||
Computers</i>, Bruaset, Bj<42>rstad, Tveito, editors. <20> Springer-Verlag, 2005.
|
||||
</li>
|
||||
<p>
|
||||
<li>
|
||||
<b>A model for resource-aware load balancing on heterogeneous clusters.</b><br>
|
||||
J. Faik, J. Flaherty, L. Gervasio, J. Teresco, K. Devine.<br>
|
||||
Williams College Department of Computer Science Technical Report CS-05-01, 2005.
|
||||
</li>
|
||||
<p>
|
||||
<li>
|
||||
<b>Dynamic Load Balancing in Computational Mechanics.</b><br>
|
||||
B. Hendrickson and K. Devine.<br>
|
||||
<i>Comput. Methods Appl. Mech. Engrg.</i>, <b>184</b> (2000), 485-500.
|
||||
<br>
|
||||
<A HREF="http://cs.sandia.gov/Zoltan/abstracts/cmame.html">Abstract</A> (HTML)
|
||||
|
||||
<A HREF="http://cs.sandia.gov/Zoltan/papers/cmame.ps.gz">Paper</A> (PS.GZ)
|
||||
<br>
|
||||
<p>
|
||||
|
||||
<LI>
|
||||
<b>Graph Partitioning Models for Parallel Computing.</b><br>
|
||||
Bruce Hendrickson and Tamara G. Kolda.<br>
|
||||
<i>Parallel Computing</i>, <b>26</b> (2000), 1519-1534. <BR>
|
||||
<A HREF="http://cs.sandia.gov/~bahendr/abstracts/models.html">Abstract</A> (HTML)
|
||||
|
||||
<A HREF="http://cs.sandia.gov/pub/papers/bahendr/models.ps.gz">Paper</A> (PS.GZ)
|
||||
<br>
|
||||
<P>
|
||||
|
||||
<LI>
|
||||
<b>Load Balancing Fictions, Falsehoods and Falacies.</b><br>
|
||||
Bruce Hendrickson.<br>
|
||||
<i>Applied Mathematical Modelling</i>, 25:99-108, 2000.<BR>
|
||||
|
||||
<A HREF="http://cs.sandia.gov/~bahendr/abstracts/myths.html">Abstract</A> (HTML)
|
||||
|
||||
<A HREF="http://cs.sandia.gov/pub/papers/bahendr/myths.ps.gz">Paper</A> (PS.GZ)
|
||||
|
||||
<A HREF="http://cs.sandia.gov/~bahendr/talks/Myths_html/main.htm">HTML version of overheads</A> from plenary talk at the <i>3rd DRAMA Steering Workshop</i>,
|
||||
September, 1999.<BR>
|
||||
<P>
|
||||
|
||||
<LI>
|
||||
<b>Interprocessor Communication with Memory Constraints.</b><br>
|
||||
Ali Pinar and Bruce Hendrickson.<br>
|
||||
<i>Proc. 12th ACM Symp. Parallel Algorithms and Architectures</i>,
|
||||
July 2000. <BR>
|
||||
<A HREF="http://cs.sandia.gov/~bahendr/abstracts/spaa00.html">Abstract</A> (HTML)
|
||||
|
||||
<A HREF="http://cs.sandia.gov/pub/papers/bahendr/spaa00.ps.gz">Paper</A> (PS.GZ)
|
||||
<P>
|
||||
|
||||
<LI>
|
||||
<b>Graph Partitioning and Parallel Solvers: Has the Emperor No Clothes
|
||||
(Extended Abstract).</b><br>
|
||||
Bruce Hendrickson.<br>
|
||||
<i>Proc. Irregular'98</i>,
|
||||
<A HREF="https://link.springer.de/series/lncs/"> Lecture Notes in
|
||||
Computer Science, 1457</A>, pp. 218-225, 1998. Copyright Springer-Verlag. <BR>
|
||||
<A HREF="http://cs.sandia.gov/~bahendr/abstracts/irreg98.html">Abstract</A> (HTML)
|
||||
|
||||
<A HREF="http://cs.sandia.gov/pub/papers/bahendr/irreg98.ps.gz">Paper</A> (PS.GZ)
|
||||
<br>
|
||||
<P>
|
||||
|
||||
<li>
|
||||
<b>Parallel Adaptive <i>hp</i>-Refinement Techniques for Conservation Laws.</b><br>
|
||||
K. Devine and J. Flaherty.<br>
|
||||
<i>Applied Numerical Mathematics</i>, <b>20</b> (1996), 367-386.
|
||||
<br>
|
||||
<A HREF="http://cs.sandia.gov/Zoltan/abstracts/anm96.html">Abstract</A> (HTML)
|
||||
|
||||
<A HREF="http://cs.sandia.gov/Zoltan/papers/anm96.ps.gz">Paper</A> (PS.GZ)
|
||||
<br>
|
||||
<p>
|
||||
|
||||
<li>
|
||||
<b>Dynamic Load Balancing for Parallel Finite Element Methods
|
||||
with Adaptive <i>h</i>- and <i>p</i>-Refinement.</b><br>
|
||||
K. Devine and J. Flaherty.<br>
|
||||
<i>Proceedings of the Seventh SIAM Conference on
|
||||
Parallel Processing for Scientific Computing</i>,
|
||||
San Francisco, CA, February, 1995.<br>
|
||||
<A HREF="http://cs.sandia.gov/Zoltan/abstracts/siampp95.html">Abstract</A> (HTML)
|
||||
|
||||
<A HREF="http://cs.sandia.gov/Zoltan/papers/siampp95.ps.gz">Paper</A> (PS.GZ)
|
||||
<br>
|
||||
<p>
|
||||
|
||||
<LI>
|
||||
<b>Parallel Algorithms for Dynamically Partitioning Unstructured Grids.</b><br>
|
||||
Pedro Diniz, Steve Plimpton, Bruce Hendrickson and Robert Leland.<br>
|
||||
<i>Proceedings of the Seventh SIAM Conference on Parallel
|
||||
Processing for Scientific Computing</i>, San Francisco, CA, February, 1995. <BR>
|
||||
<A HREF="http://cs.sandia.gov/~bahendr/abstracts/dynamic.html">Abstract</A> (HTML)
|
||||
|
||||
<A HREF="http://cs.sandia.gov/pub/papers/bahendr/dynamic.ps.gz">Paper</A> (PS.GZ)
|
||||
<br>
|
||||
<p>
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
<b>
|
||||
Coloring
|
||||
</b>
|
||||
<p>
|
||||
<ul>
|
||||
<li>
|
||||
<b>Improving Graph Coloring on Distributed Memory Parallel Computers.</b><br>
|
||||
A.E. Sariy<69>ce, E. Saule and <20>.V. <20>ataly<6C>rek. <br>
|
||||
<i>Proceedings of 18th Annual International Conference on High Performance Computing (HiPC 2011), </i>
|
||||
Dec 2011, to appear.
|
||||
<br><p>
|
||||
</li>
|
||||
<li>
|
||||
<b>Distributed-memory Parallel Algorithms for Distance-2 Coloring and Related Problems in Derivative Computation. </b><br>
|
||||
D. Bozdag, <20>.V. <20>ataly<6C>rek, A. H. Gebremedhin, F. Manne, E.G. Boman, and F. <20>zg<7A>ner. <br>
|
||||
<i>SIAM Journal of Scientific Computing</i>, Vol. 32, No. 4, pp. 2418-2446, 2010. <br><p>
|
||||
</li>
|
||||
<li>
|
||||
<b>A Framework for Scalable Greedy Coloring on Distributed Memory Parallel Computers. </b><br>
|
||||
D. Bozdag, A. Gebremedhin, F. Manne, E.G. Boman, and <20>.V. <20>ataly<6C>rek. <br>
|
||||
<i>Journal of Parallel and Distributed Computing</i>, Vol. 68, No. 4, pp. 515-535, Apr 2008. <br><p>
|
||||
</li>
|
||||
<li>
|
||||
<b>A Scalable Parallel Graph Coloring Algorithm for Distributed-Memory
|
||||
Computers.</b><br>
|
||||
E. Boman, D. Bozdag, U. Catalyurek, A. Gebremedhim, F. Manne.<br>
|
||||
<i>EuroPar 2005</i>, August 2005.
|
||||
</li>
|
||||
<p>
|
||||
<li>
|
||||
<b>A Parallel Distance-2 graph coloring algorithm for distributed memory
|
||||
computers.</b><br>
|
||||
E. Boman, D. Bozdag, U. Catalyurek, A. Gebremedhin, F. Manne, F. Ozguner.<br>
|
||||
<i>HPCC-05</i>, September 2005.
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<b>Miscellaneous</b>
|
||||
<ul>
|
||||
<li>
|
||||
<b>Combinatorial Algorithms Enabling Computational Science: Tales From the
|
||||
Front.</b><br>
|
||||
S. Bhowmick, E. Boman, K. Devine, A. Gebremedhin, B. Hendrickson, P. Hovland, T. Munson, A. Pothen.<br>
|
||||
Sandia National Laboratories Tech. Rep. SAND2006-3914C, Albuquerque, NM, 2006.
|
||||
Submitted to <i>Journal of Physics: Conference Series</i>, July 2006.
|
||||
</li>
|
||||
<p>
|
||||
|
||||
</ul>
|
||||
<!---------MAIN CONTENT AREA ENDS HERE---------><!-- CHANGE CONTACT + E-MAIL, NOTE "SUBJECT" IN E-MAIL CODE --></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr width="100%">
|
||||
<table BORDER=0 WIDTH="100%" >
|
||||
<tr ALIGN=CENTER>
|
||||
<td VALIGN=TOP WIDTH="140">
|
||||
<table BORDER=0 WIDTH="140" >
|
||||
<tr>
|
||||
<td ALIGN=CENTER VALIGN=TOP WIDTH="120"></td>
|
||||
|
||||
<td WIDTH="20"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td ALIGN=CENTER VALIGN=TOP WIDTH="100%"></td>
|
||||
</tr>
|
||||
</table>
|
||||
<!--Image maps below-->
|
||||
<map name="shortMap">
|
||||
<area shape="rect" coords="2,2,108,14"href="https://www.sandia.gov/about/index.html"></area>
|
||||
<area shape="rect" coords="2,19,108,31"href="https://www.sandia.gov/mission/ste/index.html"></area>
|
||||
<area shape="rect" coords="2,36,108,48"href="https://www.sandia.gov/mission/index.html"></area>
|
||||
<area shape="rect" coords="2,53,108,65"href="https://www.sandia.gov/contact-us/index.html"></area>
|
||||
<area shape="rect" coords="2,70,108,82"href="https://www.sandia.gov/news/index.html"></area>
|
||||
<area shape="rect" coords="2,87,108,99"href="https://www.sandia.gov/search/index.html"></area>
|
||||
<area shape="rect" coords="2,104,108,116"href="https://www.sandia.gov/Main.html"></area>
|
||||
</map>
|
||||
<!----------------THIS IS A CHANGE AREA---------------->
|
||||
<!----NAME AND DATE OF LAST REVISION SHOULD BE HERE---->
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
</body>
|
||||
</html>
|
BIN
thirdParty/Zoltan/docs/dev_html/brack3d.png
vendored
Normal file
After Width: | Height: | Size: 26 KiB |
409
thirdParty/Zoltan/docs/dev_html/dev.html
vendored
Normal file
@ -0,0 +1,409 @@
|
||||
<!-------- @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="Zoltan.html">
|
||||
<meta name="review" content="28 May, 1999">
|
||||
<meta name="subject" content="Zoltan Developer's Guide">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2006-2955">
|
||||
<meta name="sandia.create_date" content="05/28/99">
|
||||
<meta name="keywords" content="Zoltan, Zoltan Developer's Guide, Zoltan dynamic load balancing library, Zoltan parallel computing">
|
||||
<meta name="description" content="Zoltan: Developer's Guide for the Zoltan Library project at Sandia National Laboratories">
|
||||
<meta name="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<title>Zoltan Developer's Guide</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-------->
|
||||
<!--------CHANGE THE PAGE OWNER AND EMAIL ADDRESS-------->
|
||||
<link rev="made" title="name of contact" >
|
||||
<!--------CHANGE THE PAGE MAKER AND EMAIL ADDRESS-------->
|
||||
<!--------PLACE FIVE KEY WORDS WITHIN THE QUOTES-------->
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
</head>
|
||||
<body text="#000000">
|
||||
<!-- 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="160" BGCOLOR="#003366">
|
||||
<table BORDER=0 WIDTH="160" valign="top" >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="160"><!--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="160" valign="top" >
|
||||
<!-------------------------------------------------------------------------->
|
||||
<tr ALIGN=LEFT VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="150"><!----------- 0th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="../Zoltan.html">Zoltan
|
||||
Home Page</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 1st little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="../ug_html/ug.html">Zoltan
|
||||
User's Guide</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 2nd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="dev.html">Zoltan
|
||||
Developer's Guide</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 2A-nd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="../Zoltan_FAQ.html">
|
||||
Frequently Asked Questions</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 3rd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="../Zoltan_phil.html">Zoltan
|
||||
Project Description</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 4th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="../Zoltan_pubs.html">Papers
|
||||
and Presentations</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td VALIGN=TOP WIDTH="20"></td>
|
||||
</tr>
|
||||
|
||||
<!-------------------------------------------------------------------------->
|
||||
<tr ALIGN=LEFT VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="150"><!----------- 4Ath little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="../Zoltan_cite.html">How to Cite Zoltan</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 5th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="https://github.com/sandialabs/Zoltan">Download
|
||||
Zoltan</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 6th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="../Zoltan_bugreport.html">Report a Zoltan Bug</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 7th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica">
|
||||
<a href="mailto: zoltan-dev@software.sandia.gov">Contact Zoltan Developers</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 8th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica">
|
||||
<a href="https://www.sandia.gov/general/privacy-security/index.html">Sandia Privacy and Security Notice</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td VALIGN=TOP WIDTH="20"></td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td COLSPAN="2"></td>
|
||||
</tr>
|
||||
|
||||
<!-------------------------------------------------------------------------->
|
||||
</table>
|
||||
</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:
|
||||
</font></font></b>
|
||||
<br>
|
||||
<b><font face="Verdana, Arial, Helvetica"><font size=+2>
|
||||
Parallel Partitioning, Load Balancing and
|
||||
Data-Management Services
|
||||
</font></font></b>
|
||||
<p>
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
<!----------------THIS IS A CHANGE AREA---------------->
|
||||
<!--MAIN CONTENT SHOULD BE PLACED IN THE AREA BELOW-->
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
|
||||
<p><b><font face="Verdana, Arial, Helvetica"><font size=+2>Developer's
|
||||
Guide </font></font></b>
|
||||
<p>
|
||||
<hr WIDTH="100%">
|
||||
<p>
|
||||
<hr WIDTH="100%">
|
||||
<p>
|
||||
<h3><b> The Zoltan Team </b></h3>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="50%" valign=top>
|
||||
<b> Sandia National Laboratories</b><br>
|
||||
<a href="https://www.sandia.gov/~egboman">Erik Boman</a> <br>
|
||||
Cedric Chevalier<br>
|
||||
<a href="https://www.sandia.gov/~kddevin">Karen Devine</a><br>
|
||||
Vitus Leung<br>
|
||||
Sivasankaran Rajamanickam<br>
|
||||
Lee Ann Riesen<br>
|
||||
Michael Wolf<br>
|
||||
</td>
|
||||
<td width="50%" valign=top>
|
||||
<b> Ohio State University</b><br>
|
||||
<a href="https://bmi.osu.edu/~umit/">Umit Catalyurek</a><br>
|
||||
<a href="https://www.ece.osu.edu/~bozdagd">Doruk Bozdag</a><br>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<h3><b> Past Zoltan Contributors</b></h3>
|
||||
<table width="100%"
|
||||
<tr>
|
||||
<td width="50%" valign=top>
|
||||
<b> Sandia National Laboratories: </b><br>
|
||||
Robert Heaphy<br>
|
||||
Bruce Hendrickson <br>
|
||||
Matthew St. John<br>
|
||||
Courtenay Vaughan<br>
|
||||
<br>
|
||||
</td>
|
||||
<td width="50%" valign=top>
|
||||
<b> Williams College</b><br>
|
||||
<a href="https://www.teresco.org/~terescoj/">James Teresco</a><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%" valign=top>
|
||||
<b> National Institute of Standards and Technology</b><br>
|
||||
<a href="https://math.nist.gov/~mitchell">William F. Mitchell</a><br>
|
||||
</td>
|
||||
<td width="50%" valign=top>
|
||||
<b> Rensselaer Polytechnic Institute</b><br>
|
||||
Jamal Faik<br>
|
||||
Luis Gervasio<br>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
<p>
|
||||
<hr WIDTH="100%">
|
||||
<div ALIGN=right>
|
||||
<b><i>Zoltan Developer's Guide, Version 3.3</b></i></div>
|
||||
|
||||
<p>
|
||||
<p>
|
||||
<blockquote>
|
||||
<b>
|
||||
The Zoltan Developer's Guide is undergoing major revision and will be re-released with Zoltan 4.0.
|
||||
Please excuse the inconvenience.
|
||||
</b>
|
||||
</blockquote>
|
||||
<!-------- To Zoltan developers: The former version of dev.html is in devOLD.html. -------->
|
||||
|
||||
<hr WIDTH="100%">
|
||||
Copyright (c) 2000-2012, Sandia National Laboratories. <br>
|
||||
<hr WIDTH="100%">
|
||||
<!-------- To Zoltan developers: Can reactivate these links when revise guide.
|
||||
<br>[<a href="../Zoltan.html">Zoltan Home Page</a> | <a href="dev_intro.html">Next:
|
||||
Introduction and General Principles</a>] ------>
|
||||
<!---------MAIN CONTENT AREA ENDS HERE---------><!-- CHANGE CONTACT + E-MAIL, NOTE "SUBJECT" IN E-MAIL CODE --></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!<hr width="100%">
|
||||
<!--Image maps below-->
|
||||
<map name="shortMap">
|
||||
<area shape="rect" coords="2,2,108,14"href="https://www.sandia.gov/about/index.html"></area>
|
||||
<area shape="rect" coords="2,19,108,31"href="https://www.sandia.gov/mission/ste/index.html"></area>
|
||||
<area shape="rect" coords="2,36,108,48"href="https://www.sandia.gov/mission/index.html"></area>
|
||||
<area shape="rect" coords="2,53,108,65"href="https://www.sandia.gov/contact-us/index.html"></area>
|
||||
<area shape="rect" coords="2,70,108,82"href="https://www.sandia.gov/news/index.html"></area>
|
||||
<area shape="rect" coords="2,87,108,99"href="https://www.sandia.gov/search/index.html"></area>
|
||||
<area shape="rect" coords="2,104,108,116"href="https://www.sandia.gov/Main.html"></area>
|
||||
</map>
|
||||
<!----------------THIS IS A CHANGE AREA---------------->
|
||||
<!----NAME AND DATE OF LAST REVISION SHOULD BE HERE---->
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
|
||||
</body>
|
||||
</html>
|
506
thirdParty/Zoltan/docs/dev_html/devOLD.html
vendored
Normal file
@ -0,0 +1,506 @@
|
||||
<!-------- @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="Zoltan.html">
|
||||
<meta name="review" content="28 May, 1999">
|
||||
<meta name="subject" content="Zoltan Developer's Guide">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2006-2955">
|
||||
<meta name="sandia.create_date" content="05/28/99">
|
||||
<meta name="keywords" content="Zoltan, Zoltan Developer's Guide, Zoltan dynamic load balancing library, Zoltan parallel computing">
|
||||
<meta name="description" content="Zoltan: Developer's Guide for the Zoltan Library project at Sandia National Laboratories">
|
||||
<meta name="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<title>Zoltan Developer's Guide</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="http://www.sandia.gov/html_schema.htm">
|
||||
<!--------CHANGE THE SAND NUMBER INFO-------->
|
||||
<!--------INSERT THE DATE DOCUMENT CREATED-------->
|
||||
<!--------CHANGE THE PAGE OWNER AND EMAIL ADDRESS-------->
|
||||
<link rev="made" title="name of contact" >
|
||||
<!--------CHANGE THE PAGE MAKER AND EMAIL ADDRESS-------->
|
||||
<!--------PLACE FIVE KEY WORDS WITHIN THE QUOTES-------->
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
</head>
|
||||
<body text="#000000">
|
||||
<!-- 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="160" BGCOLOR="#003366">
|
||||
<table BORDER=0 WIDTH="160" valign="top" >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="160"><!--SANDIA LOGO AT TOP LEFT-->
|
||||
<a href="http://www.sandia.gov/Main.html"><img SRC="http://www.sandia.gov/images/snlstkdc.gif" ALT="[Sandia National Laboratories]" BORDER=0 valign="top" height=49 width=126></a>
|
||||
<p><img ISMAP SRC="http://www.sandia.gov/images/labelNEW.gif" ALT="[navigation panel]" HSPACE=2 BORDER=0 usemap="#shortMap" height=119 width=111></td>
|
||||
|
||||
<td><img SRC="http://www.sandia.gov/images/1pixel.gif" BORDER=0 height=1 width=10></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table BORDER=0 WIDTH="160" valign="top" >
|
||||
<!-------------------------------------------------------------------------->
|
||||
<tr ALIGN=LEFT VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="150"><!----------- 0th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="../Zoltan.html">Zoltan
|
||||
Home Page</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 1st little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="../ug_html/ug.html">Zoltan
|
||||
User's Guide</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 2nd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="dev.html">Zoltan
|
||||
Developer's Guide</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 2A-nd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="../Zoltan_FAQ.html">
|
||||
Frequently Asked Questions</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 3rd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="../Zoltan_phil.html">Zoltan
|
||||
Project Description</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 4th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="../Zoltan_pubs.html">Papers
|
||||
and Presentations</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td VALIGN=TOP WIDTH="20"></td>
|
||||
</tr>
|
||||
|
||||
<!-------------------------------------------------------------------------->
|
||||
<tr ALIGN=LEFT VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="150"><!----------- 4Ath little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="../Zoltan_cite.html">How to Cite Zoltan</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 5th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="http://www.cs.sandia.gov/~web1400/1400_download.html">Download
|
||||
Zoltan</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 6th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="../Zoltan_bugreport.html">Report a Zoltan Bug</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 7th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica">
|
||||
<a href="mailto: zoltan-dev@software.sandia.gov">Contact Zoltan Developers</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 8th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica">
|
||||
<a href="http://www.sandia.gov/general/privacy-security/index.html">Sandia Privacy and Security Notice</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td VALIGN=TOP WIDTH="20"></td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td COLSPAN="2"></td>
|
||||
</tr>
|
||||
|
||||
<!-------------------------------------------------------------------------->
|
||||
</table>
|
||||
</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:
|
||||
</font></font></b>
|
||||
<br>
|
||||
<b><font face="Verdana, Arial, Helvetica"><font size=+2>
|
||||
Parallel Partitioning, Load Balancing and
|
||||
Data-Management Services
|
||||
</font></font></b>
|
||||
<p>
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
<!----------------THIS IS A CHANGE AREA---------------->
|
||||
<!--MAIN CONTENT SHOULD BE PLACED IN THE AREA BELOW-->
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
|
||||
<p><b><font face="Verdana, Arial, Helvetica"><font size=+2>Developer's
|
||||
Guide </font></font></b>
|
||||
<p>
|
||||
<hr WIDTH="100%">
|
||||
<p>
|
||||
<hr WIDTH="100%">
|
||||
<p>
|
||||
<h3><b> The Zoltan Team </b></h3>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="50%" valign=top>
|
||||
<b> Sandia National Laboratories</b><br>
|
||||
<a href="http://www.sandia.gov/~egboman">Erik Boman</a> <br>
|
||||
Cedric Chevalier<br>
|
||||
<a href="http://www.cs.sandia.gov/~kddevin">Karen Devine</a><br>
|
||||
Vitus Leung<br>
|
||||
Lee Ann Riesen<br>
|
||||
</td>
|
||||
<td width="50%" valign=top>
|
||||
<b> Ohio State University</b><br>
|
||||
<a href="http://bmi.osu.edu/~umit/">Umit Catalyurek</a><br>
|
||||
<a href="http://www.ece.osu.edu/~bozdagd">Doruk Bozdag</a><br>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<h3><b> Past Zoltan Contributors</b></h3>
|
||||
<table width="100%"
|
||||
<tr>
|
||||
<td width="50%" valign=top>
|
||||
<b> Sandia National Laboratories: </b><br>
|
||||
Robert Heaphy<br>
|
||||
<a href="http://www.cs.sandia.gov/~bahendr">Bruce Hendrickson</a></b><br>
|
||||
Matthew St. John<br>
|
||||
Courtenay Vaughan<br>
|
||||
<br>
|
||||
</td>
|
||||
<td width="50%" valign=top>
|
||||
<b> Williams College</b><br>
|
||||
<a href="http://www.teresco.org/~terescoj/">James Teresco</a><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%" valign=top>
|
||||
<b> National Institute of Standards and Technology</b><br>
|
||||
<a href="http://math.nist.gov/~mitchell">William F. Mitchell</a><br>
|
||||
</td>
|
||||
<td width="50%" valign=top>
|
||||
<b> Rensselaer Polytechnic Institute</b><br>
|
||||
Jamal Faik<br>
|
||||
Luis Gervasio<br>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
<p>
|
||||
<hr WIDTH="100%">
|
||||
<div ALIGN=right>
|
||||
<b><i>Zoltan Developer's Guide, Version 3.2</b></i></div>
|
||||
|
||||
<p>
|
||||
<h4>
|
||||
<table border="1"> <tr> <td>
|
||||
<a href="http://www.cs.sandia.gov/~kddevin/Zoltan_pdf/dev.pdf">DOWNLOAD PDF VERSION HERE.</a>
|
||||
</td> </tr> </table>
|
||||
<p>
|
||||
|
||||
|
||||
<h4>
|
||||
<a href="dev_intro.html">Introduction and General Principles</a></h4>
|
||||
|
||||
<blockquote><a href="dev_intro_philosophy.html">Philosophy of Zoltan</a>
|
||||
<br><a href="dev_intro_coding.html">Coding Principles in Zoltan</a>
|
||||
<ol TYPE=A><a href="dev_intro_coding.html#include">Include files</a>
|
||||
<br><a href="dev_intro_coding.html#global">Global Variables</a>
|
||||
<br><a href="dev_intro_coding.html#functions">Function Names</a>
|
||||
<br><a href="dev_intro_coding.html#par_comm">Parallel Communication</a>
|
||||
<br><a href="dev_intro_coding.html#memory1">Memory Management</a>
|
||||
<br><a href="dev_intro_coding.html#return">Errors, Warnings and Return Codes</a>
|
||||
</ol>
|
||||
<a href="dev_intro_sqe.html">Zoltan Quality Assurance</a>
|
||||
</blockquote>
|
||||
|
||||
<h4>
|
||||
<a href="dev_dist.html">Zoltan Distribution</a></h4>
|
||||
|
||||
<ol TYPE=1><a href="dev_dist_cvs.html">CVS</a>
|
||||
<br><a href="dev_dist_dir.html">Layout of Directories</a>
|
||||
<br><a href="dev_dist_compile.html">Compilation and Makefiles</a></ol>
|
||||
|
||||
<h4>
|
||||
<a href="dev_lb.html">Zoltan Interface and Data Structures</a></h4>
|
||||
|
||||
<ol TYPE=1><a href="dev_lb_interface.html">Interface Functions</a>
|
||||
<br><a href="dev_lb_types.html">ID Data Types</a>
|
||||
<br><a href="dev_lb_structs.html">Data Structures</a></ol>
|
||||
|
||||
<h4>
|
||||
<a href="dev_services.html">Services (to simplify new algorithm development)</a></h4>
|
||||
|
||||
<ol TYPE=1><a href="dev_services_params.html">Parameter Setting Routines</a>
|
||||
<br><a href="dev_services_parallel.html">Parallel Computing Routines</a>
|
||||
<br><a href="dev_services_objlist.html">Common Functions for Querying Applications</a>
|
||||
<br><a href="dev_services_hash.html">Hash Function</a>
|
||||
<br><a href="dev_services_time.html">Timing Routines</a>
|
||||
<br><a href="dev_services_zoltantimer.html">High-Level Timing Services: ZOLTAN_TIMER</a>
|
||||
<br><a href="dev_services_debug.html">Debugging Services</a></ol>
|
||||
|
||||
<h4>
|
||||
<a href="dev_add.html">Adding New Load-Balancing Algorithms to Zoltan</a></h4>
|
||||
|
||||
<ol TYPE=1><a href="dev_add_interface.html">Load-Balancing Interface Routines</a>
|
||||
<br><a href="dev_add_lb.html">Load-Balancing Function Implementation</a>
|
||||
<br><a href="dev_add_struct.html">Data Structures</a>
|
||||
<br><a href="dev_add_memory.html">Memory Management</a>
|
||||
<br><a href="dev_add_params.html">Parameters</a>
|
||||
<br><a href="dev_add_remap.html">Part Remapping</a>
|
||||
</ol>
|
||||
|
||||
<h4>
|
||||
<a href="dev_mig.html">Migration Tools</a></h4>
|
||||
|
||||
<h4>
|
||||
<a href="dev_fortran.html">FORTRAN Interface</a></h4>
|
||||
|
||||
<h4>
|
||||
<a href="dev_cpp.html">C++ Interface</a></h4>
|
||||
|
||||
<h4>
|
||||
<a href="dev_refs.html">References</a></h4>
|
||||
|
||||
<h4>
|
||||
<a href="dev_driver.html">Appendix: Using the Test Drivers <i>zdrive</i>, <i>zCPPdrive</i> and <i>zfdrive</i></a></h4>
|
||||
|
||||
<ul><a href="dev_driver.html#Introduction">Introduction</a>
|
||||
<br><a href="dev_driver.html#running zdrive">Running the Test Drivers</a>
|
||||
<br><a href="dev_driver.html#adding algorithms">Adding New Algorithms</a></ul>
|
||||
|
||||
<h4>
|
||||
<a href="dev_view.html">Appendix: Visualization of Geometric Partitions</a></h4>
|
||||
|
||||
<ul><a href="dev_view.html#Vis_2D">2D problems with <I>gnuplot</I></a>
|
||||
<br><a href="dev_view.html#Vis_3D">3D problems with <I>vtk_view</I></a>
|
||||
<br><a href="dev_view.html#Vis_offscreen">Off-screen rendering with <I>vtk_write</I></a>
|
||||
<br><a href="dev_view.html#Vis_other">Other file formats</a>
|
||||
</ul>
|
||||
|
||||
<h4>
|
||||
<a href="dev_test_script.html">Appendix: Using the Test Script <i>test_zoltan</i></a></h4>
|
||||
|
||||
<h4>
|
||||
<a href="dev_rcb.html">Appendix: Recursive Coordinate Bisection (RCB)</a></h4>
|
||||
|
||||
<h4>
|
||||
<a href="dev_rib.html">Appendix: Recursive Inertial Bisection (RIB)</a></h4>
|
||||
|
||||
<h4>
|
||||
<a href="dev_parmetis.html">Appendix: Graph Partitioning (ParMETIS and Jostle) </a></h4>
|
||||
|
||||
<h4>
|
||||
<a href="dev_phg.html">Appendix: Hypergraph Partitioning (PHG) </a></h4>
|
||||
|
||||
<h4>
|
||||
<a href="dev_reftree.html">Appendix: Refinement Tree </a></h4>
|
||||
|
||||
<h4>
|
||||
<a href="dev_hsfc.html">Appendix: Hilbert Space_Filling Curve (HSFC)</a></h4>
|
||||
|
||||
<h4>
|
||||
<a href="dev_degenerate.html">Appendix: Handling Degenerate Geometries</a></h4>
|
||||
|
||||
<hr WIDTH="100%">
|
||||
Copyright (c) 2000-2007, Sandia National Laboratories. <br>
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="../Zoltan.html">Zoltan Home Page</a> | <a href="dev_intro.html">Next:
|
||||
Introduction and General Principles</a>] <!---------MAIN CONTENT AREA ENDS HERE---------><!-- CHANGE CONTACT + E-MAIL, NOTE "SUBJECT" IN E-MAIL CODE --></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!<hr width="100%">
|
||||
<!--Image maps below-->
|
||||
<map name="shortMap">
|
||||
<area shape="rect" coords="2,2,108,14"href="http://www.sandia.gov/about/index.html"></area>
|
||||
<area shape="rect" coords="2,19,108,31"href="http://www.sandia.gov/mission/ste/index.html"></area>
|
||||
<area shape="rect" coords="2,36,108,48"href="http://www.sandia.gov/mission/index.html"></area>
|
||||
<area shape="rect" coords="2,53,108,65"href="http://www.sandia.gov/contact-us/index.html"></area>
|
||||
<area shape="rect" coords="2,70,108,82"href="http://www.sandia.gov/news/index.html"></area>
|
||||
<area shape="rect" coords="2,87,108,99"href="http://www.sandia.gov/search/index.html"></area>
|
||||
<area shape="rect" coords="2,104,108,116"href="http://www.sandia.gov/Main.html"></area>
|
||||
</map>
|
||||
<!----------------THIS IS A CHANGE AREA---------------->
|
||||
<!----NAME AND DATE OF LAST REVISION SHOULD BE HERE---->
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
|
||||
</body>
|
||||
</html>
|
127
thirdParty/Zoltan/docs/dev_html/dev_add.html
vendored
Normal file
@ -0,0 +1,127 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.6 sun4m) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="karen devine, kddevin@sandia.gov">
|
||||
<title> Zoltan Developer's Guide: Adding Algorithms</title>
|
||||
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="dev.html">Zoltan Developer's Guide</a>
|
||||
| <a href="dev_add_interface.html">Next</a> | <a href="dev_services_debug.html">Previous</a></i></b></div>
|
||||
|
||||
<h2>
|
||||
<a NAME="new_methods"></a>Adding New Load-Balancing Algorithms to Zoltan</h2>
|
||||
The Zoltan library is designed so that adding new load-balancing algorithms
|
||||
to the library is simple. In many cases, existing code can be easily modified
|
||||
to use the interface query functions to build the data structures needed
|
||||
for the algorithm. The process for adding new algorithms to the library
|
||||
is described below; more detail is provided at each link.
|
||||
<ol>
|
||||
<li>
|
||||
Make sure you follow the <a href="dev_intro_philosophy.html">Philosophy
|
||||
of Zoltan</a> and the <a href="dev_intro_coding.html">Coding Principles
|
||||
in Zoltan</a>.</li>
|
||||
|
||||
<li>
|
||||
Use the <a href="dev_add_struct.html">Data Structures</a>
|
||||
provided by Zoltan.</li>
|
||||
|
||||
<li>
|
||||
Implement a <a href="dev_add_lb.html">Load-Balancing Function</a> front-end
|
||||
to the algorithm. Note that Zoltan load-balance methods should assign objects both to processors and parts, which may be different. The recommended strategy is to assign objects to parts first, then use Zoltan_LB_Part_To_Proc to generate the corresponding processors.</li>
|
||||
|
||||
<li>
|
||||
Add the algorithm to the <a href="dev_add_interface.html">Load-Balancing
|
||||
Interface Routines</a>.</li>
|
||||
|
||||
<li>
|
||||
Add the <a href="dev_add_params.html">Parameters</a> needed by the algorithm.
|
||||
Also make sure that the algorithm uses the <a href="../ug_html/ug_param.html#General_Parameters">General Parameters</a> in Zoltan properly, in particular
|
||||
<a href="../ug_html/ug_alg.html#LB Parameters"><b>Imbalance_Tol</b></a> and
|
||||
<a href="../ug_html/ug_param.html#Debug Levels in Zoltan"><b>Debug_Level.</b></a></li>
|
||||
|
||||
<li>
|
||||
If necessary, write a routine to free your dynamically allocated data structures.
|
||||
See tips on <a href="dev_add_memory.html">memory management</a></li>
|
||||
in Zoltan.</a></li>
|
||||
|
||||
<li>
|
||||
If your algorithm uses persistent data structures,
|
||||
like the RCB tree with <a href="../ug_html/ug_alg_rcb.html">KEEP_CUTS</a>,
|
||||
write a routine to copy your load balancing
|
||||
<a href="dev_add_struct.html#Copy">data structure</a>. </li>
|
||||
|
||||
<li>
|
||||
We recommend you add part remapping to your algorithm using
|
||||
<a href="dev_add_.html"><b>Zoltan_LB_Remap</b></a>.</li>
|
||||
|
||||
<li>
|
||||
Update the <a href="dev_fortran.html#fortran dev add">Fortran</a>
|
||||
and <a href="dev_cpp.html">C++</a> interfaces, if necessary.</li>
|
||||
|
||||
<li>
|
||||
Document your new method. The documentation should be written in a format
|
||||
that can easily be converted into HTML and PDF. Consider adding a
|
||||
simple application to the <I>examples</I> directory demonstrating the
|
||||
use of your method.</li>
|
||||
|
||||
<li>
|
||||
Please contact the Zoltan team if you would like your method to be distributed
|
||||
with future versions of Zoltan.</li>
|
||||
|
||||
</ol>
|
||||
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a> | <a href="dev_add_interface.html">Next:
|
||||
Load-Balancing Interface Routines</a> | <a href="dev_services_debug.html">Previous:
|
||||
Debugging Services</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
101
thirdParty/Zoltan/docs/dev_html/dev_add_interface.html
vendored
Normal file
@ -0,0 +1,101 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="karen devine, kddevin@sandia.gov">
|
||||
<title> Zoltan Developer's Guide: Adding Interface Routines</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_add_lb.html">Next</a> | <a href="dev_add.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<h2>
|
||||
<a NAME="new_interface"></a>Load-Balancing Interface Routines</h2>
|
||||
Any new method that you wish to add to the Zoltan library must have an
|
||||
interface that conforms to the prototype <b><a href="dev_add_lb.html">LB_FN</a></b>.
|
||||
Note that the load balancing
|
||||
function may return either import lists, export lists, or both. All
|
||||
processes must return the same type of list. If import (export) lists
|
||||
are not computed, then the variable <i>num_import</i> (<i>num_export</i>)
|
||||
must be set to a negative number (typically -1) upon return.
|
||||
Full support of the <a href="../ug_html/ug_alg.html#RETURN_LISTS">RETURN_LISTS</a>
|
||||
parameter is not required.
|
||||
If <a href="../ug_html/ug_alg.html#RETURN_LISTS">RETURN_LISTS</a>
|
||||
is not set to NONE,
|
||||
the new algorithm may return either import or export lists; the Zoltan
|
||||
interface will then build the lists requested by
|
||||
<a href="../ug_html/ug_alg.html#RETURN_LISTS">RETURN_LISTS</a>.
|
||||
|
||||
<p>
|
||||
A new algorithm must be added to the load-balancing interface for use
|
||||
with parameter
|
||||
<a href="../ug_html/ug_alg.html#LB_METHOD">LB_METHOD</a>.
|
||||
An entry for the new algorithm must be added to the enumerated type <b>Zoltan_LB_Method</b>
|
||||
in <i>lb/lb_const.h</i>. An external <b><a href="dev_add_lb.html">LB_FN</a></b>
|
||||
prototype for the load-balancing function must also be added to <i>lb/lb_const.h</i>;
|
||||
see the prototype for function <i>Zoltan_RCB</i> as an example. A character
|
||||
string describing the new algorithm should be chosen to be used as the parameter
|
||||
value for
|
||||
<a href="../ug_html/ug_alg.html#LB_METHOD">LB_METHOD</a>.
|
||||
In
|
||||
function <b>Zoltan_LB_Set_LB_Method</b>,
|
||||
a test for this string should be added
|
||||
and the <i>Method</i> and <i>LB_Fn</i> fields of the <b><a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a></b>
|
||||
should be set to the new enumerated type value and new load-balancing function
|
||||
pointer.
|
||||
<br>
|
||||
<p>
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a> | <a href="dev_add_lb.html">Next:
|
||||
Load-Balancing Function Implementation</a> | <a href="dev_add.html">Previous:
|
||||
Adding New Algorithms</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
259
thirdParty/Zoltan/docs/dev_html/dev_add_lb.html
vendored
Normal file
@ -0,0 +1,259 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; U; SunOS 5.6 sun4m) [Netscape]">
|
||||
<META NAME="sandia.approved" CONTENT="SAND99-1376">
|
||||
<META NAME="author" CONTENT="karen devine, kddevin@sandia.gov">
|
||||
|
||||
<TITLE> Zoltan Developer's Guide: Adding Load-Balancing Functions</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_add_struct.html">Next</a> | <a href="dev_add_interface.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<H2>
|
||||
<A NAME="new_implementation"></A>Load-Balancing Function Implementation</H2>
|
||||
The new load-balancing algorithm should be implemented as an <B>ZOLTAN_LB_FN</B>.
|
||||
The type definition for an <B>ZOLTAN_LB_FN</B> is in <I>lb/lb_const.h</I> and
|
||||
is described below. When the new algorithm is selected,
|
||||
the <I>LB_Fn</I> field of the <B>Zoltan_Struct</B> is set to point to the <B>ZOLTAN_LB_FN</B>
|
||||
function for the new algorithm. This pointer is then used in invoking load
|
||||
balancing in <B><A HREF="../ug_html/ug_interface_lb.html#Zoltan_LB_Partition">Zoltan_LB_Partition</A></B>.
|
||||
<BR>
|
||||
|
||||
<P>
|
||||
<hr>
|
||||
<HR>typedef int <B>ZOLTAN_LB_FN</B>
|
||||
(struct <B><A HREF="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</A></B> *<I>zz</I>,
|
||||
float *<I>part_sizes</I>,
|
||||
int *<I>num_import</I>,
|
||||
<B><A HREF="dev_lb_types.html">ZOLTAN_ID_PTR</A></B> *<I>import_global_ids</I>,
|
||||
<B><A HREF="dev_lb_types.html">ZOLTAN_ID_PTR</A></B> *<I>import_local_ids</I>,
|
||||
int **<I>import_procs</I>,
|
||||
int **<I>import_to_parts</I>,
|
||||
int *<I>num_export</I>,
|
||||
<B><A HREF="dev_lb_types.html">ZOLTAN_ID_PTR</A></B> *<I>export_global_ids</I>,
|
||||
<B><A HREF="dev_lb_types.html">ZOLTAN_ID_PTR</A></B> *<I>export_local_ids</I>,
|
||||
int **<I>export_procs</I>,
|
||||
int **<I>export_to_parts</I>);
|
||||
<HR>
|
||||
<BR>The <B>ZOLTAN_LB_FN</B> function type describes the arguments passed to a
|
||||
load-balancing function. The input to the function is a <B><A HREF="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</A></B>
|
||||
containing pointers to application-registered functions to be used in the
|
||||
load-balancing algorithm. The remaining arguments are output parameters
|
||||
listing the objects to be imported or exported to the processor in the
|
||||
new decomposition. The arrays for global and local IDs and source processors
|
||||
must be allocated by the load-balancing function. The load-balancing function
|
||||
may return either the import arrays, the export arrays, or both. If no
|
||||
import data is returned, *<I>num_import </I>must be set to a negative number,
|
||||
and similarly with *<I>num_export.</I>
|
||||
Full support of the <a href="../ug_html/ug_alg.html#RETURN_LISTS">RETURN_LISTS</a>
|
||||
parameter is not required.
|
||||
If <a href="../ug_html/ug_alg.html#RETURN_LISTS">RETURN_LISTS</a>
|
||||
is not set to NONE,
|
||||
the new algorithm may return either import or export lists; the Zoltan
|
||||
interface will then build the lists requested by
|
||||
<a href="../ug_html/ug_alg.html#RETURN_LISTS">RETURN_LISTS</a>.
|
||||
|
||||
<BR>
|
||||
<TABLE WIDTH="100%" >
|
||||
<TR VALIGN=TOP>
|
||||
<TD VALIGN=TOP WIDTH="20%"><B>Arguments:</B></TD>
|
||||
|
||||
<TD WIDTH="80%"></TD>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD VALIGN=TOP><I> zz</I></TD>
|
||||
|
||||
<TD>A pointer to the <B><A HREF="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</A></B>
|
||||
to be used in the load-balancing algorithm.</TD>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD VALIGN=TOP><I> part_sizes</I></TD>
|
||||
|
||||
<TD>Input: an array of part sizes for each weight component.
|
||||
Entry
|
||||
<i>part_sizes[i*obj_weight_dim+j]</i>
|
||||
contains the user-requested
|
||||
part size for part <i>i</i> with respect to object weight <i>j</i> for
|
||||
<i>i</i>=0,1,...,number of parts-1, and
|
||||
<i>j</i>=0,1,...,<i>obj_weight_dim</i>-1.
|
||||
If the application sets parameter
|
||||
<i><a href="../ug_html/ug_param.html#OBJ_WEIGHT_DIM">OBJ_WEIGHT_DIM</a></i>,
|
||||
<i>obj_weight_dim</i> is the set value of
|
||||
<i><a href="../ug_html/ug_param.html#OBJ_WEIGHT_DIM">OBJ_WEIGHT_DIM</a></i>;
|
||||
otherwise, <i>obj_weight_dim</i> is one.
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD VALIGN=TOP><I> num_import</I></TD>
|
||||
|
||||
<TD>Upon return, the number of objects to be imported to the processor
|
||||
for the new decomposition. A negative number indicates that no import data
|
||||
has been computed and the import arrays should be ignored.</TD>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD VALIGN=TOP><I> import_global_ids</I></TD>
|
||||
|
||||
<TD>Upon return, an array of <I>num_import</I> global IDs
|
||||
of objects to be imported to the processor for the new decomposition.
|
||||
If this array is non-null, it must be allocated by
|
||||
<b><a href="dev_add_memory.html#Zoltan_Special_Malloc">Zoltan_Special_Malloc</a></b>.
|
||||
</td>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD VALIGN=TOP> <I>import_local_ids</I></TD>
|
||||
|
||||
<TD>Upon return, an array of <I>num_import</I> local IDs
|
||||
of objects to be imported to the processor for the new decomposition.
|
||||
If this array is non-null, it must be allocated by
|
||||
<b><a href="dev_add_memory.html#Zoltan_Special_Malloc">Zoltan_Special_Malloc</a></b>.
|
||||
</td>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD VALIGN=TOP> <I>import_procs</I></TD>
|
||||
|
||||
<TD>Upon return, an array of size <I>num_import</I> containing the processor
|
||||
IDs of processors owning (in the old decomposition) the objects to be imported
|
||||
for the new decomposition.
|
||||
If this array is non-null, it must be allocated by
|
||||
<b><a href="dev_add_memory.html#Zoltan_Special_Malloc">Zoltan_Special_Malloc</a></b>.
|
||||
</td>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD VALIGN=TOP> <I>import_to_parts</I></TD>
|
||||
|
||||
<TD>Upon return, an array of size <I>num_import</I> containing the part
|
||||
IDs of parts to which objects will be imported
|
||||
<i>in the NEW decomposition</i>.
|
||||
If this array is non-null, it must be allocated by
|
||||
<b><a href="dev_add_memory.html#Zoltan_Special_Malloc">Zoltan_Special_Malloc</a></b>.
|
||||
</td>
|
||||
</TR>
|
||||
<TR VALIGN=TOP>
|
||||
<TD> <I>num_export</I></TD>
|
||||
|
||||
<TD>Upon return, the number of objects to be exported from the processor
|
||||
for the new decomposition. A negative number indicates that no export data
|
||||
has been computed and the export arrays should be ignored.</TD>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD> <I>export_global_ids</I></TD>
|
||||
|
||||
<TD>Upon return, an array of <I>num_export</I> global IDs
|
||||
of objects to be exported from the processor for the new decomposition.
|
||||
If this array is non-null, it must be allocated by
|
||||
<b><a href="dev_add_memory.html#Zoltan_Special_Malloc">Zoltan_Special_Malloc</a></b>.
|
||||
</td>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD> <I>export_local_ids</I></TD>
|
||||
|
||||
<TD>Upon return, an array of <I>num_export</I> local IDs
|
||||
of objects to be exported from the processor for the new decomposition.
|
||||
If this array is non-null, it must be allocated by
|
||||
<b><a href="dev_add_memory.html#Zoltan_Special_Malloc">Zoltan_Special_Malloc</a></b>.
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD> <I>export_procs</I></TD>
|
||||
|
||||
<TD>Upon return, an array of size <I>num_export</I> containing the
|
||||
processor IDs of processors owning (in the old decomposition) the objects
|
||||
to be exported for the new decomposition.
|
||||
If this array is non-null, it must be allocated by
|
||||
<b><a href="dev_add_memory.html#Zoltan_Special_Malloc">Zoltan_Special_Malloc</a></b>.
|
||||
</td>
|
||||
</TR>
|
||||
<TR VALIGN=TOP>
|
||||
<TD> <I>export_to_parts</I></TD>
|
||||
|
||||
<TD>Upon return, an array of size <I>num_export</I> containing the
|
||||
part IDs of parts to which the objects will be
|
||||
exported for the new decomposition.
|
||||
If this array is non-null, it must be allocated by
|
||||
<b><a href="dev_add_memory.html#Zoltan_Special_Malloc">Zoltan_Special_Malloc</a></b>.
|
||||
</td>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD></TD>
|
||||
|
||||
<TD></TD>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD><B>Returned Value:</B></TD>
|
||||
|
||||
<TD></TD>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD VALIGN=TOP> int</TD>
|
||||
|
||||
<TD><A HREF="../ug_html/ug_interface.html#Error Codes">Error code</A>.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<HR WIDTH="100%">
|
||||
<BR>[<A HREF="dev.html">Table of Contents</A> | <A HREF="dev_add_struct.html">Next:
|
||||
Data Structures</A> | <A HREF="dev_add_interface.html">Previous:
|
||||
Load-Balancing Interface Routines</A> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</BODY>
|
||||
</HTML>
|
276
thirdParty/Zoltan/docs/dev_html/dev_add_memory.html
vendored
Normal file
@ -0,0 +1,276 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="karen devine, kddevin@sandia.gov">
|
||||
<title> Zoltan Developer's Guide: Adding Algorithms: How to handle memory</title>
|
||||
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="dev.html">Zoltan Developer's Guide</a>
|
||||
| <a href="dev_add_params.html">Next</a> | <a href="dev_add_struct.html">Previous</a></i></b></div>
|
||||
<!------------------------------------------------------------------------->
|
||||
|
||||
|
||||
<h2>
|
||||
Memory Management in Zoltan Algorithms</h2>
|
||||
Zoltan uses a <a href="../ug_html/ug_util_mem.html">memory management
|
||||
package</a> to simplify debugging of memory problems.
|
||||
It is strongly recommended that algorithm
|
||||
developers use the routines in this package, such as
|
||||
<a href="../ug_html/ug_util_mem.html#Zoltan_Malloc"><b>ZOLTAN_MALLOC</b> </a>,
|
||||
<a href="../ug_html/ug_util_mem.html#Zoltan_Calloc"><b>ZOLTAN_CALLOC</b> </a> and
|
||||
<b><a href="../ug_html/ug_util_mem.html#Zoltan_Free">ZOLTAN_FREE</a></b>, instead
|
||||
of the standard C routines for most memory management.
|
||||
<p>
|
||||
Macros that simplify the <a href="dev_lb_types.html#ID alloc">allocation of global and local identifiers (IDs)</a>
|
||||
are defined in <i>zz/zz_id_const.h</i>. These macros are described in the
|
||||
<a href="dev_lb_types.html">ID Data Types</a> section. The macros include
|
||||
error checking for the allocations and, thus, their use is highly recommended.
|
||||
|
||||
<p>When a dynamic structure needs to be returned to the application,
|
||||
special memory allocation routines are needed. For example, the import
|
||||
and export lists of data to migrate are returned to an application from
|
||||
<b><a href="../ug_html/ug_interface_lb.html#Zoltan_LB_Partition">Zoltan_LB_Partition</a></b>
|
||||
and
|
||||
<b><a href="../ug_html/ug_interface_mig.html#Zoltan_Invert_Lists">Zoltan_Invert_Lists</a></b>.
|
||||
There are two special routines for managing memory for such situations,
|
||||
called <b><a href="#Zoltan_Special_Malloc">Zoltan_Special_Malloc</a></b> and <b><a href="#Zoltan_Special_Free">Zoltan_Special_Free</a></b>.
|
||||
Algorithms must use these functions to maintain compatibility with both
|
||||
C and Fortran90 applications; these special routines manage memory in a
|
||||
way that is compatible with both languages.
|
||||
<p>Some load-balancing algorithms may contain persistent data structures,
|
||||
that is, data structures that are preserved between calls to the load-balancing
|
||||
routine. The <a href="dev_lb_structs.html"><b>Zoltan_Struct</b></a> structure contains a field
|
||||
<a href="dev_add_struct.html"><i>LB.Data_Structure</i></a>
|
||||
for this purpose, allowing multiple Zoltan structures to preserve
|
||||
their own decomposition data. The developer should write a function that
|
||||
frees this data structure. Use <b>Zoltan_RCB_Free_Structure </b>as an
|
||||
example.
|
||||
<p>
|
||||
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr>
|
||||
<a NAME="Zoltan_Special_Malloc"></a>
|
||||
<hr>
|
||||
int <b>Zoltan_Special_Malloc</b>(struct
|
||||
<b><a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a></b>
|
||||
*<i>zz</i>, void **<i>array</i>, int <i>size</i>, <b>ZOLTAN_SPECIAL_MALLOC_TYPE</b><i>type</i>);
|
||||
<hr>
|
||||
<p>The <b>Zoltan_Special_Malloc</b> routine allocates memory to be returned to the application by Zoltan (e.g., the result arrays
|
||||
of
|
||||
<b><a href="../ug_html/ug_interface_lb.html#Zoltan_LB_Partition">Zoltan_LB_Partition</a></b>
|
||||
and
|
||||
<b><a href="../ug_html/ug_interface_mig.html#Zoltan_Invert_Lists">Zoltan_Invert_Lists</a></b>).
|
||||
Returned memory must be allocated by <b>Zoltan_Special_Malloc</b> to insure it is allocated
|
||||
by the same language as the application. Memory allocated by <b>Zoltan_Special_Malloc</b>
|
||||
must be deallocated by <b><a href="#Zoltan_Special_Free">Zoltan_Special_Free</a></b>.
|
||||
<br>
|
||||
<table WIDTH="100%" >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="20%"><b>Arguments:</b></td>
|
||||
|
||||
<td WIDTH="80%"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><i> zz</i></td>
|
||||
|
||||
<td>The Zoltan structure currently in use.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><i> array</i></td>
|
||||
|
||||
<td>
|
||||
Upon return, a pointer to the allocated space.
|
||||
Usually of type int** or <b><a href="dev_lb_types.html">ZOLTAN_ID_PTR</a></b>*.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><i> size</i></td>
|
||||
|
||||
<td>The number of elements (not bytes) to be allocated.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>type</i></td>
|
||||
|
||||
<td>The type of array to allocate. Must be one of <b>ZOLTAN_SPECIAL_MALLOC_INT</b>,
|
||||
<b>ZOLTAN_SPECIAL_MALLOC_GID</b>
|
||||
or <b>ZOLTAN_SPECIAL_MALLOC_LID</b> for processor numbers, <a href="dev_lb_types.html">global IDs</a> and <a href="dev_lb_types.html">local IDs</a>, respectively.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><b>Returned Value:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> int</td>
|
||||
|
||||
<td>1 if the allocation succeeded; 0 if it failed.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Example:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP></td>
|
||||
|
||||
<td>
|
||||
<tt>
|
||||
ierr = <b>Zoltan_Special_Malloc</b>(<i>zz</i>, (void **)<i>import_gid</i>,
|
||||
<br> <i>num_import</i>,
|
||||
<br> <b>ZOLTAN_SPECIAL_MALLOC_GID</b>);
|
||||
</tt>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP></td>
|
||||
|
||||
<td>Allocates an array with <i>num_import</i> <a href="dev_lb_types.html">global IDs</a>
|
||||
and returns a pointer to the allocated space in <i>import_gid</i>.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr>
|
||||
<a NAME="Zoltan_Special_Free"></a>
|
||||
<hr>
|
||||
int <b>Zoltan_Special_Free</b>(struct <b><a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a></b>
|
||||
*<i>zz</i>, void **<i>array</i>,<b> ZOLTAN_SPECIAL_MALLOC_TYPE</b> <i>type</i>);
|
||||
<hr>
|
||||
<p><b>Zoltan_Special_Free</b> frees memory allocated by <b><a href="#Zoltan_Special_Malloc">Zoltan_Special_Malloc</a></b>.
|
||||
The array pointer is set to NULL upon return.
|
||||
<br>
|
||||
<table WIDTH="100%" >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="20%"><b>Arguments:</b></td>
|
||||
|
||||
<td WIDTH="80%"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><i> zz</i></td>
|
||||
|
||||
<td>The Zoltan structure currently in use.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><i> array</i></td>
|
||||
|
||||
<td>The array to be freed. Upon return, the pointer is set to NULL.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>type</i></td>
|
||||
|
||||
<td>The type of the array. Must be one of <b>ZOLTAN_SPECIAL_MALLOC_INT</b>,
|
||||
<b>ZOLTAN_SPECIAL_MALLOC_GID</b>
|
||||
or <b>ZOLTAN_SPECIAL_MALLOC_LID</b> for processor numbers, <a href="dev_lb_types.html">global IDs</a> and <a href="dev_lb_types.html">local IDs</a>, respectively.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><b>Returned Value:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> int</td>
|
||||
|
||||
<td>1 if the deallocation succeeded; 0 if it failed.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Example:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP></td>
|
||||
|
||||
<td>
|
||||
<tt>
|
||||
ierr = <b>Zoltan_Special_Free</b>(<i>zz</i>, (void **)<i>import_gid</i>,
|
||||
<br> <b>ZOLTAN_SPECIAL_MALLOC_GID</b>);
|
||||
</tt>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP></td>
|
||||
|
||||
<td>Frees the <b><a href="dev_lb_types.html">global IDs</a></b>
|
||||
array <i>import_gid</i> and sets it to NULL.</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
<p>
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a> | <a href="dev_add_params.html">Next:
|
||||
Parameters</a> | <a href="dev_add_struct.html">Previous:
|
||||
Data Structures</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
118
thirdParty/Zoltan/docs/dev_html/dev_add_params.html
vendored
Normal file
@ -0,0 +1,118 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="karen devine, kddevin@sandia.gov">
|
||||
<title> Zoltan Developer's Guide: Adding Parameters</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_add_remap.html">Next</a> | <a href="dev_add_memory.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<h2>
|
||||
<a NAME="new_parameters"></a>Adding new parameters</h2>
|
||||
All parameters in Zoltan should be set and accessed through the <a href="dev_services_params.html">parameter
|
||||
setting routines</a>. To add a new parameter to an existing method, you
|
||||
need to do the following:
|
||||
<ul>
|
||||
<li>
|
||||
In the source code for the desired method, search for the place where
|
||||
the static array of parameters is defined. It will look something like:
|
||||
<i>static
|
||||
PARAM_VARS Method_params[] = { ... }</i>. Add a line with the name
|
||||
of the new parameter, a pointer to the variable you want to associate (usually
|
||||
NULL), and its type.</li>
|
||||
|
||||
<li>
|
||||
In the method source code, bind the parameter to a local variable through
|
||||
<b><a href="dev_services_params.html#Zoltan_Bind_Param">Zoltan_Bind_Param</a></b>.
|
||||
Make sure you do this before <b><a href="dev_services_params.html#Zoltan_Assign_Param_Vals">Zoltan_Assign_Param_Vals
|
||||
</a></b>is
|
||||
invoked.</li>
|
||||
|
||||
<li>
|
||||
Update the parameter function for the method in question. This routine
|
||||
is typically called <b>Zoltan_</b><i>Method</i><b>_Set_Param</b><i>. </i>This
|
||||
routine checks if a given string is a valid parameter for that method.
|
||||
It may also verify the values.</li>
|
||||
</ul>
|
||||
When you add a new method to Zoltan, you also need to:
|
||||
<ul>
|
||||
<li>
|
||||
Write a parameter function for your method that checks whether a given
|
||||
string and value is a valid parameter pair for your method. See <b>Zoltan_RCB_Set_Param</b>
|
||||
in <i>rcb/rcb.c</i> for an example.</li>
|
||||
|
||||
<li>
|
||||
Let your method access the parameters via <b><a href="dev_services_params.html#Zoltan_Bind_Param">Zoltan_Bind_Param
|
||||
</a></b>and
|
||||
<b><a href="dev_services_params.html#Zoltan_Assign_Param_Vals">Zoltan_Assign_Param_Vals</a></b>.</li>
|
||||
|
||||
<li>
|
||||
Change the parameter function array in <i>params/set_params.c</i> to include
|
||||
your parameter function. Simply add a new entry to the static array that
|
||||
looks like: <i>static ZOLTAN_SET_PARAM_FN * Param_func[] = {...}</i>.</li>
|
||||
|
||||
<li>
|
||||
Make sure your method uses the <a href="../ug_html/ug_param.html#General_Parameters">key
|
||||
parameters</a> in Zoltan correctly.</li>
|
||||
</ul>
|
||||
One useful convention is to put your method routine and your corresponding
|
||||
parameter function in the same source file. This way you can define the
|
||||
parameters in a static array. This convention eliminates the risk
|
||||
of bugs caused by duplicate declarations (that are, incorrectly, not identical).
|
||||
<br>
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a> | <a href="dev_add_remap.html">Next:
|
||||
Part Remapping</a> | <a href="dev_add_memory.html">Previous:
|
||||
Memory Management</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
248
thirdParty/Zoltan/docs/dev_html/dev_add_remap.html
vendored
Normal file
@ -0,0 +1,248 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; U; SunOS 5.6 sun4m) [Netscape]">
|
||||
<META NAME="sandia.approved" CONTENT="SAND99-1376">
|
||||
<META NAME="author" CONTENT="karen devine, kddevin@sandia.gov">
|
||||
|
||||
<TITLE> Zoltan Developer's Guide: Part Remapping</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_mig.html">Next</a> | <a href="dev_add_params.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<H2>
|
||||
<A NAME="new_implementation"></A>Part Remapping</H2>
|
||||
Part remapping can be incorporated into load-balancing algorithms.
|
||||
The part remapping algorithm works as follows:
|
||||
<ul>
|
||||
<li>
|
||||
After partitioning within an <a href="dev_add_lb.html"><b>ZOLTAN_LB_FN</b></a>
|
||||
but before import or export lists are built, the partitioning algorithm calls
|
||||
<a href="#Zoltan_LB_Remap"><b>Zoltan_LB_Remap</b></a>.
|
||||
</li>
|
||||
<li>
|
||||
<a href="#Zoltan_LB_Remap"><b>Zoltan_LB_Remap</b></a> builds a bipartite
|
||||
graph based on local import or export information (depending on which is
|
||||
available in the partitioning algorithm). Vertices of the graph are
|
||||
processor or part numbers used in the old (input to the partitioner)
|
||||
and new (computed by the partitioner) decompositions. Edges connect
|
||||
old and new vertices; edge weight for edge <i>e<sub>ij</sub></i> is the
|
||||
number of objects in old part <i>i</i> that are also in new part
|
||||
<i>j</i>. The bipartite graph is stored as a hypergraph, so that Zoltan's
|
||||
hypergraph matching routines may be applied.
|
||||
</li>
|
||||
<li>
|
||||
<a href="#Zoltan_LB_Remap"><b>Zoltan_LB_Remap</b></a> gathers the local
|
||||
hypergraph edges onto each processor and performs a serial matching of
|
||||
the vertices. This matching defines the remapping.
|
||||
</li>
|
||||
<li>
|
||||
<a href="#Zoltan_LB_Remap"><b>Zoltan_LB_Remap</b></a> remaps the input
|
||||
processor and part information to reflect the remapping and returns
|
||||
the result to the application. It also builds array <i>zz->LB.Remap</i>
|
||||
that is used in other functions (e.g.,
|
||||
<b><a href="../ug_html/ug_interface_augment.html#Zoltan_LB_Box_PP_Assign">Zoltan_LB_Box_PP_Assign</a></b> and
|
||||
<b><a href="../ug_html/ug_interface_augment.html#Zoltan_LB_Point_PP_Assign">Zoltan_LB_Point_PP_Assign</a></b>).
|
||||
</li>
|
||||
<li>
|
||||
Using the remapping information returned from
|
||||
<a href="#Zoltan_LB_Remap"><b>Zoltan_LB_Remap</b></a>, the partitioning
|
||||
algorithm builds the import or export lists to return to the application.
|
||||
Note: if the partitioning algorithm builds import lists, data may have to be
|
||||
moved to appropriate processors before building import lists to reflect
|
||||
the remapping; see <i>rcb/shared.c</i> for an example.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<P>
|
||||
<hr><a NAME="Zoltan_LB_Remap"></a>
|
||||
<HR>int <B>Zoltan_LB_Remap</B>
|
||||
(struct <B><A HREF="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</A></B> *<I>zz</I>,
|
||||
int *<I>new_map</I>,
|
||||
int <I>num_obj</I>,
|
||||
int *<I>procs</I>,
|
||||
int *<I>old_parts</I>,
|
||||
int *<I>new_parts</I>,
|
||||
int <I>export_list_flag</I>);
|
||||
<HR>
|
||||
<BR>
|
||||
<b>Zoltan_LB_Remap</b> remaps computed part (or processor) numbers in
|
||||
an attempt to maximize the amount of data that does not have to be migrated
|
||||
to the new decomposition. It is incorporated directly into partitioning
|
||||
algorithms, and should be called after the new decomposition is computed
|
||||
but before return lists (import or export lists) are created.
|
||||
<b>Zoltan_LB_Remap</b> should be invoked when Zoltan parameter
|
||||
<i><a href="../ug_html/ug_alg.html#REMAP">REMAP</a></i> is one.
|
||||
Even when
|
||||
<i><a href="../ug_html/ug_alg.html#REMAP">REMAP</a></i> is one,
|
||||
remapping is not done under a number of conditions; these conditions are
|
||||
listed with the description of
|
||||
<i><a href="../ug_html/ug_alg.html#REMAP">REMAP</a></i>.
|
||||
|
||||
<BR>
|
||||
<TABLE WIDTH="100%" >
|
||||
<TR VALIGN=TOP>
|
||||
<TD VALIGN=TOP WIDTH="20%"><B>Arguments:</B></TD>
|
||||
|
||||
<TD WIDTH="80%"></TD>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD VALIGN=TOP><I> zz</I></TD>
|
||||
|
||||
<TD>A pointer to the <B><A HREF="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</A></B>
|
||||
used in the partitioning algorithm.</TD>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD VALIGN=TOP><I> new_map</I></TD>
|
||||
|
||||
<TD>Upon return, a flag indicating whether remapping was actually done.
|
||||
Remapping is not done under a number of conditions (described with
|
||||
parameter
|
||||
<i><a href="../ug_html/ug_alg.html#REMAP">REMAP</a></i>) or when the
|
||||
computed remap gives a worse or equivalent result than the decomposition
|
||||
computed by the partitioning algorithm.
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD VALIGN=TOP><I> num_obj</I></TD>
|
||||
|
||||
<TD>Input: the number of objects the processor knows about after
|
||||
computing the decomposition. If the partitioning algorithm computes
|
||||
export lists, <i>num_obj</i> is the number of objects stored on the
|
||||
processor; if it computes import lists, <i>num_obj</i> is the number of
|
||||
objects that will be stored on the processor in the new decomposition.
|
||||
</td>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD VALIGN=TOP><I> procs</I></TD>
|
||||
|
||||
<TD>
|
||||
Upon input:
|
||||
an array of size <i>num_obj</i> containing processor
|
||||
assignments for the objects;
|
||||
if <i>export_list_flag</i> == 1,
|
||||
<i>procs</i> contains processor assignments
|
||||
in the NEW decomposition (computed by the partitioner); otherwise,
|
||||
<i>procs</i> contains processor assignments
|
||||
in the OLD decomposition (input by the application).
|
||||
Upon return, <i>procs</i> contains remapped
|
||||
processor assignments for the NEW decomposition, regardless of the value of
|
||||
<i>export_list_flag</i>.
|
||||
</td>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD VALIGN=TOP> <I>old_parts</I></TD>
|
||||
|
||||
<TD>
|
||||
Upon input:
|
||||
an array of size <i>num_obj</i> containing part
|
||||
assignments for the objects in the OLD decomposition (input by the
|
||||
application).
|
||||
</td>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD VALIGN=TOP> <I>new_parts</I></TD>
|
||||
|
||||
<TD>
|
||||
Upon input:
|
||||
an array of size <i>num_obj</i> containing part
|
||||
assignments for the objects in the NEW decomposition (computed by the
|
||||
partitioning algorithm).
|
||||
Upon return:
|
||||
<i>new_parts</i> contains remapped part assignments in the NEW decomposition.
|
||||
|
||||
</td>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD VALIGN=TOP> <I>export_list_flag</I></TD>
|
||||
|
||||
<TD>
|
||||
Flag indicating whether the partitioning algorithm computes
|
||||
export lists or import lists. The procedure
|
||||
for building the bipartite
|
||||
graph depends on whether
|
||||
the partitioning algorithm knows export or import information.
|
||||
</td>
|
||||
</TR>
|
||||
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD></TD>
|
||||
|
||||
<TD></TD>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD><B>Returned Value:</B></TD>
|
||||
|
||||
<TD></TD>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN=TOP>
|
||||
<TD VALIGN=TOP> int</TD>
|
||||
|
||||
<TD><A HREF="../ug_html/ug_interface.html#Error Codes">Error code</A>.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<HR WIDTH="100%">
|
||||
<BR>[<A HREF="dev.html">Table of Contents</A> | <A HREF="dev_mig.html">Next:
|
||||
Migration Tools</A> | <A HREF="dev_add_params.html">Previous:
|
||||
Adding new parameters</A> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</BODY>
|
||||
</HTML>
|
228
thirdParty/Zoltan/docs/dev_html/dev_add_struct.html
vendored
Normal file
@ -0,0 +1,228 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="karen devine, kddevin@sandia.gov">
|
||||
<title> Zoltan Developer's Guide: Adding Data Structures</title>
|
||||
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="dev.html">Zoltan Developer's Guide</a>
|
||||
| <a href="dev_add_memory.html">Next</a> | <a href="dev_add_lb.html">Previous</a></i></b></div>
|
||||
|
||||
<h2>
|
||||
<a NAME="new_data_structs"></a>Data Structures</h2>
|
||||
The main data structures for the algorithm should be pointed to by the
|
||||
<i>LB.Data_Structure</i>
|
||||
field of the <b><a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a></b>.
|
||||
This requirement allows reuse of data structures from one invocation of
|
||||
the new load-balancing algorithm to the next. It also prevents the use
|
||||
of global data structures for the algorithm so that multiple instances
|
||||
of the algorithm may be used (i.e., the same algorithm can be used for
|
||||
multiple <b><a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a></b> structures).
|
||||
An example showing the construction of data structures for the
|
||||
<a href="../ug_html/ug_alg_rcb.html">Recursive
|
||||
Coordinate Bisection (RCB)</a> algorithm is included
|
||||
in the <a href="#RCB_example">figure</a> below.
|
||||
<center><table BORDER=2 COLS=1 WIDTH="90%" NOSAVE >
|
||||
<tr>
|
||||
<td><a NAME="RCB_example"></a>
|
||||
<tt>
|
||||
<br>/* Allocate RCB data structure for this Zoltan structure.
|
||||
<br> * If the previous data structure still exists, free the Dots
|
||||
first;
|
||||
<br> * the other fields can be reused.
|
||||
<br> */
|
||||
<br>if (zz->LB.Data_Structure == NULL) {
|
||||
<br> rcb = (RCB_STRUCT *) <a href="../ug_html/ug_util_mem.html#Zoltan_Malloc">ZOLTAN_MALLOC</a>(sizeof(RCB_STRUCT));
|
||||
<br> zz->LB.Data_Structure = (void *) rcb;
|
||||
<br> rcb->Tree_Ptr = (struct rcb_tree *)
|
||||
<br>
|
||||
<a href="../ug_html/ug_util_mem.html#Zoltan_Malloc">ZOLTAN_MALLOC</a>(zz->Num_Proc*sizeof(struct
|
||||
rcb_tree));
|
||||
<br> rcb->Box = (struct rcb_box *) <a href="../ug_html/ug_util_mem.html#Zoltan_Malloc">ZOLTAN_MALLOC</a>(sizeof(struct
|
||||
rcb_box));
|
||||
<br>}
|
||||
<br>else {
|
||||
<br> rcb = (RCB_STRUCT *) zz->LB.Data_Structure;
|
||||
<br> <a href="../ug_html/ug_util_mem.html#Zoltan_Free">ZOLTAN_FREE</a>(&(rcb->Dots));
|
||||
<br>}
|
||||
</tt>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<caption ALIGN=BOTTOM><i>Example demonstrating allocation of data structures
|
||||
for the RCB algorithm. (Taken from rcb/rcb_util.c.)</i></caption>
|
||||
</table></center>
|
||||
|
||||
<p>The data needed for the algorithm is collected through calls to the
|
||||
query functions registered by the application. Algorithms should test the
|
||||
query function pointers for NULL and report errors when needed functions
|
||||
are not registered. The appropriate query functions can be called to build
|
||||
the algorithm's data structures up front, or they can be called during
|
||||
the algorithm's execution to gather data only as it is needed. The <a href="#query_example">figure</a>
|
||||
below shows how the <i>Dots</i> data structure needed by RCB is built.
|
||||
The call to <i>zz->Get_Num_Obj</i> invokes an <b><a href="../ug_html/ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</a></b>
|
||||
query function to determine the number of objects on the processor.
|
||||
Space for the <i>Dots</i> data structure is allocated through calls to
|
||||
<b><a href="../ug_html/ug_util_mem.html#Zoltan_Malloc">ZOLTAN_MALLOC</a></b>, <a href="dev_lb_types.html#ID alloc"><b>ZOLTAN_MALLOC_GID_ARRAY</b></a>,
|
||||
and <a href="dev_lb_types.html#ID alloc"><b>ZOLTAN_MALLOC_LID_ARRAY</b></a>. The <i>Dots</i> information is obtained
|
||||
through a call to the Zoltan service function <b><a href="dev_services_objlist.html">Zoltan_Get_Obj_List</a></b>; this
|
||||
function calls either an <b><a href="../ug_html/ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</a></b>
|
||||
or an <b><a href="../ug_html/ug_query_lb.html#ZOLTAN_FIRST_OBJ_FN">ZOLTAN_FIRST_OBJ_FN</a></b>/<b><a href="../ug_html/ug_query_lb.html#ZOLTAN_NEXT_OBJ_FN">ZOLTAN_NEXT_OBJ_FN</a></b>
|
||||
pair to get the object IDs and weights. The data for each
|
||||
<i>Dot</i> is
|
||||
set in the function <i>initialize_dot</i>, which includes calls to<i> zz->Get_Geom</i>,
|
||||
an <b><a href="../ug_html/ug_query_lb.html#ZOLTAN_GEOM_FN">ZOLTAN_GEOM_FN</a></b>
|
||||
query function.
|
||||
<br>
|
||||
<br>
|
||||
<center><table BORDER=2 COLS=1 WIDTH="90%" NOSAVE >
|
||||
<tr>
|
||||
<td><a NAME="query_example"></a>
|
||||
<tt>
|
||||
<br>/*
|
||||
<br> * Allocate space for objects. Allow extra space
|
||||
<br> * for objects that are imported to the processor.
|
||||
<br> */
|
||||
<p>*num_obj = zz->Get_Num_Obj(zz->Get_Num_Obj_Data, &ierr);
|
||||
<br>if (ierr) {
|
||||
<br> <a href="dev_intro_coding.html#ZOLTAN_PRINT">ZOLTAN_PRINT_ERROR</a>(zz->Proc,
|
||||
yo,
|
||||
<br>
|
||||
"Error returned from Get_Num_Obj.");
|
||||
<br> return(ierr);
|
||||
<br>}
|
||||
<p>*max_obj = (int)(1.5 * *num_obj) + 1;
|
||||
<br>*global_ids = <a href="dev_lb_types.html#ID alloc">ZOLTAN_MALLOC_GID_ARRAY</a>(zz, (*max_obj));
|
||||
<br>*local_ids = <a href="dev_lb_types.html#ID alloc">ZOLTAN_MALLOC_LID_ARRAY</a>(zz, (*max_obj));
|
||||
<br>*dots = (struct Dot_Struct *)
|
||||
<br> <a href="../ug_html/ug_util_mem.html#Zoltan_Malloc">ZOLTAN_MALLOC</a>((*max_obj)*sizeof(struct
|
||||
Dot_Struct));
|
||||
<p>if (!(*global_ids) || (zz->Num_LID && !(*local_ids)) ||
|
||||
!(*dots)) {
|
||||
<br> <a href="dev_intro_coding.html#ZOLTAN_PRINT">ZOLTAN_PRINT_ERROR</a>(zz->Proc,
|
||||
yo, "Insufficient memory.");
|
||||
<br> return(<a href="../ug_html/ug_interface.html#Error Codes">ZOLTAN_MEMERR</a>);
|
||||
<br>}
|
||||
<p>if (*num_obj > 0) {
|
||||
<p> if (wgtflag) {
|
||||
<p> /*
|
||||
<br> * Allocate space for object weights.
|
||||
<br> */
|
||||
<p> objs_wgt = (float *) <a href="../ug_html/ug_util_mem.html#Zoltan_Malloc">ZOLTAN_MALLOC</a>((*num_obj)*sizeof(float));
|
||||
<br> if (!objs_wgt) {
|
||||
<br> <a href="dev_intro_coding.html#ZOLTAN_PRINT">ZOLTAN_PRINT_ERROR</a>(zz->Proc,
|
||||
yo, "Insufficient memory.");
|
||||
<br> return(<a href="../ug_html/ug_interface.html#Error Codes">ZOLTAN_MEMERR</a>);
|
||||
<br> }
|
||||
<br> for (i = 0; i < *num_obj; i++) objs_wgt[i]
|
||||
= 0.;
|
||||
<br> }
|
||||
<p> /*
|
||||
<br> * Get list of objects' IDs and weights.
|
||||
<br> */
|
||||
<p> <a href="dev_services_objlist.html">Zoltan_Get_Obj_List</a>(zz, *global_ids, *local_ids, wgtflag,
|
||||
<br> objs_wgt, &ierr);
|
||||
<br> if (ierr) {
|
||||
<br> <a href="dev_intro_coding.html#ZOLTAN_PRINT">ZOLTAN_PRINT_ERROR</a>(zz->Proc,
|
||||
yo,
|
||||
<br>
|
||||
"Error returned from Zoltan_Get_Obj_List.");
|
||||
<br> <a href="../ug_html/ug_util_mem.html#Zoltan_Free">ZOLTAN_FREE</a>(&objs_wgt);
|
||||
<br> return(ierr);
|
||||
<br> }
|
||||
<p> ierr = initialize_dot(zz, *global_ids, *local_ids, *dots,
|
||||
<br>
|
||||
*num_obj, wgtflag, objs_wgt);
|
||||
<br> if (ierr == ZOLTAN_FATAL || ierr == ZOLTAN_MEMERR) {
|
||||
<br> <a href="dev_intro_coding.html#ZOLTAN_PRINT">ZOLTAN_PRINT_ERROR</a>(zz->Proc,
|
||||
yo,
|
||||
<br>
|
||||
"Error returned from initialize_dot.");
|
||||
<br> <a href="../ug_html/ug_util_mem.html#Zoltan_Free">ZOLTAN_FREE</a>(&objs_wgt);
|
||||
<br> return(ierr);
|
||||
<br> }
|
||||
<p> <a href="../ug_html/ug_util_mem.html#Zoltan_Free">ZOLTAN_FREE</a>(&objs_wgt);
|
||||
<br>}
|
||||
</tt>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<caption ALIGN=BOTTOM><i>Example demonstrating how data structures are
|
||||
built for the RCB algorithm. (Taken from rcb/shared.c.)</i></caption>
|
||||
</table></center>
|
||||
|
||||
<p>
|
||||
The data structures pointed to by <i>zz->LB.Data_Structure</i> will be freed
|
||||
at some point, and may be copied.
|
||||
<p>A function that frees these structures and resets <i>zz->LB.Data_Structure</i>
|
||||
to NULL should be written. The function should be called when the load-balancing
|
||||
algorithm exits, either normally or due to an error condition.
|
||||
The function
|
||||
<b>Zoltan_RCB_Free_Structure</b> in <i>rcb/rcb_util.c</i> may be used as an example.
|
||||
<A NAME="Copy"></A>
|
||||
<p>If your algorithm uses the <a href="../ug_html/ug_alg_rcb.html">KEEP_CUTS</a>
|
||||
parameter, a function that copies one <i>zz->LB.Data_Structure</i> to another is
|
||||
required. This is particularly important for C++,
|
||||
which may create temporary objects
|
||||
at runtime by invoking a copy operator (which will call your copy function).
|
||||
It is a convenience for C applications, which may wish to copy one Zoltan_Struct
|
||||
to another.
|
||||
See the function <b>Zoltan_RCB_Copy_Structure</b> in <i>rcb/rcb_util.c</i>
|
||||
for an example.
|
||||
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a> | <a href="dev_add_memory.html">Next:
|
||||
Memory Management</a> | <a href="dev_add_lb.html">Previous:
|
||||
Load-Balancing Function Implementation</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
<br>
|
||||
</body>
|
||||
</html>
|
227
thirdParty/Zoltan/docs/dev_html/dev_cpp.html
vendored
Normal file
@ -0,0 +1,227 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; U; SunOS 4.1.3_U1 sun4m) [Netscape]">
|
||||
<META NAME="sandia.approved" CONTENT="SAND99-1376">
|
||||
<META NAME="author" CONTENT="lee ann fisk, lafisk@sandia.gov">
|
||||
|
||||
<TITLE> Zoltan Developer's Guide: C++ Interface</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_refs.html">Next</a> | <a href="dev_fortran.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<H2>
|
||||
<A NAME="cpp dev"></A>C++ Interface</H2>
|
||||
As with the Fortran interface just described, any change to the user
|
||||
API of Zoltan should be reflected in the C++ interface. This section
|
||||
explains the conventions used in the C++ interface, which you will want
|
||||
to follow when you modify or expand it.
|
||||
|
||||
<UL><A HREF="#cpp dev classes">Classes</A><BR>
|
||||
<A HREF="#cpp dev conventions">Programming Conventions</A>
|
||||
<UL>
|
||||
<A HREF="#cpp dev namespaces"><I>Namespaces</I></A><BR>
|
||||
<A HREF="#cpp dev cnames"><I>Class names</I></A><BR>
|
||||
<A HREF="#cpp dev mnames"><I>Method names</I></A><BR>
|
||||
<A HREF="#cpp dev constmethods"><I>Const methods</I></A><BR>
|
||||
<A HREF="#cpp dev parameters"><I>Declaration of method parameters</I></A><BR>
|
||||
<A HREF="#cpp dev copy"><I>Copy constructor, copy operator</I></A>
|
||||
</UL>
|
||||
<A HREF="#cpp dev updating">Keeping the C++ interface up-to-date</A><BR>
|
||||
</UL>
|
||||
|
||||
<H3> <A NAME="cpp dev classes"></A>Classes</H3>
|
||||
The C language Zoltan library already observes the principles of
|
||||
object oriented program design. Each sub function of Zoltan (load
|
||||
balancing, timing, etc.) has a data structure
|
||||
associated with it. This data structure maintains all the state required
|
||||
for one instance of that sub function. Each request of the library for
|
||||
some operation requires that data structure.
|
||||
|
||||
<P>The classes in the Zoltan C++ library follow the structure just described.
|
||||
Each class is defined in a header
|
||||
file and encapsulates a Zoltan data structure and the functions that
|
||||
operate on that structure. A C++ application wishing to use a
|
||||
feature of Zoltan, would include the feature's header file in it's source, and
|
||||
link with the Zoltan C library.
|
||||
|
||||
<P>The C language load balancing data stucture
|
||||
(<B><A HREF="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</A></B>)
|
||||
and the C functions that operate on it are accessed
|
||||
through the C++ <B>Zoltan</B> class, defined in <I>zoltan_cpp.h</I>.
|
||||
|
||||
<P>The communication package is encapsulated the <B>Zoltan_Comm</B> class
|
||||
defined in <I>zoltan_comm_cpp.h</I>.
|
||||
Again, to use the communication utility of Zoltan from a C++ program,
|
||||
include <I>zoltan_comm_cpp.h</I> and use the C++ methods defined there.
|
||||
|
||||
<P>The C++ Zoltan timer class is called <B>Zoltan_Timer_Object</B> and
|
||||
is defined in <I>zoltan_timer_cpp.h</I>.
|
||||
|
||||
<P>The distributed directory utility of Zoltan is encapsulated in the
|
||||
class <B>Zoltan_DD</B> defined in <I>zoltan_dd_cpp.h</I>
|
||||
|
||||
<H3> <A NAME="cpp dev conventions"></A>Programming Conventions</H3>
|
||||
When modifying the interface to Zoltan , you will want to modify
|
||||
the appropriate C++ header file accordingly. This section describes the
|
||||
conventions to follow to maintain a consistent and correct library interface
|
||||
for the C++ user of Zoltan.
|
||||
|
||||
<H4><I><A NAME="cpp dev namespaces">Namespaces</A></I></H4>
|
||||
In order to maintain portability across platforms, there is no Zoltan
|
||||
namespace. Many C++ compilers do not support namespaces at this time.
|
||||
The name of each Zoltan class begins with <B>Zoltan_</B>, and hopefully
|
||||
this will never clash with another namespace.
|
||||
|
||||
<H4><I><A NAME="cpp dev cnames">Class names</A></I></H4>
|
||||
Class names are <B>Zoltan_</B> followed by text indicating the sub
|
||||
function of Zoltan that is encapsulated by the class.
|
||||
|
||||
<H4><I><A NAME="cpp dev mnames">Method names</A></I></H4>
|
||||
Method names are derived from the C library function names in such a
|
||||
way that the name will be obvious to a person familiar with the C library.
|
||||
We remove the beginning of the C library name, the part that identifies
|
||||
the subset of the Zoltan library that the function is part of, and keep
|
||||
the last part of the C library name, the part that describes what the
|
||||
function does. For example the C function <B>Zoltan_LB_Partition</B> becomes
|
||||
the C++ method <B>LB_Partition</B> in the class <B>Zoltan</B> and
|
||||
C function <B>Zoltan_Comm_Create</B> becomes the C++ method
|
||||
<B>Create</B> in the class <B>Zoltan_Comm</B>.
|
||||
|
||||
<H4><I><A NAME="cpp dev constmethods">Const methods</A></I></H4>
|
||||
All class methods which can be declared <B>const</B>, because they
|
||||
do not modify the object, should be declared <B>const</B>. This allows
|
||||
C++ programmers to call these methods on their <B>const</B> objects.
|
||||
|
||||
<H4><I><A NAME="cpp dev parameters">Declaration of method parameters</A></I></H4>
|
||||
|
||||
Parameters that are not changed in the method should be declared <B>const</B>.
|
||||
This can get complicated, but it helps to read declarations from right to
|
||||
left. <B>const int * & p</B> says <I>p is a reference to a pointer to
|
||||
a const int</I> and means the method will not change the value pointed
|
||||
to by <I>p</I>. On the other hand <B>int * const & p</B> says that
|
||||
<I>p is a reference to a const pointer to int</I> so the method will
|
||||
not change the pointer.
|
||||
|
||||
<P>Variables that are passed by value in a C function will be passed by
|
||||
const reference in the C++ method. This is semantically the same, but
|
||||
it is more efficient, and it will work with temporary variables created
|
||||
by a compiler.
|
||||
|
||||
<P>If a C function takes a pointer to a single built-in type (not an aggregate
|
||||
type), the associated C++ method will take a reference variable.
|
||||
If a C function takes a pointer to a pointer, the C++ function will take
|
||||
a pointer reference. The references are more efficient, and it is
|
||||
the behavior a C++ programmer expects.
|
||||
A pointer to an array remains a pointer to an array.
|
||||
|
||||
<P><TABLE rules=cols,rows frame=box align=center cellpadding=5>
|
||||
<TR> <TH>C function parameter</TH> <TH>C++ method parameter</TH> <TH> method's const behavior</TR>
|
||||
<TR> <TD>int val</TD>
|
||||
<TD>const int &val</TD>
|
||||
<TD>won't change value</TD></TR>
|
||||
<TR> <TD>int *singlep</TD>
|
||||
<TD>int &singlep <br> const int &singlep</TD>
|
||||
<TD>may change value <br> won't change value</TD></TR>
|
||||
<TR> <TD>int **singlep</TD>
|
||||
<TD>int *&singlep <br> const int * &p <br> int *const &p <br> const int * const &p</TD>
|
||||
<TD>may change pointer or value<br>won't change value<br>won't change pointer to value<br>won't change anything</TD></TR>
|
||||
<TR> <TD>int *arrayp</TD>
|
||||
<TD>int *arrayp <br> const int * arrayp</TD>
|
||||
<TD>may change array contents <br> won't change array contents</TD> </TR>
|
||||
</TABLE>
|
||||
|
||||
<P>If a C function takes a pointer to an array of <I>char</I>, the
|
||||
associated C++ method will take a <I>string</I> object.
|
||||
|
||||
<P><TABLE rules=cols,rows frame=box align=center cellpadding=5>
|
||||
<TR> <TH>C function parameter</TH> <TH>C++ method parameter</TH> </TR>
|
||||
<TR> <TD>char *fname</TD> <TD>std::string &fname</TD> </TR>
|
||||
</TABLE>
|
||||
|
||||
<P> In all honesty, it is tedious to carefully apply const'ness in
|
||||
parameter declarations, and we did not do it consistently throughout the
|
||||
C++ wrapping of Zoltan. Please feel free to add <I>const</I> declarations
|
||||
where they belong, and try to use them correctly if you add or modify Zoltan
|
||||
C++ methods.
|
||||
|
||||
<H4><I><A NAME="cpp dev copy">Copy constructor, copy operator</A></I></H4>
|
||||
Each class should have a copy constructor and a copy operator.
|
||||
|
||||
|
||||
<H3> <A NAME="cpp dev updating"></A>Keeping the C++ interface up-to-date</H3>
|
||||
Here we provide a checklist of things to be done when the C interface to
|
||||
the Zoltan library is changed:
|
||||
|
||||
<UL>
|
||||
<LI>If a new major component is added to Zoltan, create a C++ class for
|
||||
that component in a new header file, using the programming conventions
|
||||
described above. </LI>
|
||||
<LI>If functions are added or removed, or their parameter lists are
|
||||
changed, then update the header file defining the class that contains
|
||||
those functions.</LI>
|
||||
<LI>When Zoltan data structures are changed, be sure to change the C functions
|
||||
that copy the data structure. (They contain <B>Copy</B> in their name.)
|
||||
Correct copying is more important in C++,
|
||||
where the compiler may generate new temporary objects, than it is in C.</LI>
|
||||
<LI>If you change the C++ API, be sure to change:
|
||||
<UL>
|
||||
<LI><B>zCPPdrive</B>, the test program for the Zoltan C++ library</LI>
|
||||
<LI>the C++ examples in the <B>Examples</B> directory</LI>
|
||||
<LI>the method prototypes in the <A HREF="../ug_html/ug.html">Zoltan User's Guide</A>.</LI>
|
||||
</UL>
|
||||
</UL>
|
||||
|
||||
<HR WIDTH="100%">
|
||||
<BR>[<A HREF="dev.html">Table of Contents</A> | <A HREF="dev_refs.html">Next:
|
||||
References</A> | <A HREF="dev_fortran.html">Previous:
|
||||
FORTRAN Interface</A> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</BODY>
|
||||
</HTML>
|
172
thirdParty/Zoltan/docs/dev_html/dev_degenerate.html
vendored
Normal file
@ -0,0 +1,172 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; U; SunOS 5.6 sun4m) [Netscape]">
|
||||
<META NAME="sandia.approved" CONTENT="SAND99-1376">
|
||||
<META NAME="author" CONTENT="lee ann fisk, lafisk@sandia.gov">
|
||||
<TITLE> Zoltan Developer's Guide: Degenerate Geometries</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a>
|
||||
| <a href="dev_hsfc.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<H2>
|
||||
<A NAME="HSFC"></A>Appendix: Handling Degenerate Geometries</H2>
|
||||
|
||||
The geometry processed by one of the geometric methods
|
||||
<a href="dev_rcb.html">RCB</a>, <a href="dev_rib.html">RIB</a>, or
|
||||
<a href="dev_hsfc.html">HSFC</a>
|
||||
may be degenerate. By this we mean
|
||||
it may have 3-dimensional coordinates but be essentially flat, or
|
||||
it may have 3 or 2-dimensional coordinates but be essentially a line
|
||||
in space. If we treat the geometry as a lower dimensional object
|
||||
for the purpose of partitioning, the result may be a more natural
|
||||
partition (one the user would have expected) and a faster
|
||||
run time.
|
||||
<p>
|
||||
The caller may set the <B>REDUCE_DIMENSIONS</B> parameter to TRUE
|
||||
in any of the three geometric methods if they want Zoltan to check
|
||||
for a degenerate condition and do lower dimensional partitioning
|
||||
if such a condition if found. They may set the <B>DEGENERATE_RATIO</B>
|
||||
to specify how flat or thin a geometry must be to be considered
|
||||
degenerate.
|
||||
<p>
|
||||
|
||||
<H3>
|
||||
Outline of Algorithm</H3>
|
||||
|
||||
All three geometric methods call
|
||||
<a href="dev_services_objlist.html#Zoltan_Get_Coordinates"><b>Zoltan_Get_Coordinates</b></a>
|
||||
to obtain the
|
||||
problem coordinates. If <B>REDUCE_DIMENSIONS</B> is TRUE, we check
|
||||
in this function to see if the geometry is degenerate. If it is,
|
||||
we transform the coordinates to the lower dimensional space, flag
|
||||
that the problem is now lower dimensional, and return the transformed
|
||||
coordinates. The
|
||||
<a href="dev_rcb.html">RCB</a>, <a href="dev_rib.html">RIB</a>, or
|
||||
<a href="dev_hsfc.html">HSFC</a>
|
||||
calculation is performed on the new coordinates in the lower dimensional
|
||||
space.
|
||||
<p>
|
||||
If <B>KEEP_CUTS</B> is TRUE, the transformation is saved so that in
|
||||
<a href="../ug_html/ug_interface_augment.html#Zoltan_LB_Box_Assign"><b>Zoltan_LB_Box_Assign</b></a> or <a href="../ug_html/ug_interface_augment.html#Zoltan_LB_Point_Assign"><b>Zoltan_LB_Point_Assign</b></a>
|
||||
the coordinates can be transformed before the assignment is calculated.
|
||||
If <B>RCB_REUSE</B> is TRUE in the <a href="dev_rcb.html">RCB</a> method,
|
||||
the transformation is also saved. On re-partitioning, we can do some
|
||||
simple tests to see if the degeneracy condition has changed before
|
||||
completely re-calculating the coordinate transformation.
|
||||
<p>
|
||||
To determine if the geometry is degenerate, we calculate
|
||||
the same inertial matrix that is calculated for <a href="dev_rib.html">RIB</a>,
|
||||
except that we ignore vertex weights. The 3 orthogonal eigenvectors
|
||||
of the inertial matrix describe the three primary directions of the
|
||||
geometry. The bounding box oriented in these directions is tested
|
||||
for degeneracy. In particular (for a 3 dimensional geometry) if the
|
||||
length of the longest side divided by the length of the shortest side
|
||||
exceeds the DEGENERATE_RATIO, we consider the geometry to be flat. If
|
||||
in addition, the length longest side divided by the length of the
|
||||
middle side exceeds the
|
||||
DEGENERATE_RATIO, we consider the geometry to be essentially a line.
|
||||
<p>
|
||||
If a 3 dimensional geometry is determined to be flat, we transform
|
||||
coordinates to a coordinate system where the XY plane corresponds
|
||||
to the oriented bounding box,
|
||||
and project all coordinates to that plane. These
|
||||
X,Y coordinates are returned to the partitioning algorithm, which
|
||||
performs two dimensional partitioning. Similarly if the geometry
|
||||
is very thin, we transform coordinates to a coordinate system
|
||||
with the X axis going through the
|
||||
bounding box in it's principal direction, and project all points to
|
||||
that axis. Then one dimensional partitioning is performed.
|
||||
<p>
|
||||
There is a small problem in calculating
|
||||
<a href="../ug_html/ug_interface_augment.html#Zoltan_LB_Box_Assign"><b>Zoltan_LB_Box_Assign</b></a>
|
||||
when the partitioning was performed
|
||||
on transformed geometry. The caller provides the box vertices in
|
||||
problem coordinates, but the partition was calculated in
|
||||
transformed coordinates. When the vertices are transformed, they
|
||||
are in general no longer the vertices of an axis-aligned box in
|
||||
the new coordinate system. The
|
||||
<B>Box_Assign</B> calculation requires an axis-aligned box, and
|
||||
so we use the bounding box of the transformed vertices. The resulting
|
||||
list of processes or parts intersecting the box may therefore
|
||||
contain some processes or parts which actually do not intersect
|
||||
the box in problem coordinates, however it will not omit any.
|
||||
|
||||
|
||||
<H3>Data Structure Definitions</H3>
|
||||
The transformation is stored in a <B>Zoltan_Transform_Struct</B>
|
||||
structure which is
|
||||
defined in <i>zz/zz_const.h</i>. It is saved as part of the algorithm
|
||||
specific information stored in the
|
||||
<b><a href="dev_add_struct.html">LB.Data_Structure</a></b> field of the
|
||||
<b><a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a></b>.
|
||||
The flag that indicates whether the geometry was found to be
|
||||
degenerate is the <B>Target_Dim</B> field of this structure.
|
||||
<p>
|
||||
To use the degenerate geometry detection capability from a new
|
||||
geometric method, you would add a <B>Zoltan_Transform_Struct</b>
|
||||
structure to the algorithm specific data structure, add code to
|
||||
<B>Zoltan_Get_Coordinates</B> to look for it, and check the
|
||||
<B>Target_Dim</B> field on return to see if the problem dimension
|
||||
was reduced. You would also need to include the
|
||||
coordinate transformation in your Box_Assign and Point_Assign
|
||||
functionality.
|
||||
|
||||
|
||||
<BR>
|
||||
<BR>
|
||||
|
||||
<P>
|
||||
<HR WIDTH="100%">
|
||||
<BR>[<A HREF="dev.html">Table of Contents</A>
|
||||
| <A HREF="dev_hsfc.html"> Previous: Hibert Space Filling Curve (HSFC)</A> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</BODY>
|
||||
</HTML>
|
74
thirdParty/Zoltan/docs/dev_html/dev_dist.html
vendored
Normal file
@ -0,0 +1,74 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; U; SunOS 4.1.3_U1 sun4m) [Netscape]">
|
||||
<META NAME="sandia.approved" CONTENT="SAND99-1376">
|
||||
<META NAME="author" CONTENT="karen devine, kddevin@sandia.gov">
|
||||
|
||||
<TITLE> Zoltan Developer's Guide: Distribution</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_dist_cvs.html">Next</a> | <a href="dev_intro_sqe.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<H2>
|
||||
<A NAME="distribution"></A>Zoltan Distribution</H2>
|
||||
The organization of the Zoltan software distribution is described in the
|
||||
following sections. Full pathnames are specific to Sandia's CSRI SON
|
||||
LAN.
|
||||
<BLOCKQUOTE><A HREF="dev_dist_cvs.html">CVS (source code control)</A>
|
||||
<BR><A HREF="dev_dist_dir.html">Layout of Directories</A>
|
||||
<BR><A HREF="dev_dist_compile.html">Compilation and Makefiles</A></BLOCKQUOTE>
|
||||
|
||||
<HR WIDTH="100%">
|
||||
<BR>[<A HREF="dev.html">Table of Contents</A> | <A HREF="dev_dist_cvs.html">Next:
|
||||
CVS</A> | <A HREF="dev_intro_sqe.html">Previous: Zoltan
|
||||
Quality Assurance</A> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</BODY>
|
||||
</HTML>
|
124
thirdParty/Zoltan/docs/dev_html/dev_dist_compile.html
vendored
Normal file
@ -0,0 +1,124 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="karen devine, kddevin@sandia.gov">
|
||||
<title> Zoltan Developer's Guide: Compilation</title>
|
||||
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_lb.html">Next</a> | <a href="dev_dist_dir.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<h2>
|
||||
<a NAME="compilation"></a>Compilation and Makefiles</h2>
|
||||
The Zoltan distribution includes a main (top-level) makefile with targets
|
||||
for the Zoltan library, the test driver programs, and some graphical tools.
|
||||
When the library is
|
||||
<a href="../ug_html/ug_usage.html#Building the Library">compiled for a specific target platform</a>, <i>A</i>, Autotools and CMake obtain provide
|
||||
platform-specific configuration information.
|
||||
<p>
|
||||
Both the Autotools and CMake build systems must be maintained in Zoltan.
|
||||
Thus, new source code files and directories must be added for both systems.
|
||||
It is easiest to follow the examples of existing files in the build
|
||||
environments; good examples
|
||||
are <i>hsfc.h</i>, <i>hsfc.c</i>, <i>dr_loadbal_const.h</i> and
|
||||
<i>dr_loadbal.c</i>.
|
||||
<p>
|
||||
To add new source files or source directories:
|
||||
<ul>
|
||||
<li>
|
||||
Autotools: Add new library files or directories to
|
||||
<i>zoltan/src/Makefile.am</i>; add
|
||||
new driver files to <i>zoltan/src/driver/Makefile.am</i>.
|
||||
In the main
|
||||
zoltan directory, run the <i>bootstrap-local</i> script to rebuild the
|
||||
automated Makefiles.
|
||||
</li>
|
||||
<li>
|
||||
CMake: Add new library files to <i>zoltan/src/CMakeLists.txt</i>; add
|
||||
new driver files to <i>zoltan/src/driver/CMakeLists.txt</i>.
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
Alternatively, new algorithms can be added as separate libraries with which
|
||||
Zoltan may link.
|
||||
The implementation of the <a href="../ug_html/ug_alg_parmetis.html">ParMETIS</a>
|
||||
interface in Zoltan can serve as an example.
|
||||
<p>
|
||||
To add new third-party libraries:
|
||||
<ul>
|
||||
<li>
|
||||
Autotools: Add checks new library paths and include files to
|
||||
<i>zoltan/configure.ac</i>. Search for the string "parmetis" in
|
||||
<i>zoltan/configure.ac</i>, and follow
|
||||
its example for the new library.
|
||||
Also edit
|
||||
<i>zoltan/src/include/Zoltan_config.h.in</i> to include a macro for
|
||||
the new third-party library; follow the example of "HAVE_PARMETIS".
|
||||
In the main
|
||||
zoltan directory, run the <i>bootstrap-local</i> script to rebuild the
|
||||
automated configure and Makefiles.
|
||||
</li>
|
||||
<li>
|
||||
CMake:
|
||||
Follow the instructions in <i>Trilinos/cmake/HOWTO.ADD_TPL</i>
|
||||
In <i>zoltan/src/CMakeLists.txt</i>
|
||||
and <i>zoltan/cmake/Zoltan_config.h.in</i>,
|
||||
follow the example of "HAVE_PARMETIS".
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a> | <a href="dev_lb.html">Next:
|
||||
Zoltan Interface and Data Structures</a> | <a href="dev_dist_dir.html">Previous:
|
||||
Layout of Directories</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
95
thirdParty/Zoltan/docs/dev_html/dev_dist_cvs.html
vendored
Normal file
@ -0,0 +1,95 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; U; SunOS 4.1.3_U1 sun4m) [Netscape]">
|
||||
<META NAME="sandia.approved" CONTENT="SAND99-1376">
|
||||
<META NAME="author" CONTENT="karen devine, kddevin@sandia.gov">
|
||||
|
||||
<TITLE> Zoltan Developer's Guide: CVS</TITLE>
|
||||
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_dist_dir.html">Next</a> | <a href="dev_dist.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<H2>
|
||||
<A NAME="CVS"></A>CVS</H2>
|
||||
The source code and documentation for the Zoltan library is maintained
|
||||
under the Concurrent Versions System (CVS) software. CVS allows multiple
|
||||
developers to edit their own copies of the software and merges updated
|
||||
versions with the developers' own versions. Zoltan's repository
|
||||
is part of the <a href="https://trilinos.sandia.gov">Trilinos</a> repository.
|
||||
|
||||
Developers must set the CVSROOT environment variable to the repository
|
||||
directory:
|
||||
<BLOCKQUOTE>setenv CVSROOT <i>username</i>@software.sandia.gov:/space/CVS
|
||||
</BLOCKQUOTE>
|
||||
where <i>username</i> is the developer's username on the CVS server
|
||||
software.sandia.gov.
|
||||
Since Zoltan is part of Trilinos, it is best to check out Trilinos from
|
||||
the repository:
|
||||
<BLOCKQUOTE>cvs checkout -P Trilinos</BLOCKQUOTE>
|
||||
Zoltan is then in directory Trilinos/packages/zoltan.
|
||||
|
||||
<p>
|
||||
Alternatively, one can get a working copy of only the Zoltan software:
|
||||
<BLOCKQUOTE>cvs checkout -P zoltan</BLOCKQUOTE>
|
||||
However, changes to the
|
||||
<a href="../ug_html/ug_usage.html#TrilinosAutotools">Autotools build
|
||||
environment</a> require directories above the Zoltan directory in
|
||||
the Trilinos repository, so it is best to check out the entire Trilinos
|
||||
repository.
|
||||
|
||||
<P>
|
||||
<HR WIDTH="100%">
|
||||
<BR>[<A HREF="dev.html">Table of Contents</A> | <A HREF="dev_dist_dir.html">Next:
|
||||
Layout of Directories</A> | <A HREF="dev_dist.html">Previous:
|
||||
Zoltan Distribution</A> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</BODY>
|
||||
</HTML>
|
280
thirdParty/Zoltan/docs/dev_html/dev_dist_dir.html
vendored
Normal file
@ -0,0 +1,280 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="karen devine, kddevin@sandia.gov">
|
||||
<title> Zoltan Developer's Guide: Directory Layout</title>
|
||||
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="dev.html">Zoltan Developer's Guide</a>
|
||||
| <a href="dev_dist_compile.html">Next</a> | <a href="dev_dist_cvs.html">Previous</a></i></b></div>
|
||||
|
||||
<h2>
|
||||
<a NAME="directories"></a>Layout of Directories</h2>
|
||||
The source code is organized into several subdirectories within the Zoltan
|
||||
main directory. General interface routines are stored
|
||||
in a single directory. Communication and memory allocation utilities available
|
||||
to all algorithms are in separate directories. Each load-balancing method
|
||||
(or family of methods) should be stored in its own directory.
|
||||
In addition, a courtesy copy of the
|
||||
<a href="../ug_html/ug_alg_parmetis.html">ParMETIS</a>
|
||||
graph-partitioning package is included in the top-level directory <i>ParMETIS</i>.
|
||||
<p>
|
||||
In the following
|
||||
<a href="#directory table">table</a>,
|
||||
the source-code directories currently in the Zoltan directory are listed
|
||||
and described.
|
||||
<br>
|
||||
<table BORDER NOSAVE >
|
||||
<tr>
|
||||
<th><a NAME="directory table"></a>Directory</th>
|
||||
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><i>zz</i></td>
|
||||
|
||||
<td>General Interface definitions,
|
||||
Zoltan data structure definitions, interface functions
|
||||
and functions related to the interface
|
||||
See <a href="dev_lb_interface.html">Interface Functions</a>,
|
||||
<a href="dev_lb_types.html">ID Data Types</a>, and
|
||||
<a href="dev_lb_structs.html">Data Structures</a>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td VALIGN=TOP><i>lb</i></td>
|
||||
|
||||
<td>Load-Balancing interface routines,
|
||||
and load-balancing data structure definitions.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><i>all</i></td>
|
||||
|
||||
<td><a href="dev_add_memory.html">Special memory allocation functions</a> for memory returned by Zoltan to an application. </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><i>par</i></td>
|
||||
|
||||
<td><a href="dev_services_parallel.html">Parallel computing routines</a>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><i>param</i></td>
|
||||
|
||||
<td><a href="dev_services_params.html">Routines for changing parameter values</a> at runtime.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><i>parmetis</i></td>
|
||||
|
||||
<td>Routines to access the <a href="../ug_html/ug_alg_parmetis.html">ParMETIS</a>
|
||||
and <a href="../ug_html/ug_alg_jostle.html">Jostle</a>
|
||||
partitioning libraries.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><i>rcb</i></td>
|
||||
|
||||
<td><a href="../ug_html/ug_alg_rcb.html">Recursive Coordinate Bisection (RCB)</a> and
|
||||
<a href="../ug_html/ug_alg_rib.html">Recursive Inertial Bisection (RIB)</a> algorithms.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><i>hsfc</i></td>
|
||||
|
||||
<td><a href="../ug_html/ug_alg_hsfc.html">Hilbert Space-Filling Curve partitioning</a>
|
||||
algorithm.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><i>bsfc</i></td>
|
||||
|
||||
<td>Binned Space-Filling Curve partitioning algorithm.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><i>oct</i></td>
|
||||
|
||||
<td>Rensselaer Polytechnic Institute's <a href="../ug_html/ug_alg_oct.html">octree partitioning</a> algorithms.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><i>reftree</i></td>
|
||||
|
||||
<td>William Mitchell's <a href="../ug_html/ug_alg_reftree.html">Refinement Tree Partitioning</a>
|
||||
algorithm and refinement tree data structure.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><i>timer</i></td>
|
||||
|
||||
<td><a href="dev_services_time.html">Timing</a> routines.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><i>ch</i></td>
|
||||
|
||||
<td>Routines to read <a href="http://cs.sandia.gov/CRF/chac.html">Chaco</a>
|
||||
input files and build graphs for the driver program <i><a href="dev_driver.html">zdrive.</a></i></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><i>ha</i></td>
|
||||
|
||||
<td>Routines to support heterogeneous architectures.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><i>fort</i></td>
|
||||
|
||||
<td><a href="../ug_html/ug_fortran.html">Fortran (F90) interface</a> for Zoltan.</td>
|
||||
</tr>
|
||||
|
||||
<tr NOSAVE>
|
||||
<td VALIGN=TOP NOSAVE><i>Utilities/shared</i></td>
|
||||
|
||||
<td VALIGN=TOP NOSAVE>Simple functions and utilities shared by Zoltan and
|
||||
other Zoltan Utilities.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr NOSAVE>
|
||||
<td VALIGN=TOP NOSAVE><i>Utilities/Memory</i></td>
|
||||
|
||||
<td VALIGN=TOP NOSAVE><a href="../ug_html/ug_util_mem.html">Memory management utilities</a></td>
|
||||
</tr>
|
||||
|
||||
<tr NOSAVE>
|
||||
<td VALIGN=TOP NOSAVE><i>Utilities/Communication</i></td>
|
||||
|
||||
<td VALIGN=TOP NOSAVE><a href="../ug_html/ug_util_comm.html">Unstructured communication
|
||||
utilities</a></td>
|
||||
</tr>
|
||||
|
||||
<tr NOSAVE>
|
||||
<td VALIGN=TOP NOSAVE><i>Utilities/DDirectory</i></td>
|
||||
|
||||
<td VALIGN=TOP NOSAVE><a href="../ug_html/ug_util_dd.html">Distributed Data Directory
|
||||
utilities</a></td>
|
||||
</tr>
|
||||
|
||||
<tr NOSAVE>
|
||||
<td VALIGN=TOP NOSAVE><i>Utilities/Config</i></td>
|
||||
|
||||
<td VALIGN=TOP NOSAVE><a href="../ug_html/ug_usage.html#Building the Library">Platform-specific
|
||||
makefile definitions</a> for compiler, library and include-file paths.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><i>driver</i></td>
|
||||
|
||||
<td>Test driver programs, <i><a href="dev_driver.html">zdrive</a></i> and
|
||||
<i><a href="dev_driver.html">zCPPdrive</a></i>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><i>fdriver</i></td>
|
||||
|
||||
<td>Fortran90 version of the <a href="dev_driver.html">test driver</a> program.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><i>examples</i></td>
|
||||
|
||||
<td>Simple examples written in C and C++ that use Zoltan. </td>
|
||||
</tr>
|
||||
|
||||
<tr NOSAVE>
|
||||
<td VALIGN=TOP NOSAVE><i>docs/Zoltan_html</i></td>
|
||||
|
||||
<td>Zoltan documentation and <a href="../Zoltan.html">home page</a>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><i>docs/Zoltan_html/ug_html</i></td>
|
||||
|
||||
<td><a href="../ug_html/ug.html">User's guide</a> in HTML format.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><i>docs/Zoltan_html/dev_html</i></td>
|
||||
|
||||
<td><a href="dev.html">Developer's guide</a> in HTML format.</td>
|
||||
</tr>
|
||||
<tr NOSAVE>
|
||||
<td VALIGN=TOP NOSAVE><i>docs/Zoltan_pdf</i></td>
|
||||
|
||||
<td>PDF versions of the Zoltan User's Guide and Developer's Guide.</td>
|
||||
</tr>
|
||||
|
||||
<tr NOSAVE>
|
||||
<td VALIGN=TOP NOSAVE><i>docs/internal</i></td>
|
||||
|
||||
<td>SQA documents for the Zoltan project.</td>
|
||||
</tr>
|
||||
|
||||
<caption ALIGN=BOTTOM><i>The directory structure of the Zoltan distribution.</i></caption>
|
||||
</table>
|
||||
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a> | <a href="dev_dist_compile.html">Next:
|
||||
Compilation</a> | <a href="dev_dist_cvs.html">Previous:
|
||||
CVS</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
170
thirdParty/Zoltan/docs/dev_html/dev_driver.html
vendored
Normal file
@ -0,0 +1,170 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="karen devine, kddevin@sandia.gov">
|
||||
<title> Zoltan Developer's Guide: Using Test Drivers: zdrive and zfdrive</title>
|
||||
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_view.html">Next</a> | <a href="dev_refs.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<h2>
|
||||
<a NAME="Zdrive"></a>Appendix: Using the Test Drivers: <i>zdrive</i>, <i>zCPPdrive</i> and <i>zfdrive</i></h2>
|
||||
|
||||
<h3>
|
||||
<a NAME="Introduction"></a>Introduction</h3>
|
||||
In order to facilitate development and testing of the Zoltan library,
|
||||
simple driver programs, <i>zdrive</i> (C), <i>zCPPdrive</i> (C++)
|
||||
and <i>zfdrive</i> (Fortran90),
|
||||
are included with the library
|
||||
distribution. The concept behind the drivers is to read in mesh or graph
|
||||
information from files, run Zoltan, and then output the new assignments
|
||||
for each processor to another file. The test drivers <i>zdrive</i>
|
||||
and <i>zCPPdrive</i> read ExodusII/NemesisI
|
||||
parallel FEM files, <a href="http://cs.sandia.gov/CRF/chac.html">Chaco</a>
|
||||
input files, or <a href="https://math.nist.gov/MatrixMarket/">general
|
||||
Matrix-Market</a> files.
|
||||
Parallel NemesisI files can be created from ExodusII or Genesis
|
||||
file using the NemesisI utilities <i>nem_slice</i> and <i>nem_spread</i>.
|
||||
The Fortran90 program <i>zfdrive</i> reads only <a href="http://cs.sandia.gov/CRF/chac.html">Chaco</a> input files
|
||||
and <a href="https://math.nist.gov/MatrixMarket/">general Matrix-Market</a>
|
||||
files.
|
||||
<p>
|
||||
Source code for <i>zdrive</i> is in
|
||||
the <i>driver</i> and <i>ch</i> directories of
|
||||
the Zoltan distribution.
|
||||
The source code for <i>zCPPdrive</i> is also in <i>driver</i>, and uses some
|
||||
of the same C source files (in <i>driver</i> and <i>ch</i>) that <i>zdrive</i> uses.
|
||||
Source code for <i>zfdrive</i> is in the <i>fdriver</i> directory.
|
||||
<p>
|
||||
The C and C++ test drivers are built automatically in the
|
||||
<a href="../ug_html/ug_usage.html#Autotools">Autotools</a> build system.
|
||||
The F90 driver is built when the configure option "--enable-f90interface" is
|
||||
provided. The drivers are placed in <i>BUILD_DIR/src/driver</i> and
|
||||
<i>BUILD_DIR/src/fdriver</i>, for build directory <i>BUILD_DIR</i>.
|
||||
<p>
|
||||
The C and C++ test drivers are built in the
|
||||
<a href="../ug_html/ug_usage.html#CMake">CMake</a> build system when
|
||||
option "-D Zoltan_ENABLE_Tests:BOOL=ON" is provided. The F90 driver is
|
||||
built when option "-D Zoltan_ENABLE_F90INTERFACE:BOOL=ON" is also provided.
|
||||
The drivers are placed in <i>BUILD_DIR/packages/zoltan/src/driver</i> and
|
||||
<i>BUILD_DIR/packages/zoltan/src/fdriver</i>; they are also copied to
|
||||
<i>BUILD_DIR/packages/zoltan/test</i>.
|
||||
<h3>
|
||||
<a NAME="running zdrive"></a>Running the Test Drivers</h3>
|
||||
The test drivers are run using an input command file. A fully commented example of
|
||||
this file and the possible options can be found in <i><a href="zdrive.inp">zdrive.inp</a></i>.
|
||||
The default name for the command file is <i>zdrive.inp</i>, and the drivers will
|
||||
look for this file in the execution directory if an alternate name is not
|
||||
given on the command line. If another filename is being used for the command
|
||||
file, it should be specified as the first argument on the command line.
|
||||
(Note: <i>zfdrive</i> cannot read a command line argument; its input file
|
||||
must be named <i>zdrive.inp</i>.)
|
||||
<p>
|
||||
For an example of a simple input file, see the <a href="#zdrive input">figure</a>
|
||||
below. In this problem, the method being used for dynamic load balancing
|
||||
is <a href="dev_rcb.html#RCB">RCB</a>. Input data is read from <a href="http://cs.sandia.gov/CRF/chac.html">Chaco</a>
|
||||
input files<i> simple.graph</i> and <i>simple.coords</i>. Zoltan's
|
||||
<a href="../ug_html/ug_param.html#Debug Levels in Zoltan">DEBUG_LEVEL</a> parameter
|
||||
is set to 3; default values of all other parameters are used.
|
||||
(Note: <i>zfdrive</i> can read only a simplified version of the input file.
|
||||
See the <i>zfdrive</i> notes in <i><a href="zdrive.inp">zdrive.inp</a></i> for more details.)
|
||||
<br>
|
||||
<center><table BORDER=2 COLS=1 WIDTH="90%" NOSAVE >
|
||||
<tr VALIGN=TOP>
|
||||
<td><a NAME="zdrive input"></a>
|
||||
<tt>
|
||||
Decomposition method = rcb
|
||||
<br>Zoltan Parameters = Debug_Level=3
|
||||
<br>File Type
|
||||
= Chaco
|
||||
<br>File Name
|
||||
= simple
|
||||
<br>Parallel Disk Info = number=0
|
||||
</tt>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<caption ALIGN=BOTTOM><i><font size=-1>Example zdrive.inp file</font></i></caption>
|
||||
</table></center>
|
||||
|
||||
<p>The <i>zdrive</i> programs creates ascii files named
|
||||
"<i>file_name</i>.out.<i>p</i>.<i>n</i>", where <i>file_name</i>
|
||||
is the file name specified in <i>zdrive.inp</i>, <i>p</i> is the number
|
||||
of processors on which <i>zdrive</i> was run, and <i>n</i>=0,1,...,<i>p</i>-1 is
|
||||
the processor by which the file was created. (For <i>zfdrive</i>, the
|
||||
files are named "<i>file_name</i>.fout.<i>p</i>.<i>n</i>".)
|
||||
These files are in the same directory where the input graph
|
||||
file was located for that processor. Each file contains a list of global
|
||||
ids for the elements that are assigned to that processor after running Zoltan.
|
||||
The input decomposition can also be written in this format to files
|
||||
"<i>file_name</i>.in.<i>p</i>.<i>n</i>";
|
||||
see "zdrive debug level" in <i><a href="zdrive.inp">zdrive.inp</a></i> for more details.
|
||||
<p>
|
||||
Decompositions for 2D problems can be written to files that can be plotted
|
||||
by <a href="https://www.gnuplot.org/">gnuplot</a>. See "gnuplot output" in <i><a href="zdrive.inp">zdrive.inp</a></i>
|
||||
for more information. Decompositions for 3D problems can be viewed after the
|
||||
test driver has finished by running the graphical tools <I>vtk_view</I> or
|
||||
<I>vtk_write</I> described <a href="dev_view.html">next</a>.
|
||||
<h3>
|
||||
<a NAME="adding algorithms"></a>Adding New Algorithms</h3>
|
||||
The driver has been set up in such a way that testing new algorithms that
|
||||
have been added to Zoltan is relatively simple. The method that is in the
|
||||
input file is passed directly to Zoltan. Thus, this string must be the
|
||||
same string that the parameter <a href="../ug_html/ug_alg.html#LB_METHOD"><i>LB_METHOD</i></a> is expecting.
|
||||
<h3>
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a> | <a href="dev_view.html">Next:
|
||||
Visualizing Geometric Partitions</a> | <a href="dev_refs.html">Previous:
|
||||
References</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html
|
240
thirdParty/Zoltan/docs/dev_html/dev_fortran.html
vendored
Normal file
@ -0,0 +1,240 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; U; SunOS 4.1.3_U1 sun4m) [Netscape]">
|
||||
<META NAME="sandia.approved" CONTENT="SAND99-1376">
|
||||
<META NAME="author" CONTENT="karen devine, kddevin@sandia.gov">
|
||||
|
||||
<TITLE> Zoltan Developer's Guide: FORTRAN Interface</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_cpp.html">Next</a> | <a href="dev_mig.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<H2>
|
||||
<A NAME="fortran dev"></A>FORTRAN Interface</H2>
|
||||
With any change to the user API of Zoltan, the Fortran interface should
|
||||
be modified to reflect the change. This section contains information about
|
||||
the implementation of the Fortran interface which should cover most situations.
|
||||
<UL><A HREF="#fortran dev structures">Structures</A>
|
||||
<BR><A HREF="#fortran dev modifications">Modifications to an existing Zoltan
|
||||
interface function</A>
|
||||
<BR><A HREF="#fortran dev remove">Removing a Zoltan interface function</A>
|
||||
<BR><A HREF="#fortran dev add">Adding a new Zoltan interface function</A>
|
||||
<BR><A HREF="#fortran dev query">Query functions</A>
|
||||
<BR><A HREF="#fortran dev enum">Enumerated types and defined constants</A></UL>
|
||||
If you have questions or need assistance, contact <A HREF="mailto:william.mitchell@nist.gov">william.mitchell@nist.gov</A>.
|
||||
|
||||
<P>If changes are made to functions that are called by <I><A HREF="dev_driver.html#Zdrive">zdrive</A></I>,
|
||||
then the changes should also be made to
|
||||
<a href="dev_driver.html"><I>zfdrive</I></a>. Changes to the
|
||||
Fortran interface can be tested by building and running <a href="dev_driver.html"><I>zfdrive</I></a>,
|
||||
if the changes are in functions called by <a href="dev_driver.html"><I>zfdrive</I></a>.
|
||||
The <a href="dev_driver.html"><I>zfdrive</I></a> program
|
||||
works the same way as <I><A HREF="dev_driver.html">zdrive</A></I>
|
||||
except that it is restricted to the
|
||||
<a href="http://cs.sandia.gov/CRF/chac.html">Chaco</a>
|
||||
examples and simpler input files.
|
||||
|
||||
<P>Any changes in the interface should also be reflected in the Fortran
|
||||
API definitions in the <A HREF="../ug_html/ug.html">Zoltan User's Guide</A>.
|
||||
<H3>
|
||||
<A NAME="fortran dev structures"></A>Structures</H3>
|
||||
All structures in the API have a corresponding user-defined type in the
|
||||
Fortran interface. If a new structure is added, then modifications will
|
||||
be required to <I>fort/fwrap.fpp</I> and <I>fort/cwrap.c</I>. In these
|
||||
files, search for <B><A HREF="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</A></B>
|
||||
and "do like it does."
|
||||
|
||||
<P>An explanation of how structures are handled may help. The Fortran user-defined
|
||||
type for the structure simply contains the address of the structure, i.e.,
|
||||
the C pointer returned by a call to create the structure. Note that the
|
||||
user does not have access to the components of the structure, and can only
|
||||
pass the structure to functions. Within the Fortran structure, the
|
||||
address is stored in a variable of type(<B>Zoltan_PTR</B>), which is a character
|
||||
string containing one character for each byte of the address. This gives
|
||||
the best guarantee of portability under the Fortran and C standards. Also,
|
||||
to insure portability of passing character strings, the character string
|
||||
is converted to an array of integers before passing it between Fortran
|
||||
and C. The process of doing this is most easily seen by looking at <B><A HREF="../ug_html/ug_interface_init.html#Zoltan_Destroy">Zoltan_Destroy</A></B>,
|
||||
which has little else to clutter the code.
|
||||
<H3>
|
||||
<A NAME="fortran dev modifications"></A>Modifications to an existing Zoltan
|
||||
interface function</H3>
|
||||
If the argument list or return type of a user-callable function in Zoltan
|
||||
changes, the same changes must be made in the Fortran interface routines.
|
||||
This involves changes in two files: <I>fort/fwrap.fpp</I> and <I>fort/cwrap.c</I>.
|
||||
In these files, search for the function name with the prefix <B>Zoltan_ </B>omitted,
|
||||
and modify the argument list, argument declarations, return type, and call
|
||||
to the C library function as appropriate. When adding a new argument, if
|
||||
there is not already an argument of the same type, look at another
|
||||
function that does have an argument of that type for guidance.
|
||||
<H3>
|
||||
<A NAME="fortran dev remove"></A>Removing a Zoltan interface function</H3>
|
||||
If a user callable function is removed from the Zoltan library, edit <I>fort/fwrap.fpp</I>
|
||||
and <I>fort/cwrap.c</I> to remove all references to that function.
|
||||
<H3>
|
||||
<A NAME="fortran dev add"></A>Adding a new Zoltan interface function</H3>
|
||||
Adding a new function involves changes to the two files <I>fort/fwrap.fpp</I>
|
||||
and <I>fort/cwrap.c</I>. Perhaps the easiest way to add a new function
|
||||
to these files is to pick some existing function, search for all occurrences
|
||||
of it, and use that code as a guide for the implementation of the interface
|
||||
for the new function. <B><A HREF="../ug_html/ug_interface_augment.html#Zoltan_LB_Point_Assign">Zoltan_LB_Point_Assign</A></B>
|
||||
is a nice minimal function to use as an example. Use a case insensitive
|
||||
search on the name of the function without the <B>Zoltan_LB_</B> prefix, for example
|
||||
<B>point_assign</B>.
|
||||
|
||||
<P>Here are the items in <I>fwrap.fpp</I>:
|
||||
<UL>
|
||||
<LI>
|
||||
public statement: The name of the function should be included in the list
|
||||
of public entities.</LI>
|
||||
|
||||
<LI>
|
||||
interface for the C wrapper: Copy one of these and modify the function
|
||||
name, argument list and declarations for the new function. The name is
|
||||
of the form <B>Zfw_LB_Point_Assign</B> (fw stands for Fortran wrapper).</LI>
|
||||
|
||||
<LI>
|
||||
generic interface: This assigns the function name to be a generic name
|
||||
for one or more module procedures.</LI>
|
||||
|
||||
<LI>
|
||||
module procedure(s): These are the Fortran-side wrapper functions. Usually
|
||||
there is one module procedure of the form <B>Zf90_LB_Point_Assign</B>. If
|
||||
one argument can have more than one type passed to it (for example, it
|
||||
is type void in the C interface), then there must be one module procedure
|
||||
for each type that can be passed. These are distinguished by appending
|
||||
a digit to the end of the module procedure name. If n arguments can have
|
||||
more than one type, then n digits are appended. See <B><A HREF="../ug_html/ug_interface_lb.html#Zoltan_LB_Free_Part">Zoltan_LB_Free_Part</A></B>
|
||||
for example. Generally the module procedure just calls the C-side wrapper
|
||||
function,<B> </B>but in some cases it may need to coerce data to a different
|
||||
type (e.g., <B><A HREF="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</A></B>),
|
||||
or may actually do real work (e.g., <B><A HREF="../ug_html/ug_interface_lb.html#Zoltan_LB_Free_Part">Zoltan_LB_Free_Part</A></B>).</LI>
|
||||
|
||||
<BR> </UL>
|
||||
Here are the items in <I>cwrap.c</I>:
|
||||
<UL>
|
||||
<LI>
|
||||
name mangling: These are macros to convert the function name from the case
|
||||
sensitive C name (for example, <B>Zfw_LB_Point_Assign</B>) to the mangled
|
||||
name produced by the Fortran compiler. There are four of these for each
|
||||
function:</LI>
|
||||
|
||||
<UL>
|
||||
<LI>
|
||||
lowercase (<B>zfw_lb_point_assign</B>),</LI>
|
||||
|
||||
<LI>
|
||||
uppercase (<B>ZFW_LB_POINT_ASSIGN</B>),</LI>
|
||||
|
||||
<LI>
|
||||
lowercase with underscore (<B>zfw_lb_point_assign_</B>), and</LI>
|
||||
|
||||
<LI>
|
||||
lower case with double underscore (<B>zfw_point_assign__</B> but the
|
||||
second underscore is appended only if the name already contains an underscore,
|
||||
which will always be the case for names starting with <B>Zfw_</B>).</LI>
|
||||
</UL>
|
||||
|
||||
<LI>
|
||||
C-side wrapper function: Usually this just calls the Zoltan library function
|
||||
after coercing the form of the data (for example, constructing the pointer
|
||||
to <B><A HREF="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</A> </B>and call-by-reference
|
||||
to call-by-value conversions).</LI>
|
||||
</UL>
|
||||
|
||||
<H3>
|
||||
<A NAME="fortran dev query"></A>Query functions</H3>
|
||||
If a query function is added, deleted or changed, modifications must be
|
||||
made to <I>fort/fwrap.fpp</I> and <I>fort/cwrap.c</I>, similar to the modifications
|
||||
for interface functions, and possibly also<I> include/zoltan.h</I> and <I>zz/zz_const.h</I>.
|
||||
|
||||
<P>Here are the places query functions appear in <I>fwrap.fpp</I>:
|
||||
<UL>
|
||||
<LI>
|
||||
public statement for the <B><A HREF="dev_lb_interface.html#interface_fns">ZOLTAN_FN_TYPE</A></B>
|
||||
argument: These are identical to the C enumerated type.</LI>
|
||||
|
||||
<LI>
|
||||
definition of the <B><A HREF="dev_lb_interface.html#interface_fns">ZOLTAN_FN_TYPE</A></B>
|
||||
arguments: There are two groups of these, one containing subroutines (void
|
||||
functions) and one containing functions (int functions). Put the new symbol
|
||||
in the right category. The value assigned to the new symbol must agree
|
||||
exactly with where the symbol appears in the order of the enumerated type.</LI>
|
||||
</UL>
|
||||
Here are the places query functions appear in <I>cwrap.c</I>:
|
||||
<UL>
|
||||
<LI>
|
||||
reverse wrappers: These are the query functions that are actually called
|
||||
by the Zoltan library routines when the query function was registered from
|
||||
Fortran. They are just wrappers to call the registered Fortran routine,
|
||||
coercing argument types as necessary. Look at <B>Zoltan_Num_Edges_Fort_Wrapper</B>
|
||||
for an example.</LI>
|
||||
|
||||
<LI>
|
||||
<B>Zfw_Set_Fn</B>: This has a switch based on the value of the <B><A HREF="dev_lb_interface.html#interface_fns">ZOLTAN_FN_TYPE</A></B>
|
||||
argument to set the Fortran query function and wrapper in the <B><A HREF="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</A></B>.</LI>
|
||||
</UL>
|
||||
In <I>zz/zz_const.h</I>, if a new field is added to the structures for
|
||||
a new query function, it should be added in both C and Fortran forms. In
|
||||
<I>include/zoltan.h</I>, if a new typedef for a query function is added,
|
||||
it should be added in both C and Fortran forms. See these files for examples.
|
||||
<H3>
|
||||
<A NAME="fortran dev enum"></A>Enumerated types and defined constants</H3>
|
||||
Enumerated types and defined constants that the application uses as the
|
||||
value for an arguments must be placed in<I> fwrap.fpp</I> with the same
|
||||
value. See <B><A HREF="../ug_html/ug_interface.html#Error Codes">ZOLTAN_OK</A></B>
|
||||
for an example.
|
||||
<HR WIDTH="100%">
|
||||
<BR>[<A HREF="dev.html">Table of Contents</A> | <A HREF="dev_cpp.html">Next:
|
||||
C++ Interface</A> | <A HREF="dev_mig.html">Previous:
|
||||
Migration Tools</A> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</BODY>
|
||||
</HTML>
|
133
thirdParty/Zoltan/docs/dev_html/dev_hier.html
vendored
Normal file
@ -0,0 +1,133 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META NAME="sandia.approved" CONTENT="SAND99-1376">
|
||||
<META NAME="author" CONTENT="Jim Teresco, jdteres@sandia.gov">
|
||||
<TITLE> Zoltan Developer's Guide: HIER</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_rib.html">Next</a> | <a href="dev_test_script.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<H2>
|
||||
<A NAME="HIER"></A>Appendix: Hierarchical Partitioning (HIER)</H2>
|
||||
|
||||
|
||||
<H3>
|
||||
Outline of Algorithm</H3>
|
||||
|
||||
<P>Zoltan's hierarchical balancing automates the creation of hierarchical
|
||||
partitions. The implementation of Hierarchical Partitioning (HIER) in Zoltan is
|
||||
due to Jim Teresco (Williams College), with many suggestions and ideas
|
||||
from the entire Zoltan team.<P>
|
||||
|
||||
The hierarchical balancing implementation utilizes a lightweight
|
||||
intermediate structure and a set of callback functions that permit an
|
||||
automated and efficient hierarchical balancing which can use any of
|
||||
the procedures available within Zoltan without modification and in any
|
||||
combination. Hierachical balancing is invoked by an application the
|
||||
same way as other Zoltan procedures. Since Zoltan is data-structure
|
||||
neutral, it operates on generic "objects" and interfaces with
|
||||
applications through callback functions.<P>
|
||||
|
||||
A hierarchical balancing step begins by building an intermediate
|
||||
structure using the application-supplied callbacks. The initial
|
||||
structure is computed using <B>Zoltan_Build_Graph</B> to build the
|
||||
same structure that is used to support partitioning using the Parmetis
|
||||
and Jostle libraries. The hierarchical balancing procedure then
|
||||
provides its own callback functions to allow existing Zoltan
|
||||
procedures to be used to query and update the intermediate structure
|
||||
at each level of a hierarchical balancing. The structure is augmented
|
||||
to keep track of objects and their needed information during the
|
||||
procedure. After all levels of the hierarchical balancing have been
|
||||
completed, Zoltan's usual migration arrays are constructed and
|
||||
returned to the application. Thus, only lightweight objects are
|
||||
migrated internally between levels, not the (larger and more costly)
|
||||
application data. More details about the fields of the intermediate
|
||||
structure and how the are used can be found in the Zoltan distribution
|
||||
in <I>hier/README</I>.<P>
|
||||
|
||||
<BR>
|
||||
|
||||
<H3>
|
||||
Data Structure Definitions</H3>
|
||||
|
||||
<P>There is one major data structure in HIER, defined in
|
||||
<i>hier/hier.h</i>. The <I>struct HierPartParamsStruct</I> includes
|
||||
all information needed by the hierarchical balancing procedures. The
|
||||
fields are documented in comments in the structure definition.
|
||||
|
||||
<BR>
|
||||
|
||||
<H3>
|
||||
Parameters</H3>
|
||||
|
||||
<P>The parameters used by HIER and their default values are described in the
|
||||
<a href="../ug_html/ug_alg_hier.html">HIER section</a> of the <B><A HREF="../ug_html/ug.html">Zoltan User's
|
||||
Guide</A></B>. These can be set by use of the <b>Zoltan_Hier_Set_Param</b> subroutine
|
||||
in the file <i>hier/hier.c</i>.
|
||||
|
||||
<BR>
|
||||
|
||||
<H3>
|
||||
Main Routine</H3>
|
||||
|
||||
<P>The main routine for HIER is <b>Zoltan_Hier</b> in the file <i>hier/hier.c</i>.
|
||||
|
||||
<BR>
|
||||
<BR>
|
||||
<BR>
|
||||
|
||||
<P>
|
||||
<HR WIDTH="100%">
|
||||
<BR>[<A HREF="dev.html">Table of
|
||||
Contents</A> | <a href="dev_rib.html">Next:
|
||||
Recursive Inertial Bisection (RIB)</a> | <A HREF="dev_test_script.html">
|
||||
Previous: Using the Test Script</A> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</BODY>
|
||||
</HTML>
|
298
thirdParty/Zoltan/docs/dev_html/dev_hsfc.html
vendored
Normal file
@ -0,0 +1,298 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; U; SunOS 5.6 sun4m) [Netscape]">
|
||||
<META NAME="sandia.approved" CONTENT="SAND99-1376">
|
||||
<META NAME="author" CONTENT="karen devine, kddevin@sandia.gov">
|
||||
<TITLE> Zoltan Developer's Guide: HSFC</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a>
|
||||
| <a href="dev_degenerate.html">Next</a>
|
||||
| <a href="dev_reftree.html">Previous</a></i></b></div>
|
||||
|
||||
<H2>
|
||||
<A NAME="HSFC"></A>Appendix: Hilbert Space Filling Curve (HSFC)</H2>
|
||||
|
||||
|
||||
<H3>
|
||||
Outline of Algorithm</H3>
|
||||
|
||||
This partitioning algorithm is loosely based on the 2D & 3D Hilbert tables used in Octree
|
||||
and on the BSFC partitioning implementation by Andrew C. Bauer, Department of
|
||||
Engineering, State University of New York at Buffalo, as his summer project at
|
||||
SNL in 2001. Please refer to the corresponding section in the Zoltan User's guide,
|
||||
<a href="../ug_html/ug_alg_hsfc.html"><b>Hilbert Space Filling Curve (HSFC),</b></a>
|
||||
for information about how to use this module and its parameters. Note: the partitioning,
|
||||
point assign and box assign functions in this code module can be trivially extended
|
||||
to any space filling curve for which we have a state table definition of the curve.
|
||||
<p>
|
||||
First, the weights and inverse Hilbert coordinates for each object
|
||||
are determined. If the objects do not have weights, unit weights are assigned.
|
||||
If the objects have multiple weights, only the first weight is currently used. The smallest
|
||||
axis-aligned box is found that contains
|
||||
all of the objects using their two or three dimensional spatial coordinates.
|
||||
This bounding box is slightly expanded to ensure that all objects are strictly
|
||||
interior to the boundary surface. The bounding box is necessary in order to calculate
|
||||
the inverse Hilbert Space Filling curve coordinate. The bounding box is used to
|
||||
scale the problem coordinates into the [0,1]^d unit volume (d represents the number of dimensions
|
||||
in the problem space.) The inverse Hilbert
|
||||
coordinate is calculated and stored as a double precision floating point value for
|
||||
each object. This code works on problems with one, two or three dimensions (the
|
||||
1-D Inverse Hilbert coordinate is simply the problem coordinate itself, after the
|
||||
bounding box scaling.)
|
||||
<p>
|
||||
The algorithm seeks to cut the unit interval into P segments containing equal
|
||||
weights of objects associated to the segments by their inverse Hilbert coordinates.
|
||||
The code allows a user vector to specify the desired fraction
|
||||
of the total weight to be assigned to each interval. Note, a zero weight fraction prevents any object
|
||||
being assigned to the corresponding interval. The unit interval is divided into N bins,
|
||||
N=k(P-1)+1, where k is a
|
||||
small positive constant.) Each bin has an left and right endpoint
|
||||
specifying the half-open interval [l,r) associated with the bin. The bins form a
|
||||
non-overlapping cover of [0,1] with the right endpoint of the last bin forced to include 1.
|
||||
The bins are of equal size on the first loop. (Hence each interval or part of the
|
||||
partition is a collection of bins.)
|
||||
<p>
|
||||
For each loop, an MPI_Allreduce call is made to
|
||||
globally sum the weights in each bin. This call also determines the maximum and
|
||||
minimum (inverse Hilbert) coordinate found in each bin. A greedy algorithm sums the
|
||||
weights of the bins from left to right until the next bin would cause an overflow for
|
||||
the current part. This results in new partition of P intervals. The location of
|
||||
each cut (just before an "overflowing" bin) and the size of its "overflowing" bin are
|
||||
saved. The "overflowing" bin's maximum and minimum are compared to determine if the bin
|
||||
can be practically subdivided. (If the bin's maximum and minimum coordinates are too
|
||||
close relative to double precision resolution, the bin can not be practically
|
||||
subdivided.) If at least one bin can be further refined, then looping will continue.
|
||||
In order to prevent a systematic bias, the greedy algorithm is assumed to exactly
|
||||
satisfy the weight required by each part.
|
||||
<p>
|
||||
Before starting the next loop, the P intervals are again divided into N bins. The
|
||||
P-1 "overflow" bins are each subdivided into k-1 equal bins. The
|
||||
intervals before and after these new bins determine the remaining bins. This process
|
||||
maintains a fixed number of bins. No bin is "privileged." Specifically, any bin is
|
||||
subject to later refinement, as necessary, on future loops.
|
||||
<p>
|
||||
The loop terminates when there is no need to further divide any "overflow" bin. A slightly
|
||||
different greedy algorithm is used to determine the final partition of P intervals from the
|
||||
N bins. In this case, when the next bin would cause an overflow, the tolerance
|
||||
is computed for both underfilling (excluding this last bin) and overfilling
|
||||
(including the last bin). The tolerance closest to the target tolerance is
|
||||
used to select the dividing point. The tolerance obtained at each dividing
|
||||
point is compared to the user's specified tolerance. An error is returned if
|
||||
the user's tolerance is not satisfied at any cut. After each cut is made, a
|
||||
correction is calculated as the ratio of the actual weight to the target
|
||||
weight used up to this point. This correction is made to the target weight
|
||||
for the next part. This correction fixes the subsequent parts when
|
||||
a "massive" weight object is on the border of a cut and its assignment creates an
|
||||
excessive imbalance.
|
||||
<p>
|
||||
Generally, the number of loops is small (proportional to log(number of objects)).
|
||||
A maximum of MAX_LOOPS is
|
||||
used to prevent an infinite looping condition. A user-defined
|
||||
function is used in the MPI_Allreduce call in order to simultaneously determine the
|
||||
sum, maximum, and minimum of each bin. The message length in the MPI_Allreduce is
|
||||
proportional to the P, the number of parts.
|
||||
<p>
|
||||
Note, when a bin is encountered that satisfies more than two parts, that bin is refined
|
||||
into a multiple of k-1 intervals which maintains a total of N bins.
|
||||
<BR>
|
||||
<h3>Hilbert Transformations</h3>
|
||||
The HSFC now uses table driven logic to convert from spatial coordinates (2 or 3 dimensions)
|
||||
(the Inverse Hilbert functions) and from the unit interval into spatial coordinates
|
||||
(Hilbert functions). In each case there are two associated tables: the data table and the
|
||||
state table. In all cases, the table logic can be extended to any required precision. Currently,
|
||||
the precision is determined for compatibility with the the double precision used in
|
||||
the partitioning algorithm.
|
||||
<p>The inverse transformation is computed by taking the highest order bit from each spatial
|
||||
coordinate and packing them together as 2 or 3 bits (as appropriate to the dimensionality)
|
||||
in the order xyz (or xy) where x is the highest bit in the word.
|
||||
The initial state is 0. The data table lookup finds the value
|
||||
at the column indexed by the xyz word and the row 0 (corresponding to the initial state value.)
|
||||
This data are the 3 (or 2) starting bits of the Hilbert coordinate. The next state value
|
||||
is found by looking up the corresponding element of the state table (xyz column and row 0.)
|
||||
<p>
|
||||
The table procedure continues to loop (using loop counter i, for example) until the required
|
||||
precision is reached. At loop i, the ith bits from each spatial dimension are packed together
|
||||
as the xyz column index. The data table lookup finds the element at column xyz and the row
|
||||
determined by the last state table value. This is appended to the Hilbert coordinate. The
|
||||
state table is used to find the next state value at the element corresponding to the xyz
|
||||
column and row equal to the last state value.
|
||||
<p>
|
||||
The inverse transformation is analogous. Here the 3 (or 2 in the 2-d case) bits of the
|
||||
Hilbert coordinate are extracted into a word. This word is the column index into the
|
||||
data table and the state value is the row. This word found in the data table is
|
||||
interpreted as the packed xyz bits for the spatial coordinates. These bits are
|
||||
extracted for each dimension and appended to that dimension's coordinate. The corresponding
|
||||
state table is used to find the next row (state) used in the next loop.
|
||||
|
||||
|
||||
<BR>
|
||||
<h3>Point Assign</h3>
|
||||
The user can use
|
||||
<a href="../ug_html/ug_interface_augment.html#Zoltan_LB_Point_Assign"><b>Zoltan_LB_Point_Assign</b></a>
|
||||
to add a new point to the
|
||||
appropriate part. The bounding box coordinates,
|
||||
the final partition, and other related information are maintained after partitioning if the KEEP_CUTS
|
||||
parameter is set by the user. The KEEP_CUTS parameter must be set by the user for Point Assign!
|
||||
The extended bounded box is
|
||||
used to compute the new point's inverse Hilbert coordinate. Then the
|
||||
routine performs a binary search on the final partition to determine the part (interval) which
|
||||
includes the point. The routine returns the part number assigned to that
|
||||
interval.
|
||||
<p>
|
||||
The Point Assign function now works for any point in space, even if the point is
|
||||
outside the original bounding box. If the point is outside the bounding box, it is first
|
||||
scaled using the same equations that scale the interior points into the unit volume.
|
||||
The point is projected onto the unit volume. For each spatial dimension, if the scaled
|
||||
coordinate is less than zero, it is replace by zero. If it is greater than one, it is
|
||||
replaced by one. Otherwise the scaled coordinate is directly used.
|
||||
|
||||
|
||||
<BR>
|
||||
<h3>Box Assign</h3>
|
||||
The user can use
|
||||
<a href="../ug_html/ug_interface_augment.html#Zoltan_LB_Box_Assign"><b>Zoltan_LB_Box_Assign</b></a>
|
||||
to determine the parts whose
|
||||
corresponding subdomains intersect the user's query box.
|
||||
Although very different in implementation, the papers by Lawder and King ("Querying Multi-
|
||||
dimensional Data Index Using the Hilbert Space-Filling Curve", 2000, etc.) were the original
|
||||
inspiration for this algorithm. The Zoltan_HSFC_Box_Assign routine primarily scales the
|
||||
user query region and determines its intersection with the Hilbert's bounding box. Points
|
||||
exterior to the bounding box get projected along the coordinate axis onto the bounding box.
|
||||
A fuzzy region is built around query points and lines to create the boxes required for the search.
|
||||
It also handles the trivial one-dimensional case. Otherwise it repeatedly calls the 2d and 3d
|
||||
query functions using the next highest part's left end point to start the search. These query
|
||||
routines return the next point on the Hilbert curve to enter the query region. A binary
|
||||
search finds the part associated with this point. The query functions are called one more
|
||||
time than the number of parts that have points interior to the query region.
|
||||
<p>
|
||||
The query functions decompose the unit square (or cube) level by level like the Octree method.
|
||||
Each level divides the remaining region into quadrants (or octets in 3d). At each level, the
|
||||
quadrant with the smallest inverse Hilbert coordinate (that is, occurring first along the Hilbert curve)
|
||||
whose inverse Hilbert coordinate is equal or larger than the starting inverse Hilbert coordinate and which
|
||||
intersects with query region is selected. Thus, each level calculates the next 2 bits
|
||||
(3 bits in 3d) of the inverse Hilbert coordinate of the next point to enter the query region. No more
|
||||
than once per call to the query function, the function may backtrack to a nearest previous
|
||||
level that has another quadrant that intersects the query region and has a higher Hilbert coordinate.
|
||||
<p>
|
||||
In order to determine the intersection with the query region, the next 2 bits (3 in 3 dimensions) of
|
||||
the Hilbert transformation
|
||||
are also computed (by table lookup) at each level for the quadrant being tested. These bits are
|
||||
compared to the the bits resulting from the intersection of the query region with the region
|
||||
determined by the spatial coordinates computed to the precision of the previous levels.
|
||||
<p>
|
||||
If the user query box has any side (edge) that is "too small" (effectively degenerate in
|
||||
some dimension), it is replaced by a minimum value and the corresponding vertex coordinates
|
||||
are symmetrically expanded. This is refered to as a "fuzzy" region.
|
||||
<p>
|
||||
This function requires the KEEP_CUTS parameter to be set by the user.
|
||||
The Box Assign function now works for any box in space, even if it has regions outside the
|
||||
original bounding box. The box vertices are scaled and projected exactly like the points
|
||||
in the Point Assign function described above. However, to allow the search to use a proper
|
||||
volumn, projected points, lines, and planes are converted to a usable volume by the
|
||||
fuzzy region process described above.
|
||||
<p>
|
||||
This algorithm will work for any space filling curve. All that is necessary is to
|
||||
provide the tables (derieved from the curve's state transition diagram) in place of
|
||||
the Hilbert Space Filling Curve tables.
|
||||
|
||||
|
||||
<BR>
|
||||
|
||||
<H3>Data Structure Definitions</H3>
|
||||
The data structures are defined in <i>hsfc/hsfc.h</i>. The objects being load balanced
|
||||
are represented by the <i>Dots</i> Structure which holds the objects spacial coordinates,
|
||||
the corresponding inverse Hilbert coordinate, the processor owning the object,
|
||||
and the object's weight(s). The <i>Partition</i> structure holds the left and right
|
||||
endpoints of the interval represented by this element of the partition and the index
|
||||
to the processor owning this element of the partition. The structure <i>HSFC_Data</i>
|
||||
holds the "persistant" data
|
||||
needed by the point assign and box assign routines. This includes the bounding box,
|
||||
the number of loops necessary for load balancing, the number of dimensions for the problem,
|
||||
a pointer to the function that returns the inverse Hilbert Space-Filling Curve
|
||||
coordinate, and the final Partition structure contents.
|
||||
|
||||
<P>
|
||||
|
||||
<H3>
|
||||
Parameters</H3>
|
||||
|
||||
<P>The parameters used by HSFC and their default values are described in the
|
||||
<a href="../ug_html/ug_alg_hsfc.html">HSFC section</a> of the <B><A HREF="../ug_html/ug.html">Zoltan User's
|
||||
Guide</A></B>. These can be set by use of the <b>Zoltan_HSFC_Set_Param</b> subroutine
|
||||
in the file <i>hsfc/hsfc.c</i>.
|
||||
<p>
|
||||
When the parameter <a href="../ug_html/ug_alg_hsfc.html">REDUCE_DIMENSIONS</a>
|
||||
is specified, the HSFC algorithm will perform lower dimensional
|
||||
partitioning if the geometry is found to be degenerate. More information
|
||||
on detecting degenerate
|
||||
geometries may be found in another <a href="dev_degenerate.html">
|
||||
section</a>.
|
||||
|
||||
|
||||
<BR>
|
||||
|
||||
<H3>
|
||||
Main Routine</H3>
|
||||
|
||||
<P>The main routine for HSFC is <b>Zoltan_HSFC</b> in the file <i>hsfc/hsfc.c</i>.
|
||||
|
||||
<BR>
|
||||
<BR>
|
||||
<BR>
|
||||
|
||||
<P>
|
||||
<HR WIDTH="100%">
|
||||
<BR>[<A HREF="dev.html">Table of Contents</A>
|
||||
| <a href="dev_degenerate.html">Next: Handling Degenerate Geometries</a>
|
||||
|
||||
| <A HREF="dev_reftree.html"> Previous: Refinement Tree</A> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</BODY>
|
||||
</HTML>
|
82
thirdParty/Zoltan/docs/dev_html/dev_intro.html
vendored
Normal file
@ -0,0 +1,82 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; U; SunOS 4.1.3_U1 sun4m) [Netscape]">
|
||||
<META NAME="sandia.approved" CONTENT="SAND99-1376">
|
||||
<META NAME="author" CONTENT="karen devine, kddevin@sandia.gov">
|
||||
|
||||
<TITLE> Zoltan Developer's Guide: Introduction</TITLE>
|
||||
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_intro_philosophy.html">Next</a> | <a href="dev.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<H2>
|
||||
<A NAME="intro"></A>Introduction and General Principles</H2>
|
||||
The goal of the Zoltan project is to design a general-purpose tool for
|
||||
parallel data management for unstructured, dynamic applications. This tool includes a suite of load-balancing
|
||||
algorithms, an unstructured communication package, distributed data directories, and dynamic debugging tools that can be used by a variety of applications. It will, thus,
|
||||
be used by many application developers and be added to by many algorithm
|
||||
developers. Software projects of this scale need general guidelines
|
||||
and principles so that the code produced is easily maintained and added
|
||||
to. We have tried to keep restrictions on developers to a minimum.
|
||||
However, we do require that a few coding practices be followed. These
|
||||
guidelines are described in the following sections:
|
||||
<BLOCKQUOTE><A HREF="dev_intro_philosophy.html">Philosophy of Zoltan</A>
|
||||
<BR><A HREF="dev_intro_coding.html">Coding Principles in Zoltan</A>
|
||||
<BR><A HREF="dev_intro_sqe.html">Zoltan Quality Assurance</A>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<HR WIDTH="100%">
|
||||
<BR>[<A HREF="dev.html">Table of Contents</A> | <A HREF="dev_intro_philosophy.html">Next:
|
||||
Philosophy of Zoltan</A> | <A HREF="dev.html">Previous:
|
||||
Table of Contents</A> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</BODY>
|
||||
</HTML>
|
255
thirdParty/Zoltan/docs/dev_html/dev_intro_coding.html
vendored
Normal file
@ -0,0 +1,255 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; U; SunOS 5.6 sun4m) [Netscape]">
|
||||
<META NAME="sandia.approved" CONTENT="SAND99-1376">
|
||||
<META NAME="author" CONTENT="karen devine, kddevin@sandia.gov">
|
||||
|
||||
<TITLE> Zoltan Developer's Guide: Coding Principles</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_intro_sqe.html">Next</a> | <a href="dev_intro_philosophy.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<H2>
|
||||
<A NAME="coding"></A>Coding Principles in Zoltan</H2>
|
||||
<blockquote>
|
||||
<ol TYPE=A><a href="#include">Include files</a>
|
||||
<br><a href="#global">Global Variables</a>
|
||||
<br><a href="#functions">Function Names</a>
|
||||
<br><a href="#par_comm">Parallel Communication</a>
|
||||
<br><a href="#memory1">Memory Management</a>
|
||||
<br><a href="#return">Errors, Warnings and Return Codes</a>
|
||||
</ol>
|
||||
</blockquote>
|
||||
|
||||
<H3>
|
||||
<A NAME="include"></A>Include files</H3>
|
||||
Include files should be used for function prototypes, macro definitions,
|
||||
and data structure definitions. The convention used is that external function
|
||||
prototypes and data structure definitions
|
||||
required by more than one module are stored in include files named
|
||||
<I>*_const.h</I> (e.g., <I>zz/zz_const.h</I>). Include files with static
|
||||
function prototypes or static data structure
|
||||
definitions (i.e., files that are included in only one module) are
|
||||
named <I>*.h</I> (e.g.,<I> rcb/rcb.h</I>).
|
||||
|
||||
<P>The include file <I>include/zoltan.h</I> contains the Zoltan
|
||||
interface; it should be included by C application source files that call
|
||||
Zoltan. C++ applications that use the C++ interface should include
|
||||
<I>include/zoltan_cpp.h</I> instead.
|
||||
<p>
|
||||
The include file <I>zz/zz_const.h</I> describes
|
||||
the principle Zoltan data structures. As these data structures
|
||||
are used heavily by the algorithms in Zoltan, <I>zz/zz_const.h</I>
|
||||
should be included in most source files of Zoltan.
|
||||
<p>
|
||||
Every Zoltan C language header file should be surrounded with an
|
||||
<B>extern "C" {}</B> declaration. The declaration must occur after
|
||||
every other <B>#include</B> statement, and before all function
|
||||
declarations.
|
||||
This declaration tells a C++ compiler not to
|
||||
mangle the names of functions declared in that header file.
|
||||
<CENTER><TABLE BORDER=2 COLS=1 WIDTH="90%" NOSAVE >
|
||||
<TR>
|
||||
<TD><A NAME="extern C"></A>
|
||||
<TT>
|
||||
#ifndef __EXAMPLE_H<br>
|
||||
#define __EXAMPLE_H<br><br>
|
||||
|
||||
#include "mpi.h"<br>
|
||||
#include "zoltan_types.h"<br>
|
||||
#include "zoltan_align.h"<br><br>
|
||||
|
||||
#ifdef __cplusplus<br>
|
||||
extern "C" {<br>
|
||||
#endif<br><br>
|
||||
|
||||
int func1(int a, int b);<br>
|
||||
double dfunc(int a, int b, int c);<br><br>
|
||||
|
||||
#ifdef __cplusplus<br>
|
||||
} /* closing bracket for extern "C" */<br>
|
||||
#endif<br><br>
|
||||
|
||||
#endif /* __EXAMPLE_H */<br>
|
||||
</TT>
|
||||
</TR>
|
||||
<CAPTION ALIGN=BOTTOM><I>Example of C language header file with <b>extern "C"</b>
|
||||
</I></CAPTION>
|
||||
</TABLE></CENTER>
|
||||
<br>
|
||||
<p>
|
||||
If an <B>#include</B> statement appears after the opening of the
|
||||
<B>extern "C" {}</B> declaration, the included file may cause
|
||||
<B>mpi.h</B> or some other system header file to be processed. When
|
||||
compiling with a C++ compiler, this usually leads to compile errors
|
||||
because the function names in some of those headers are supposed to be
|
||||
mangled.
|
||||
<p>
|
||||
It should
|
||||
not be necessary to use the declaration in all header files, but
|
||||
rather only in header files that are used in C++ applications. But
|
||||
experience has taught us that you never know what header files will
|
||||
end up being included, and that one that is not included now, may be
|
||||
included in the future when someone adds an <B>#include</b> statement
|
||||
to a file. To save someone the effort later on of figuring out
|
||||
why their C++ compilation is failing, please include the
|
||||
<B>extern "C" {}</B> declaration in every header file, even if at
|
||||
this point in time you do not believe it will ever be included in
|
||||
the compilation of a C++ application.
|
||||
<BR>
|
||||
<H3>
|
||||
<A NAME="global"></A>Global variables</H3>
|
||||
The use of global variables is highly discouraged in Zoltan.
|
||||
In limited cases, static global variables can be tolerated within
|
||||
a source file of an algorithm. However, developers should keep in mind
|
||||
that several Zoltan structures may be used by an application, with
|
||||
each structure using the same algorithm. Thus, global variables set by one
|
||||
invocation of a routine may be reset by other invocations, causing errors
|
||||
in the algorithms. Global variable names may also conflict with variables
|
||||
used elsewhere in the library or application, causing unintended side-effects
|
||||
and complicating debugging. For greatest robustness, developers are asked
|
||||
NOT to use global variables in their algorithms. See <A HREF="dev_add_struct.html">Data
|
||||
Structures</A> for ideas on avoiding the use of global variables.
|
||||
<BR>
|
||||
<H3>
|
||||
<A NAME="functions"></A>Function Names</H3>
|
||||
In order to avoid name conflicts with applications and other libraries,
|
||||
all non-static functions should be prepended with <B>Zoltan_</B><I>.</I>
|
||||
Moreover, function names should, in general, include their module names; e.g.,
|
||||
<b>Zoltan_HSFC_Box_Assign</b> is part of the HSFC module of Zoltan.
|
||||
As a general
|
||||
rule, each new word in a function name should be capitalized (for example,
|
||||
<b>Zoltan_Invert_Lists</b>).
|
||||
Static Zoltan functions do not have to follow these rules.
|
||||
|
||||
<H3>
|
||||
<A NAME="par_comm"></A>Parallel Communication</H3>
|
||||
All communication in the Zoltan library should be performed through MPI
|
||||
communication routines. The MPI interface was chosen to enable portability
|
||||
to many different platforms. It will be especially important as the code
|
||||
is extended to heterogeneous computing systems.
|
||||
|
||||
<P>Some useful communication utilities are provided within the library
|
||||
to perform unstructured communication and synchronization. See <A HREF="../ug_html/ug_util_comm.html">Unstructured
|
||||
Communication Utilities</A> and <A HREF="dev_services_parallel.html">Parallel
|
||||
Computing</A>.
|
||||
<BR>
|
||||
<H3>
|
||||
<A NAME="memory1"></A>Memory Management</H3>
|
||||
It is strongly suggested that all memory allocation in the library is handled
|
||||
using the functions supplied in <I>Utilities/Memory</I>. Use of these functions
|
||||
will make debugging and maintenance of the library much easier as the library
|
||||
gets larger. See <A HREF="../ug_html/ug_util_mem.html">Memory Management Utilities</A> for
|
||||
more information on these utilities.<p>
|
||||
|
||||
For memory that is returned by Zoltan to an application, however, special
|
||||
memory allocation functions must be used to maintain compatibility with
|
||||
both C and Fortran90 applications. See <a href="dev_add_memory.html">
|
||||
Memory Management in Zoltan Algorithms</a> for more
|
||||
information. <p>
|
||||
|
||||
One of the few data types specified for use in the Zoltan interface is the
|
||||
<a href="../ug_html/ug_usage.html#Data Types for Object IDs"><b>ZOLTAN_ID_PTR</b></a>
|
||||
type used for global and local object identifiers (IDs). Macros simplifying
|
||||
and providing error checking for
|
||||
<a href="dev_lb_types.html">ID allocation and manipulation</a>
|
||||
are provided.
|
||||
|
||||
<BR>
|
||||
<H3>
|
||||
<A NAME="return"></A>Errors, Warnings, and Return Codes</H3>
|
||||
If an error or warning occurs in the Zoltan library,
|
||||
a message should be printed to
|
||||
<i>stderr</i> (using one of the <a href="#ZOLTAN_PRINT">printing macros</a> below),
|
||||
all memory allocated in the current function should be freed, and
|
||||
an <a href="../ug_html/ug_interface.html#Error Codes">error code</a> should be returned.
|
||||
The Zoltan library should never "exit";
|
||||
control should always be returned to the application with an error code.
|
||||
The <a href="../ug_html/ug_interface.html#Error Codes">error codes</a> are defined in <i>include/zoltan_types.h</i>.
|
||||
<p>
|
||||
Currently, this philosophy is not strictly followed in all portions
|
||||
of Zoltan.
|
||||
Efforts are underway to bring existing code up-to-date, and to follow this
|
||||
rule in all future development.
|
||||
<BR>
|
||||
<hr><a NAME="ZOLTAN_PRINT"></a>
|
||||
<b>ZOLTAN_PRINT_ERROR</b>(int <i>processor_number</i>, char *<i>function_name</i>, char *<i>message</i>)<br>
|
||||
<b>ZOLTAN_PRINT_WARN</b>(int <i>processor_number</i>, char *<i>function_name</i>, char *<i>message</i>)<br>
|
||||
<hr>
|
||||
Macros for printing error and warning messages in Zoltan. The macros are
|
||||
defined in <i>Utilities/shared/zoltan_util.h</i>.
|
||||
<TABLE WIDTH="100%" NOSAVE>
|
||||
<TR>
|
||||
<TD VALIGN=TOP WIDTH="20%"><b>Arguments:</b></TD>
|
||||
<TD WIDTH="80%" ALIGN=LEFT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN=TOP> <i>processor_number</i></TD>
|
||||
<TD ALIGN=LEFT> The processor's rank in the Zoltan communicator. The value -1 can be used if the rank is not available.</td>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN=TOP> <i>function_name</i></TD>
|
||||
<TD ALIGN=LEFT> A string containing the name of the function in which the error or warning occurred. </td>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN=TOP> <i>message</i></TD>
|
||||
<TD ALIGN=LEFT> A string containing the error or warning message.</td>
|
||||
</TR>
|
||||
</table>
|
||||
<hr>
|
||||
<p>
|
||||
|
||||
<HR WIDTH="100%">
|
||||
<BR>[<A HREF="dev.html">Table of Contents</A> | <A HREF="dev_intro_sqe.html">Next:
|
||||
Zoltan Quality Assurance</A> | <A HREF="dev_intro_philosophy.html">Previous:
|
||||
Philosophy</A> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</BODY>
|
||||
</HTML>
|
91
thirdParty/Zoltan/docs/dev_html/dev_intro_philosophy.html
vendored
Normal file
@ -0,0 +1,91 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="karen devine, kddevin@sandia.gov">
|
||||
<title> Zoltan Developer's Guide: Philosophy</title>
|
||||
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="dev.html">Zoltan Developer's Guide</a>
|
||||
| <a href="dev_intro_coding.html">Next</a> | <a href="dev_intro.html">Previous</a></i></b></div>
|
||||
|
||||
<h2>
|
||||
<a NAME="philosophy"></a>Philosophy of Zoltan</h2>
|
||||
The Zoltan library is designed to be a general-purpose tool-kit
|
||||
providing a variety of parallel data management services to a wide range
|
||||
of scientific applications (see the <a href="../ug_html/ug.html">Zoltan
|
||||
User's Guide</a>). To enable general use of the library, the library does
|
||||
not directly access the data structures of an application. Instead, the
|
||||
library obtains information it needs through
|
||||
an object-oriented interface between Zoltan and the
|
||||
application.
|
||||
This interface uses call-back query functions to gather information. An
|
||||
application developer must write and register these query functions before
|
||||
using Zoltan. The intent, however, is that the number
|
||||
and complexity of these query functions are low, allowing applications
|
||||
to easily interface with the library. In addition, new algorithm
|
||||
development would use the same query functions as previous algorithms,
|
||||
enabling applications to use new algorithms without changes to the query
|
||||
functions.
|
||||
|
||||
<p>In developing new algorithms for Zoltan, the developer
|
||||
must write the code that calls the query functions to build the needed
|
||||
data structures for the algorithm. However, the application need not change
|
||||
its query functions. Thus, new algorithms can be added to the library and
|
||||
used by an application with minimal effort on the part of the application
|
||||
developer.
|
||||
<p>
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a> | <a href="dev_intro_coding.html">Next:
|
||||
Coding Principles</a> | <a href="dev_intro.html">Previous:
|
||||
Introduction</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
389
thirdParty/Zoltan/docs/dev_html/dev_intro_sqe.html
vendored
Normal file
@ -0,0 +1,389 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
|
||||
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; U; SunOS 4.1.3_U1 sun4m) [Netscape]">
|
||||
<META NAME="sandia.approved" CONTENT="SAND99-1376">
|
||||
<META NAME="author" CONTENT="karen devine, kddevin@sandia.gov">
|
||||
<TITLE>Zoltan Developer's Guide: Quality Program</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> |
|
||||
<a href="dev_dist.html">Next</a> | <a href="dev_intro_coding.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<H2>
|
||||
<A NAME="SQE"></A>Zoltan Quality Assurance</H2>
|
||||
This document describes the Software Quality Assurance (SQA)
|
||||
policies and procedures used in the Zoltan project. Zoltan developers
|
||||
at Sandia or under contract to Sandia are required to follow these
|
||||
software development policies.
|
||||
|
||||
|
||||
|
||||
<blockquote>
|
||||
<a href="#Quality_Policy">Quality Policy</a>
|
||||
<br><a href="#Quality_Definition">Quality Definition</a>
|
||||
<br><A href="#Defect_Classification">Classification of Defects</a>
|
||||
<br><A href="#Release_Policy">Release Policy</a>
|
||||
<br><A href="#Quality_Tools">Software Quality Tools</a>
|
||||
<br><A href="#Quality_Processes">Software Quality Processes</a>
|
||||
<br><A href="#Zoltan_ASC">Zoltan´s implementation of the ASC Software Quality Engineering Practices</a>
|
||||
</blockquote>
|
||||
|
||||
|
||||
|
||||
<H3>
|
||||
<A NAME="Quality_Policy"></A>Quality Policy
|
||||
</H3>
|
||||
<p>
|
||||
Sandia´s ASC Quality Management Council (AQMC) developed and manages the
|
||||
Quality Assurance Program (QAP) for Sandia´s ASC program. The AQMC chartered
|
||||
the development of the <I>Sandia National Laboratories Advanced Simulation and Computing
|
||||
(ASC) Software Quality Plan, Part 1: ASC Software Quality Engineering Practices, Version 2.0</I>
|
||||
document (SAND 2006-5998) as the practical SQA guidance for projects like Zoltan.
|
||||
A companion document, <I>Sandia National Laboratories Advanced Simulation and Computing
|
||||
(ASC) Software Quality Plan, Part 2: Mappings for the ASC Software Quality Practices</I> (SAND 2006-5997),
|
||||
shows how these practices satisfy corporate policies including CPR001.3.6, Corporate
|
||||
Software Engineering Excellence, and DOE/NNSA orders 414.1C and QC-1 rev 10.
|
||||
<p>
|
||||
The Zoltan project is committed to a program of quality improvement in compliance
|
||||
with the <I>ASC Software Quality Engineering Practices</I> document. The Zoltan Team Leader is the owner
|
||||
of the Zoltan quality system. Zoltan developers at Sandia or under contract to Sandia
|
||||
are required to follow these software development practices. The Zoltan team shall
|
||||
participate in all reporting processes, audits, and assessments as directed by the AQMC.
|
||||
|
||||
<H3><A NAME="Quality_Definition"></A>Quality Definition</H3>
|
||||
<p>
|
||||
QC-1 rev 10 defines quality as "the degree to which customer requirements are met."
|
||||
<p>
|
||||
The Zoltan project accepts the following definition of quality:
|
||||
"the totality of characteristics of a product or service that bear
|
||||
on its ability to satisfy stated or implied needs." This is Juran´s
|
||||
"fitness for use" definition of quality (ANSI/ASQC A8402-1994.)
|
||||
This superior definition of quality fully satisfies the QC-1 rev 10 definition.
|
||||
This definition is also more useful in a research environment where the requirements are
|
||||
derived from a research proposal rather than directly from customers and end users.
|
||||
|
||||
<H3><A NAME="Defect_Classification"></A>Classification of Defects</H3>
|
||||
The Zoltan project accepts the following system of classification of
|
||||
defects:
|
||||
<BLOCKQUOTE>
|
||||
<b>Critical:</b> A defect that could lead to loss of life,
|
||||
significant environmental damage, or substantial financial loss.
|
||||
<br><b>Major:</b> A non critical defect that significantly
|
||||
impacts Zoltan's fitness for use.
|
||||
<br><b>Minor:</b> A (non critical, non major) defect that
|
||||
reasonably impacts Zoltan's fitness for use.
|
||||
<br><b>Incidental:</b> Any other defect which does not
|
||||
reasonably reduce Zoltan's fitness for use.
|
||||
</BLOCKQUOTE>
|
||||
<p>
|
||||
|
||||
<H3><A NAME="Release_Policy"></A>Release Policy</H3>
|
||||
<p>
|
||||
Only the Zoltan team leader may authorize (certify) a release.
|
||||
The Zoltan team leader shall not release software with
|
||||
any known critical or major defects.
|
||||
User registration shall allow the Zoltan team to
|
||||
notify all Sandia and ASC users and to recall their
|
||||
defective software if a critical or major defect
|
||||
is discovered after release.
|
||||
The Zoltan team leader may determine that it is
|
||||
acceptable to release software with known minor or incidental defects.
|
||||
<p>
|
||||
|
||||
<H3><A NAME="Quality_Tools"></A>Software Quality Tools</H3>
|
||||
<p>
|
||||
Because of the small scale of the Zoltan Project, only a few, simple tools
|
||||
are required for use by Zoltan developers:
|
||||
<BLOCKQUOTE>
|
||||
<b>CVS:</b> maintains code, documentation, meeting
|
||||
notes, emails, and QA program artifacts;
|
||||
<br><b>Purify, PureCoverage, Quantify (Rational), Valgrind, gdb:</b>
|
||||
for dynamic code testing, coverage measurements, and performance analysis;
|
||||
<br><b>Bugzilla:</b> tracks bugs, requests for changes,
|
||||
and enhancements;
|
||||
<br><b>Mailman:</b> creates email lists to automatically
|
||||
notify users by area(s) of interest;
|
||||
<br><b>Makefiles:</b> ensures proper compilation and linking
|
||||
for all supported platforms; and
|
||||
<br><b>Zoltan Test Script:</b> runs
|
||||
integration, regression, release and acceptance testing.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H3><A NAME="Quality_Processes"></A>Software Quality Processes</H3>
|
||||
<p>
|
||||
<b>Bug Reporting, Issue Tracking, Enhancement Requests:</b> All of these
|
||||
items are now directly entered into Bugzilla by developers and users.
|
||||
This "process" is built into the tool. Detailed instructions
|
||||
for using Bugzilla are found on the Zoltan web page. Bugzilla also
|
||||
provides query and report features for tracking the status of entered items;.
|
||||
<p>
|
||||
A process is defined as a sequence of steps performed for a given
|
||||
purpose (IEEE Std. 610.12.) Zoltan´s other processes are defined as
|
||||
checklists because checklists are one of the seven fundamental quality tools.
|
||||
These checklists are also the primary artifact created when following a process.
|
||||
Currently the following processes are defined:
|
||||
|
||||
<BLOCKQUOTE>
|
||||
<b>Development:</b> (not currently used) defines the software development
|
||||
process including
|
||||
requirements, design, implementation, testing, reviews, and approvals;
|
||||
<br><b>Release:</b> defines the release process including testing requirements
|
||||
and creation of the release product;
|
||||
<br><b>Request:</b> defines the process of
|
||||
capturing user requests for new features;
|
||||
<br> Note: this process is now obsolete. Request processes in progress
|
||||
may continue until complete but new requests should use Bugzilla;
|
||||
<br><b>Requirement:</b> the process of capturing user comments that
|
||||
may become requirements after review and approval;
|
||||
<br> Note: this process is now obsolete. Requirement processes in progress
|
||||
may continue until complete but new requirements should use Bugzilla;
|
||||
<br><b>Review:</b> defines the materials reviewed prior to acceptance
|
||||
for Zoltan release;
|
||||
<br> Note: Developers are encouraged to use Bugzilla to enter the
|
||||
specific review process rather than use the Review checklist. At this time this
|
||||
is an trial effort and either method may be used.
|
||||
<br><b>Third Party Software:</b>defines the steps required to obtain, manage,
|
||||
use, and test for software created outside of Zoltan and the ASC program; and
|
||||
<br><b>Training:</b> defines the material a new developer must read, required
|
||||
skills to demonstrate and computer accounts that must be obtained.
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<p>
|
||||
Zoltan's software quality process checklists define how work may be performed,
|
||||
including process ownership, authorization to perform, activities and their
|
||||
sequence (when sequencing is required), process instructions, metrics, and
|
||||
identification of who performed each activity.
|
||||
<p>
|
||||
The only allowed source for process checklists is Zoltan's CVS repository
|
||||
in the SQA_templates directory (under Zoltan_Internal.) A Zoltan developer
|
||||
initiates a process by obtaining the current CVS version of the process, renaming
|
||||
it, and committing the renamed process checklist back into CVS in an appropriate
|
||||
directory on the same day. The process may continue under this committed version
|
||||
even if its original process is later superseded unless specifically requested by
|
||||
the Team Leader. After one or more activities are completed, the process
|
||||
checklist is updated to reflect the results and committed back to CVS (with
|
||||
appropriate comments.) A process is completed when all required activities
|
||||
are completed including reviews and approvals (as necessary), and committed to CVS.
|
||||
The final CVS comment should indicate that the process is complete.
|
||||
<p>
|
||||
<H3><A NAME="Zoltan_ASC"></A>
|
||||
Zoltan´s implementation of the <I>ASC Software Quality Engineering Practices</I></H3>
|
||||
<p>
|
||||
The following is brief description <b> for Zoltan developers</b> about the Zoltan
|
||||
project´s implementation of the <I>ASC Software Quality Engineering Practices</I> (SAND 2006-5998):
|
||||
<p>
|
||||
<b>PR1. Document and maintain a strategic plan.</b><br>
|
||||
The Zoltan web page has a direct hyperlink to the Zoltan Project Description
|
||||
defining its mission and philosophy. The Zoltan project has a strong association
|
||||
with the Trilinos project to share in the development of common software
|
||||
engineering practices and sharing of appropriate tools and experience.
|
||||
<p>
|
||||
<b>PR2. Perform a risk-based assessment, determine level of formality
|
||||
and applicable practices, and obtain approvals.</b><br>
|
||||
The Zoltan project has an approved level of formality (medium) for its
|
||||
deliverable software. Its biggest technical risk results from providing
|
||||
parallel solutions to NP hard partitioning problems. Technical risks are
|
||||
mitigated by collaborations within Sandia and internationally. The most
|
||||
significant non-technical risk is the conflicting priorities of Zoltan
|
||||
developers working on many other projects simultaneously.
|
||||
<p>
|
||||
<b>PR3. Document lifecycle processes and their interdependencies, and
|
||||
obtain approvals.</b><br>
|
||||
The Zoltan project follows the <I>Trilinos Software Lifecycle Model</I>
|
||||
(SAND 2006-6929). It also follows the ANSI/ASQ Z1.13-1999 standard
|
||||
<I>Quality Guidelines for Research</I> which is compatible with the research
|
||||
phase in the Trilinos Lifecycle model.
|
||||
<p>
|
||||
<b>PR4. Define, collect, and monitor appropriate process metrics. </b><br>
|
||||
The Zoltan project is committed to comply fully with the new and evolving
|
||||
AQMC requirements for collecting and reporting "defect" metrics.
|
||||
Other metrics determined by Zoltan´s continual process improvement process
|
||||
(<b>PR 5</B>) will be implemented.
|
||||
<p>
|
||||
<b>PR5. Periodically evaluate quality problems and implement process
|
||||
improvements.</b><br>
|
||||
The Zoltan project has built the Deming/Shewhart process improvement
|
||||
cycle PDCA (Plan, Do, Check, Act) into all of its process checklists. This is
|
||||
the most effective process improvement technique known. It is recommended
|
||||
by ISO 9001:2000.
|
||||
<p>
|
||||
<b>PR6. Identify stakeholders and other requirements sources.</b><br>
|
||||
The Zoltan project´s primary stakeholders are the ASC applications using
|
||||
Zoltan including SIERRA, ACME, ALEGRA/NEVADA, XYCE, and Trilinos.
|
||||
<p>
|
||||
<b>PR7. Gather and manage stakeholders´ expectations and requirements.</b><br>
|
||||
The Zoltan project´s primary input from ASC applications´ expectations and
|
||||
requirements are via their communication of Zoltan´s role in meeting their
|
||||
ASC milestones. Since Zoltan is an "enabling technology," these requirements
|
||||
are broadly stated performance improvement needs. The Zoltan team actively anticipates
|
||||
and develops load balancing software for the future needs of the Sandia research community
|
||||
before they actually become formal requirements.
|
||||
<p>
|
||||
<b>PR8. Derive, negotiate, manage, and trace requirements.</b><br>
|
||||
Zoltan project requirements normally derive from its funded research proposals
|
||||
which state research goals. This is a normal procedure in a research
|
||||
environment (see ANSI/ASQ Z1.13-1999). Periodic and final reports document
|
||||
the success in meeting these research goals.
|
||||
<p>
|
||||
<b>PR9. Identify and analyze risk events.</b><br>
|
||||
All Zoltan developers should report any new or changed risks via the zoltan-dev
|
||||
email target for evaluation by the Team Lead.
|
||||
<p>
|
||||
<b>PR10. Define, monitor, and implement the risk response.</b><br>
|
||||
The Zoltan team will create a corrective action plan whenever any condition
|
||||
threatens to adversely impact the Zoltan project resources or schedule.
|
||||
<p>
|
||||
<b>PR11. Create and manage the project plan.</b><br>
|
||||
ANSI/ASQ Z1.13-1999 states that the research proposal is equivalent to a
|
||||
project plan in a research environment. The Team Leader assigns responsibilities,
|
||||
deliverables, resources, and schedules in order to manage the project.
|
||||
<p>
|
||||
<b>PR12. Track project performance versus project plan and implement
|
||||
needed (corrective) actions.</b><br>
|
||||
The Team Leader periodically tracks responsibilities, deliverables, resources,
|
||||
and schedules in order to manage the project.
|
||||
<p>
|
||||
<b>PR13. Communicate and review design.</b><br>
|
||||
The Zoltan architecture is fully documented in the Zoltan Developer´s Guide.
|
||||
New features are originally documented and reviewed in team discussions to
|
||||
the zoltan-dev email target. Prior to release, the design documentation is
|
||||
finalized in both the Zoltan Developer´s Guide and the Zoltan User´s Guide.
|
||||
<p>
|
||||
<b>PR14. Create required software and product documentation.</b><br>
|
||||
Developers will follow the Zoltan Development Process Checklist.
|
||||
<p>
|
||||
<b>PR15. Identify and track third party software products and follow
|
||||
applicable agreements.</b><br>
|
||||
Developers will follow the Zoltan Third Party Software Process Checklist.
|
||||
<p>
|
||||
<b>PR16. Identify, accept ownership, and manage the assimilation of other
|
||||
software products.</b><br>
|
||||
Not applicable since Zoltan does not "assimilate" third party software.
|
||||
<p>
|
||||
<b>PR17. Perform version control of identified software product artifacts.</b><br>
|
||||
All software and process artifact are under maintained CVS as early as reasonable
|
||||
after their creation.
|
||||
<p>
|
||||
<b>PR18. Record and track issues associated with the software product.</b><br>
|
||||
Developers will use Bugzilla to record and track issues.
|
||||
<p>
|
||||
<b>PR19. Ensure backup and disaster recovery of software product artifacts.</b><br>
|
||||
Nightly backups, periodic offsite backups, and disaster recovery are services
|
||||
provided by the CSRI computer support staff. Disaster recovery has been successfully
|
||||
performed from real problems.
|
||||
<p>
|
||||
<b>PR20. Plan and generate the release package.</b><br>
|
||||
Developers will follow the Zoltan Release Process Checklist.
|
||||
<p>
|
||||
<b>PR21. Certify that the software product (code and its related artifacts) is
|
||||
ready for release and distribution.</b><br>
|
||||
The Zoltan Team Leader will certify any version of Zoltan for release via an
|
||||
email to zoltan-dev target.
|
||||
<p>
|
||||
<b>PR22. Distribute release to customers.</b><br>
|
||||
Zoltan files are released via a download from the Zoltan web site. The Zoltan
|
||||
Team Leader will make the download available after certification. (Research
|
||||
versions of the Zoltan software are directly available to collaborators for
|
||||
development.)
|
||||
<p>
|
||||
<b>PR23. Define and implement a customer support plan.</b><br>
|
||||
(See <b>PR 6</b> for a list of ASC stakeholders.) The Zoltan team provides one-on-one
|
||||
training whenever requested and quickly responds to any user complaint.
|
||||
<p>
|
||||
<b>PR24. Implement the training identified in the customer support plan.</b><br>
|
||||
See <b>PR 23</b> above. If additional training is ever requested, the Zoltan project
|
||||
will piggy back on the annual Trilinos Users Group meeting with a training
|
||||
session on using Zoltan.
|
||||
<p>
|
||||
<b>PR25. Evaluate customer feedback to determine customer satisfaction.</b><br>
|
||||
<p>
|
||||
<p>
|
||||
<b>PR 26 Develop and maintain a software verification plan.</b><br>
|
||||
Developers are expected to create new tests for the Zoltan test suite when
|
||||
new features are added to Zoltan.
|
||||
<p>
|
||||
Currently, a new test framework based on FAST/EXACT is being implemented.
|
||||
Documentation about this test framework is under preparation. A process
|
||||
checklist will be developed around the steps required to add new tests to
|
||||
the suite and to run the suite.
|
||||
<p>
|
||||
<b>PR27. Conduct tests to demonstrate that acceptance criteria are met and to
|
||||
ensure that previously tested capabilities continue to perform as expected.</b><br>
|
||||
This practice is a subset of the Zoltan Release Process Checklist.
|
||||
<p>
|
||||
<b>PR28. Conduct independent technical reviews to evaluate adequacy with respect
|
||||
to requirements.</b><br>
|
||||
Developers will follow the Zoltan Review Process Checklist. ANSI/ASQ Z1.13-1999
|
||||
states that the peer reviewed publications and conference presentations are a normal
|
||||
form of technical review in the research environment.
|
||||
<p>
|
||||
<b>PR29. Determine project team training needed to fulfill assigned roles
|
||||
and responsibilities.</b><br>
|
||||
New developers will follow the Zoltan Training Process for new team members.
|
||||
<p>
|
||||
<b>PR30. Track training undertaken by project teams.</b><br>
|
||||
Zoltan developers are encouraged to participate in the annual Trilios Users Group
|
||||
(TUG) meeting which provides sessions for SQA/SQE training to developers.
|
||||
Attendance records are kept for this event and for any Zoltan team meetings that
|
||||
provide training. Sandia provides many other opportunities for training including
|
||||
formal courses and periodic internal software developers conferences. External
|
||||
conferences (e.g., IPDPS and SIAM) are counted as technical training.
|
||||
|
||||
<p>
|
||||
<HR WIDTH="100%">
|
||||
<BR>[<A HREF="dev.html">Table of Contents</A> | <A HREF="dev_dist.html">Next:
|
||||
Zoltan Distribution</A> | <A HREF="dev_intro_coding.html">Previous:
|
||||
Coding Principles in Zoltan</A>
|
||||
| <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
|
||||
</html>
|
78
thirdParty/Zoltan/docs/dev_html/dev_lb.html
vendored
Normal file
@ -0,0 +1,78 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; U; SunOS 4.1.3_U1 sun4m) [Netscape]">
|
||||
<META NAME="sandia.approved" CONTENT="SAND99-1376">
|
||||
<META NAME="author" CONTENT="karen devine, kddevin@sandia.gov">
|
||||
|
||||
<TITLE> Zoltan Developer's Guide: Load-Balancing</TITLE>
|
||||
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_lb_interface.html">Next</a> | <a href="dev_dist_compile.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<H2>
|
||||
<A NAME="interface"></A>Zoltan Interface and Data Structures</H2>
|
||||
The interface functions, data types and data structures
|
||||
for the Zoltan library are described in the following sections:
|
||||
<BLOCKQUOTE><A HREF="dev_lb_interface.html">Interface Functions</A>
|
||||
(files defining the interface)
|
||||
<BR><A HREF="dev_lb_types.html">ID Data Types</A> (descriptions
|
||||
of data types used for global and local identifiers)
|
||||
<BR><A HREF="dev_lb_structs.html">Data Structures</A> (Zoltan data structures
|
||||
for storing information registered by an application)
|
||||
<BR> </BLOCKQUOTE>
|
||||
|
||||
<HR WIDTH="100%">
|
||||
<BR>[<A HREF="dev.html">Table of Contents</A> | <A HREF="dev_lb_interface.html">Next:
|
||||
Interface Functions</A> | <A HREF="dev_dist_compile.html">Previous:
|
||||
Compilation</A> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</BODY>
|
||||
</HTML>
|
104
thirdParty/Zoltan/docs/dev_html/dev_lb_interface.html
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; U; SunOS 4.1.3_U1 sun4m) [Netscape]">
|
||||
<META NAME="sandia.approved" CONTENT="SAND99-1376">
|
||||
<META NAME="author" CONTENT="karen devine, kddevin@sandia.gov">
|
||||
|
||||
<TITLE> Zoltan Developer's Guide: Load-Balancing Interface</TITLE>
|
||||
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_lb_types.html">Next</a> | <a href="dev_lb.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<H2>
|
||||
<A NAME="interface_fns"></A>Interface Functions</H2>
|
||||
The interface to the Zoltan library is defined in the file
|
||||
<I>include/zoltan.h</I>. This file should be included in application programs
|
||||
that use Zoltan. It is also included in <I>zz/zz_const.h</I>,
|
||||
which should be included by most Zoltan files to provide
|
||||
access to the Zoltan data structures described below.
|
||||
|
||||
<P>In <I>include/zoltan.h</I>, the enumerated type <B>ZOLTAN_FN_TYPE</B> defines
|
||||
the application query function types (e.g., <B><A HREF="../ug_html/ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN_TYPE</A></B>
|
||||
and <B><A HREF="../ug_html/ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN_TYPE</A></B>).
|
||||
The interface query routines (e.g., <B><A HREF="../ug_html/ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</A></B>
|
||||
and <B><A HREF="../ug_html/ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</A></B>)
|
||||
and their argument lists are defined as C type definitions (typedef). These
|
||||
type definitions are used by the application developer to implement the
|
||||
query functions needed for the application to use Zoltan.
|
||||
|
||||
<P>Prototypes for the Zoltan interface functions
|
||||
(e.g., <B><A HREF="../ug_html/ug_interface_lb.html#Zoltan_LB_Partition">Zoltan_LB_Partition</A></B>
|
||||
and <B><A HREF="../ug_html/ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</A></B>)
|
||||
are also included in <I>include/zoltan.h</I>. Interface functions are called
|
||||
by the application to register functions, select a load-balancing method,
|
||||
invoke load balancing and migrate data.
|
||||
|
||||
<P>The interface to the C++ version of the Zoltan library is in the file
|
||||
<I>include/zoltan_cpp.h</I>. This file defines the <B>Zoltan</B> class,
|
||||
representing a <B><A HREF="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</A></B>
|
||||
data structure and the functions which
|
||||
operate upon it. The conventions used to wrap C library functions as
|
||||
C++ library functions are described in the chapter
|
||||
<B><a href="dev_cpp.html">C++ Interface</a></B>.
|
||||
A C++ program that uses Zoltan includes <I>include/zoltan_cpp.h</I>
|
||||
instead of <I>include/zoltan.h</I>.
|
||||
|
||||
<P>For more detailed information on Zoltan's query and interface functions,
|
||||
please see the <A HREF="../ug_html/ug.html">Zoltan User's Guide</A>.
|
||||
|
||||
<P>
|
||||
<HR WIDTH="100%">
|
||||
<BR>[<A HREF="dev.html">Table of Contents</A> | <A HREF="dev_lb_types.html">Next:
|
||||
ID Data Types</A> | <A HREF="dev_lb.html">Previous:
|
||||
Zoltan Interface and Data Structures</A> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</BODY>
|
||||
</HTML>
|
861
thirdParty/Zoltan/docs/dev_html/dev_lb_structs.html
vendored
Normal file
@ -0,0 +1,861 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="karen devine, kddevin@sandia.gov">
|
||||
<title> Zoltan Developer's Guide: Load Balancing Data Structures</title>
|
||||
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="dev.html">Zoltan Developer's Guide</a>
|
||||
| <a href="dev_services.html">Next</a> | <a href="dev_lb_types.html">Previous</a></i></b></div>
|
||||
|
||||
<h2>
|
||||
<a NAME="interface_structs"></a>Data Structures</h2>
|
||||
The <b>Zoltan_Struct</b> data structure is the main data structure for interfacing
|
||||
between Zoltan and the application. The application
|
||||
creates an <b>Zoltan_Struct</b> data structure through a call to <b><a href="../ug_html/ug_interface_init.html#Zoltan_Create">Zoltan_Create</a></b>.
|
||||
Fields of the data structure are then set through calls from the application
|
||||
to interface routines such as <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
|
||||
and <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>.
|
||||
The fields of the <b>Zoltan_Struct</b> data structure are listed and described
|
||||
in the <a href="#Zoltan_Struct">table</a> below. See the <a href="../ug_html/ug.html">Zoltan
|
||||
User's Guide</a> for descriptions of the function types used in the <b>Zoltan_Struct</b>.
|
||||
<p>A <b>Zoltan_Struct</b> data structure <i>zz</i> is passed from the application
|
||||
to Zoltan in the call to <b><a href="../ug_html/ug_interface_lb.html#Zoltan_LB_Partition">Zoltan_LB_Partition</a></b>.
|
||||
This data structure is passed to the individual load-balancing routines.
|
||||
The <i>zz->LB.Data_Structure</i> pointer field should point to the main data
|
||||
structures of the particular load-balancing algorithm so that the data
|
||||
structures may be preserved for future calls to <b><a href="../ug_html/ug_interface_lb.html#Zoltan_LB_Partition">Zoltan_LB_Partition</a></b>
|
||||
and so that separate instances of the same load-balancing algorithm (with
|
||||
different <b>Zoltan_Struct</b> structures) can be used by the application.
|
||||
<br>
|
||||
<center><table BORDER WIDTH="90%" NOSAVE >
|
||||
<tr>
|
||||
<th><a NAME="Zoltan_Struct"></a>Fields of Zoltan_Struct</th>
|
||||
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>MPI_Comm <i>Communicator</i></td>
|
||||
|
||||
<td>The MPI communicator to be used by the Zoltan structure; set
|
||||
by
|
||||
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Create">Zoltan_Create</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>int <i>Proc</i></td>
|
||||
|
||||
<td>The rank of the processor within <i>Communicator</i>; set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Create">Zoltan_Create</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>int <i>Num_Proc</i></td>
|
||||
|
||||
<td>The number of processors in <i>Communicator</i>; set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Create">Zoltan_Create</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>int <i>Num_GID</i></td>
|
||||
|
||||
<td>The number of array entries used to represent a
|
||||
<a href="dev_lb_types.html">global ID</a>.
|
||||
Set via a call to
|
||||
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
|
||||
for <a href="../ug_html/ug_param.html#NUM_GID_ENTRIES">NUM_GID_ENTRIES</a>.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>int <i>Num_LID</i></td>
|
||||
|
||||
<td>The number of array entries used to represent a
|
||||
<a href="dev_lb_types.html">local ID</a>.
|
||||
Set via a call to
|
||||
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
|
||||
for <a href="../ug_html/ug_param.html#NUM_LID_ENTRIES">NUM_LID_ENTRIES</a>.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>int <i><a href="../ug_html/ug_param.html#Debug Levels in Zoltan">Debug_Level</a></i></td>
|
||||
|
||||
<td>A flag indicating the amount of debugging information that should be
|
||||
printed by Zoltan.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>int <i>Fortran</i></td>
|
||||
|
||||
<td>A flag indicating whether or not the structure was created by a call
|
||||
from Fortran.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>PARAM_LIST *<i> Params</i></td>
|
||||
|
||||
<td>A linked list of string pairs. The first item in each pair is the name
|
||||
of a modifiable parameter. The second string is the new value the parameter
|
||||
should adopt. These string pairs are read upon invocation of a Zoltan
|
||||
algorithm and the appropriate parameter changes are made. This design allows
|
||||
for different Zoltan structures to have different parameter settings.</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE>int <i>Deterministic</i></td>
|
||||
|
||||
<td>Flag indicating whether algorithms used should be forced to be deterministic;
|
||||
used to obtain completely reproducible results. Set via a call to
|
||||
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
|
||||
for <a href="../ug_html/ug_param.html#DETERMINISTIC">DETERMINISTIC</a>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>int <i>Obj_Weight_Dim</i></td>
|
||||
|
||||
<td>Number of weights per object.
|
||||
Set via a call to
|
||||
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
|
||||
for <a href="../ug_html/ug_param.html#OBJ_WEIGHT_DIM">OBJ_WEIGHT_DIM</a>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>int <i>Edge_Weight_Dim</i></td>
|
||||
|
||||
<td>For graph algorithms, number of weights per edge.
|
||||
Set via a call to
|
||||
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
|
||||
for <a href="../ug_html/ug_param.html#EDGE_WEIGHT_DIM">EDGE_WEIGHT_DIM</a>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>int <i>Timer</i></td>
|
||||
|
||||
<td> Timer type that is currently active.
|
||||
Set via a call to
|
||||
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
|
||||
for <a href="../ug_html/ug_param.html#TIMER">TIMER</a>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_NUM_EDGES">ZOLTAN_NUM_EDGES_FN</a>
|
||||
*<i> Get_Num_Edges</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that returns the number
|
||||
of edges associated with a given object. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Edges_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Get_Num_Edges_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Get_Num_Edges</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Edges_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_EDGE_LIST_FN">ZOLTAN_EDGE_LIST_FN</a>
|
||||
*<i> Get_Edge_List</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that returns a given
|
||||
object's neighbors along its edges. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Edge_List_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Get_Edge_List_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Get_Edge_List</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Edge_List_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_NUM_GEOM_FN">ZOLTAN_NUM_GEOM_FN</a>
|
||||
*<i> Get_Num_Geom</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that returns the number
|
||||
of geometry values needed to describe the positions of objects. Set in
|
||||
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Geom_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Get_Num_Geom_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Get_Num_Geom</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Geom_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_GEOM_FN">ZOLTAN_GEOM_FN</a>
|
||||
*<i> Get_Geom</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that returns a given
|
||||
object's geometry information (e.g., coordinates). Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Geom_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Get_Geom_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Get_Geom</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Geom_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</a>
|
||||
*<i> Get_Num_Obj</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that returns the number
|
||||
of objects assigned to the processor before load balancing. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Obj_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Get_Num_Obj_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Get_Num_Obj</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Obj_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</a>
|
||||
*<i> Get_Obj_List</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that returns arrays
|
||||
of objects assigned to the processor before load balancing. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Obj_List_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Get_Obj_List_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Get_Obj_List</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Obj_List_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_FIRST_OBJ_FN">ZOLTAN_FIRST_OBJ_FN</a>
|
||||
*<i> Get_First_Obj</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that returns the first
|
||||
object assigned to the processor before load balancing. Used with <i>Get_Next_Obj</i>
|
||||
as an iterator over all objects. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_First_Obj_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Get_First_Obj_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Get_First_Obj</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_First_Obj_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_NEXT_OBJ_FN">ZOLTAN_NEXT_OBJ_FN</a>
|
||||
*<i> Get_Next_Obj</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that, given an object
|
||||
assigned to the processor, returns the next object assigned to the processor
|
||||
before load balancing. Used with <i>Get_First_Obj</i> as an iterator over
|
||||
all objects. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Next_Obj_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Get_Next_Obj_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Get_Next_Obj</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Next_Obj_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_NUM_BORDER_OBJ_FN">ZOLTAN_NUM_BORDER_OBJ_FN</a>
|
||||
*<i> Get_Num_Border_Obj</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that returns the number
|
||||
of objects sharing a subdomain border with a given processor. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Border_Obj_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Get_Num_Border_Obj_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Get_Num_Border_Obj</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Border_Obj_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_BORDER_OBJ_LIST_FN">ZOLTAN_BORDER_OBJ_LIST_FN</a>
|
||||
*<i> Get_Border_Obj_List</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that returns arrays
|
||||
of objects that share a subdomain border with a given processor. Set in
|
||||
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Border_Obj_List_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Get_Border_Obj_List_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Get_Border_Obj_List</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Border_Obj_List_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_FIRST_BORDER_OBJ_FN">ZOLTAN_FIRST_BORDER_OBJ_FN</a>
|
||||
*<i> Get_First_Border_Obj</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that returns the first
|
||||
object sharing a subdomain border with a given processor. Used with <i>Get_Next_Border_Obj</i>
|
||||
as an iterator over objects along borders. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_First_Border_Obj_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Get_First_Border_Obj_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Get_First_Border_Obj</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_First_Border_Obj_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_NEXT_BORDER_OBJ_FN">ZOLTAN_NEXT_BORDER_OBJ_FN</a>
|
||||
*<i> Get_Next_Border_Obj</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that, given an object,
|
||||
returns the next object sharing a subdomain border with a given processor.
|
||||
Used with <i>Get_First_Border_Obj</i> as an iterator over objects along
|
||||
borders. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Next_Border_Obj_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Get_Next_Border_Obj_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Get_Next_Border_Obj</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Next_Border_Obj_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_NUM_COARSE_OBJ_FN">ZOLTAN_NUM_COARSE_OBJ_FN</a>
|
||||
*<i> Get_Num_Coarse_Obj</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that returns the number
|
||||
of objects in the initial coarse grid. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Coarse_Obj_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Get_Num_Coarse_Obj_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Get_Num_Coarse_Obj</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Coarse_Obj_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_COARSE_OBJ_LIST_FN">ZOLTAN_COARSE_OBJ_LIST_FN</a>
|
||||
*<i> Get_Coarse_Obj_List</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that returns arrays
|
||||
of objects in the initial coarse grid. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Coarse_Obj_List_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Get_Coarse_Obj_List_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Get_Coarse_Obj_List</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Coarse_Obj_List_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_FIRST_COARSE_OBJ_FN">ZOLTAN_FIRST_COARSE_OBJ_FN</a>
|
||||
*<i> Get_First_Coarse_Obj</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that returns the first
|
||||
object of the initial coarse grid. Used with <i>Get_Next_Coarse_Obj</i>
|
||||
as an iterator over all objects in the coarse grid. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_First_Coarse_Obj_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Get_First_Coarse_Obj_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Get_First_Coarse_Obj</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_First_Coarse_Obj_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_NEXT_COARSE_OBJ_FN">ZOLTAN_NEXT_COARSE_OBJ_FN</a>
|
||||
*<i> Get_Next_Coarse_Obj</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that, given an object
|
||||
in the initial coarse grid, returns the next object in the coarse grid.
|
||||
Used with <i>Get_First_Coarse_Obj</i> as an iterator over all objects in
|
||||
the coarse grid. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Next_Coarse_Obj_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Get_Next_Coarse_Obj_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Get_Next_Coarse_Obj</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Next_Coarse_Obj_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_NUM_CHILD_FN">ZOLTAN_NUM_CHILD_FN</a>
|
||||
*<i> Get_Num_Child</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that returns the number
|
||||
of refinement children of an object. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Child_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Get_Num_Child_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Get_Num_Child</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Child_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_CHILD_LIST_FN">ZOLTAN_CHILD_LIST_FN</a>
|
||||
*<i> Get_Child_List</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that returns arrays
|
||||
of objects that are refinement children of a given object. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Child_List_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Get_Child_List_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Get_Child_List</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Child_List_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_CHILD_WEIGHT_FN">ZOLTAN_CHILD_WEIGHT_FN</a>
|
||||
*<i> Get_Child_Weight</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that returns the weight
|
||||
of an object. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Child_Weight_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Get_Child_Weight_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Get_Child_Weight</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Child_Weight_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_mig.html#ZOLTAN_OBJ_SIZE_FN">ZOLTAN_OBJ_SIZE_FN</a>
|
||||
*<i> Get_Obj_Size</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that returns the size
|
||||
(in bytes) of data objects to be migrated. Called by <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>.
|
||||
Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Obj_Size_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Get_Obj_Size_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Get_Obj_Size</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Obj_Size_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_mig.html#ZOLTAN_PACK_OBJ_FN">ZOLTAN_PACK_OBJ_FN</a>
|
||||
*<i> Pack_Obj</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that packs all data
|
||||
for a given object into a communication buffer provided by the migration
|
||||
tools in preparation for data-migration communication. Called by <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>
|
||||
for each object to be exported. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Pack_Obj_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Pack_Obj_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Pack_Obj</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Pack_Obj_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_mig.html#ZOLTAN_UNPACK_OBJ_FN">ZOLTAN_UNPACK_OBJ_FN</a>
|
||||
*<i> Unpack_Obj</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that unpacks all data
|
||||
for a given object from a communication buffer after the communication
|
||||
for data migration is completed. Called by <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>
|
||||
for each imported object. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Unpack_Obj_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Unpack_Obj_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Unpack_Obj</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Unpack_Obj_Fn</a></b>.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td VALIGN=TOP>ZOLTAN_LB <i>LB</i></td>
|
||||
|
||||
<td>A structure with data used by the load-balancing tools. See the <a href="#LB_Fields">table</a>
|
||||
below.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>ZOLTAN_MIGRATE <i>Migrate</i></td>
|
||||
|
||||
<td>A structure with data used by the migration tools. See the <a href="#Migrate_Fields">table</a>
|
||||
below.</td>
|
||||
</tr>
|
||||
|
||||
<caption ALIGN=BOTTOM><i>Fields of the </i><b>Zoltan_Struct</b><i> data structure.</i></caption>
|
||||
</table></center>
|
||||
|
||||
<p>Each <b>Zoltan_Struct</b> data structure has a <b>ZOLTAN_LB</b> sub-structure.
|
||||
The <b>ZOLTAN_LB</b> structure contains data used by the load-balancing tools,
|
||||
including pointers to specific load-balancing methods and load-balancing data
|
||||
structures.
|
||||
The fields of the <b>ZOLTAN_LB</b> structure are listed and described
|
||||
in in the following <a href="#LB_Fields">table</a>.
|
||||
<br>
|
||||
<center><table BORDER WIDTH="90%" NOSAVE >
|
||||
<tr>
|
||||
<th><a NAME="LB_Fields"></a>Fields of ZOLTAN_LB</th>
|
||||
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void *<i> Data_Structure</i></td>
|
||||
|
||||
<td>The <a href="dev_add_struct.html">data structure</a> used by the selected load-balancing algorithm; this
|
||||
pointer is cast by the algorithm to the appropriate data type.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>double <i>Imbalance_Tol</i></td>
|
||||
|
||||
<td>The degree of load balance which is considered acceptable.
|
||||
Set via a call to
|
||||
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
|
||||
for <a href="../ug_html/ug_alg.html#IMBALANCE_TOL">IMBALANCE_TOL</a>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>int <i>Num_Global_Parts</i></td>
|
||||
<td>
|
||||
The total number of parts to be generated.
|
||||
Set via a call to
|
||||
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
|
||||
for <a href="../ug_html/ug_alg.html#NUM_GLOBAL_PARTS">NUM_GLOBAL_PARTS</a> or through
|
||||
summation of
|
||||
<a href="../ug_html/ug_alg.html#NUM_LOCAL_PARTS">NUM_LOCAL_PARTS</a>
|
||||
parameters.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>int <i>Num_Local_Parts</i></td>
|
||||
<td>
|
||||
The number of parts to be generated on this processor.
|
||||
Set via a call to
|
||||
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
|
||||
for <a href="../ug_html/ug_alg.html#NUM_LOCAL_PARTS">NUM_LOCAL_PARTS</a> or (roughly) through
|
||||
division of the
|
||||
<a href="../ug_html/ug_alg.html#NUM_GLOBAL_PARTS">NUM_GLOBAL_PARTS</a>
|
||||
parameter by the number of processors.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>int <i>Return_Lists</i></td>
|
||||
|
||||
<td>A flag indicating whether the application wants import and/or export
|
||||
lists returned by <a href="../ug_html/ug_interface_lb.html#Zoltan_LB_Partition"><b>Zoltan_LB_Partition</b></a>.
|
||||
Set via a call to
|
||||
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
|
||||
for <a href="../ug_html/ug_alg.html#RETURN_LISTS">RETURN_LISTS</a>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>ZOLTAN_LB_METHOD <i>Method</i></td>
|
||||
|
||||
<td>An enumerated type designating which load-balancing algorithm should
|
||||
be used with this Zoltan structure;
|
||||
set via a call to
|
||||
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
|
||||
for <a href="../ug_html/ug_alg.html#LB_METHOD">LB_METHOD</a>.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>LB_FN *<i> LB_Fn</i></td>
|
||||
|
||||
<td>A pointer to the load-balancing function specified by <i>Method</i>.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>ZOLTAN_LB_FREE_DATA_FN <i>*Free_Structure</i></td>
|
||||
<td> Pointer to a function that frees the Data_Structure memory.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>ZOLTAN_LB_POINT_ASSIGN_FN <i>*Point_Assign</i></td>
|
||||
<td> Pointer to the function that performs
|
||||
<a href="../ug_html/ug_interface_augment.html#Zoltan_LB_Point_Assign">Zoltan_LB_Point_Assign</a> for the particular load-balancing method.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<td VALIGN=TOP>ZOLTAN_LB_BOX_ASSIGN_FN <i>*Box_Assign</i></td>
|
||||
<td> Pointer to the function that performs
|
||||
<a href="../ug_html/ug_interface_augment.html#Zoltan_LB_Box_Assign">Zoltan_LB_Box_Assign</a> for the particular load-balancing method.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<caption ALIGN=BOTTOM><i>Fields of the </i><b>ZOLTAN_LB</b><i> data structure.</i></caption>
|
||||
</table></center>
|
||||
|
||||
|
||||
<p>Each <b>Zoltan_Struct</b> data structure has a <b>ZOLTAN_MIGRATE</b> sub-structure.
|
||||
The <b>ZOLTAN_MIGRATE</b> structure contains data used by the migration tools,
|
||||
including pointers to pre- and post-processing routines. These pointers
|
||||
are set through the interface routine <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
and are used in <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>.
|
||||
The fields of the <b>ZOLTAN_MIGRATE</b> structure are listed and described
|
||||
in in the following <a href="#Migrate_Fields">table</a>.
|
||||
<br>
|
||||
<center><table BORDER WIDTH="90%" NOSAVE >
|
||||
<tr>
|
||||
<th><a NAME="Migrate_Fields"></a>Fields of ZOLTAN_MIGRATE</th>
|
||||
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>int <i>Auto_Migrate</i></td>
|
||||
|
||||
<td>A flag indicating whether Zoltan should perform
|
||||
auto-migration for the application. If true, Zoltan
|
||||
calls <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>
|
||||
to move objects to their new processors; if false, data migration is left
|
||||
to the user. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
|
||||
for <a href="../ug_html/ug_alg.html#AUTO_MIGRATE">AUTO_MIGRATE</a>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_mig.html#ZOLTAN_PRE_MIGRATE_PP_FN">ZOLTAN_PRE_MIGRATE_PP_FN</a>
|
||||
*<i> Pre_Migrate_PP</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that performs pre-processing
|
||||
for data migration. The function is called by <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>
|
||||
before data migration is performed. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Pre_Migrate_PP_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Pre_Migrate_PP_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Pre_Migrate_PP</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Pre_Migrate_PP_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_mig.html#ZOLTAN_MID_MIGRATE_PP_FN">ZOLTAN_MID_MIGRATE_PP_FN</a>
|
||||
*<i> Mid_Migrate_PP</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that performs processing
|
||||
between the packing and unpacking operations in <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>.
|
||||
Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Mid_Migrate_PP_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Mid_Migrate_PP_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Mid_Migrate_PP</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Mid_Migrate_PP_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr NOSAVE>
|
||||
<td VALIGN=TOP NOSAVE><a href="../ug_html/ug_query_mig.html#ZOLTAN_POST_MIGRATE_PP_FN">ZOLTAN_POST_MIGRATE_PP_FN</a>
|
||||
*<i>Post_Migrate_PP</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that performs post-processing
|
||||
for data migration. The function is called by <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>
|
||||
after data migration is performed. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Post_Migrate_PP_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr NOSAVE>
|
||||
<td VALIGN=TOP NOSAVE>void *<i>Post_Migrate_PP_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Post_Migrate_PP</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Post_Migrate_PP_Fn</a></b>. </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_mig.html#ZOLTAN_PRE_MIGRATE_FN">ZOLTAN_PRE_MIGRATE_FN</a>
|
||||
*<i> Pre_Migrate</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that performs pre-processing
|
||||
for data migration. The function is called by <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Help_Migrate">Zoltan_Help_Migrate</a></b>
|
||||
before data migration is performed. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Pre_Migrate_Fn</a></b>.
|
||||
Maintained for backward compatibility with Zoltan v1.3 interface.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Pre_Migrate_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Pre_Migrate</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Pre_Migrate_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><a href="../ug_html/ug_query_mig.html#ZOLTAN_MID_MIGRATE_FN">ZOLTAN_MID_MIGRATE_FN</a>
|
||||
*<i> Mid_Migrate</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that performs processing
|
||||
between the packing and unpacking operations in <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Help_Migrate">Zoltan_Help_Migrate</a></b>.
|
||||
Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Mid_Migrate_Fn</a></b>.
|
||||
Maintained for backward compatibility with Zoltan v1.3 interface.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP>void <i>*Mid_Migrate_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Mid_Migrate</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Mid_Migrate_Fn</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr NOSAVE>
|
||||
<td VALIGN=TOP NOSAVE><a href="../ug_html/ug_query_mig.html#ZOLTAN_POST_MIGRATE_FN">ZOLTAN_POST_MIGRATE_FN</a>
|
||||
*<i>Post_Migrate</i></td>
|
||||
|
||||
<td>A pointer to an application-registered function that performs post-processing
|
||||
for data migration. The function is called by <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Help_Migrate">Zoltan_Help_Migrate</a></b>
|
||||
after data migration is performed. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Post_Migrate_Fn</a></b>.
|
||||
Maintained for backward compatibility with Zoltan v1.3 interface.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr NOSAVE>
|
||||
<td VALIGN=TOP NOSAVE>void *<i>Post_Migrate_Data</i></td>
|
||||
|
||||
<td>A pointer to data provided by the user that will be passed to the function
|
||||
pointed to by <i>Post_Migrate</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
|
||||
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Post_Migrate_Fn</a></b>. </td>
|
||||
</tr>
|
||||
|
||||
|
||||
<caption ALIGN=BOTTOM><i>Fields of the </i><b>ZOLTAN_MIGRATE</b><i> data structure.</i></caption>
|
||||
</table></center>
|
||||
|
||||
<p>For each pointer to an application registered function in the
|
||||
<b>Zoltan_Struct</b>
|
||||
and <b>ZOLTAN_MIGRATE</b> data structures there is also a pointer to a Fortran
|
||||
application registered function, of the form ZOLTAN_FUNCNAME_FORT_FN *<i>Get_Funcname_Fort</i>.
|
||||
These are for use within the Fortran interface. The Zoltan routines
|
||||
should invoke the usual application registered function regardless of whether
|
||||
the Zoltan structure was created from C or Fortran.
|
||||
|
||||
|
||||
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a> | <a href="dev_services.html">Next:
|
||||
Services</a> | <a href="dev_lb_types.html">Previous:
|
||||
ID Data Types</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
249
thirdParty/Zoltan/docs/dev_html/dev_lb_types.html
vendored
Normal file
@ -0,0 +1,249 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="karen devine, kddevin@sandia.gov">
|
||||
<title> Zoltan Developer's Guide: Data Types</title>
|
||||
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="dev.html">Zoltan Developer's Guide</a>
|
||||
| <a href="dev_lb_structs.html">Next</a> | <a href="dev_lb_interface.html">Previous</a></i></b></div>
|
||||
|
||||
<h2>
|
||||
<a NAME="interface_types"></a>ID Data Types</h2>
|
||||
Within Zoltan, objects are identified by a global
|
||||
identification (ID) value provided by the application. This global ID must
|
||||
be unique across all processors. The application may also provide a local
|
||||
ID value that it can use for faster location of objects within its own
|
||||
data structure. For example, local array indices to objects' data may be
|
||||
provided as the local IDs; these indices can then be used to directly access
|
||||
data in the query functions. Zoltan does not use these
|
||||
local IDs, but since it must pass them to the application in the interface
|
||||
query functions, it must store them with the objects' data. ID data
|
||||
types and macros for manipulating IDs are described below.
|
||||
<blockquote><a href="#ID arrays">IDs and Arrays of IDs</a>
|
||||
<br><a href="#ID alloc">Allocating IDs</a>
|
||||
<br><a href="#ID Ops">Common Operations on IDs</a></blockquote>
|
||||
|
||||
<h4>
|
||||
<a NAME="ID arrays"></a>IDs and Arrays of IDs</h4>
|
||||
Zoltan stores each global and local ID as an array of unsigned integers.
|
||||
Arrays of IDs are passed to the application as a one-dimensional array
|
||||
of unsigned integers with size
|
||||
<i>number_of_IDs</i> * <i>number_of_entries_per_ID</i>.
|
||||
A type definition <b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b>
|
||||
(in <i>include/zoltan_types.h</i>) points to an ID or array of IDs. The number
|
||||
of array entries per ID can be set by the application using the <a href="../ug_html/ug_param.html#NUM_GID_ENTRIES">NUM_GID_ENTRIES</a>
|
||||
and
|
||||
<a href="../ug_html/ug_param.html#NUM_LID_ENTRIES">NUM_LID_ENTRIES</a>
|
||||
parameters.
|
||||
<h4>
|
||||
<a NAME="ID alloc"></a>Allocating IDs</h4>
|
||||
Macros that simplify the allocation of global and local IDs are described
|
||||
in the table below. These macros provide consistent, easy-to-use memory
|
||||
allocation with error checking and, thus, their use is highly recommended.
|
||||
Each macro returns NULL if either a memory error occurs or the number of
|
||||
IDs requested is zero.
|
||||
<br>
|
||||
<table BORDER WIDTH="100%" NOSAVE >
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b>
|
||||
<b>ZOLTAN_MALLOC_GID</b>(struct <a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a>
|
||||
*<i>zz</i>);</td>
|
||||
|
||||
<td>Allocates and returns a pointer to a single global ID.</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b>
|
||||
<b>ZOLTAN_MALLOC_LID</b>(struct <a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a>
|
||||
*<i>zz</i>);</td>
|
||||
|
||||
<td>Allocates and returns a pointer to a single local ID.</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b>
|
||||
<b>ZOLTAN_MALLOC_GID_ARRAY</b>(struct <a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a>
|
||||
*<i>zz</i>, int <i>n</i>);</td>
|
||||
|
||||
<td>Allocates and returns a pointer to an array of <i>n</i> global IDs,
|
||||
where the index into the array for the <i>i<sup>th</sup></i> global ID
|
||||
is <i>i</i>*<a href="../ug_html/ug_param.html#NUM_GID_ENTRIES">NUM_GID_ENTRIES</a>.</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b>
|
||||
<b>ZOLTAN_MALLOC_LID_ARRAY</b>(struct <a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a>
|
||||
*<i>zz</i>, int <i>n</i>);</td>
|
||||
|
||||
<td>Allocates and returns a pointer to an array of <i>n</i> local IDs,
|
||||
where the index into the array for the <i>i<sup>th</sup></i> local ID is
|
||||
<i>i</i>*<a href="../ug_html/ug_param.html#NUM_LID_ENTRIES">NUM_LID_ENTRIES</a>.</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b>
|
||||
<b>ZOLTAN_REALLOC_GID_ARRAY</b>(struct <a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a>
|
||||
*<i>zz,</i> <b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b>
|
||||
<i>ptr</i>, int <i>n</i>);</td>
|
||||
|
||||
<td>Reallocates and returns a pointer to an array of<i> n</i> global IDs,
|
||||
replacing the current array pointed to by<i> ptr</i>.</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b>
|
||||
<b>ZOLTAN_REALLOC_LID_ARRAY</b>(struct <a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a>
|
||||
*<i>zz,</i> <b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b>
|
||||
<i>ptr</i>, int <i>n</i>);</td>
|
||||
|
||||
<td>Reallocates and returns a pointer to an array of<i> n</i> local IDs,
|
||||
replacing the current array pointed to by<i> ptr</i>.</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h4>
|
||||
<a NAME="ID Ops"></a>Common Operations on IDs</h4>
|
||||
In addition, macros are defined for common operations on global and local
|
||||
IDs. These macros include error checking when appropriate and account
|
||||
for different values of <a href="../ug_html/ug_param.html#NUM_GID_ENTRIES">NUM_GID_ENTRIES</a>
|
||||
and <a href="../ug_html/ug_param.html#NUM_LID_ENTRIES">NUM_LID_ENTRIES</a>.
|
||||
Use of these macros improves code robustness and simplifies code maintenance;
|
||||
their use is highly recommended.
|
||||
<br>
|
||||
<table BORDER WIDTH="100%" NOSAVE >
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE>void<b> ZOLTAN_INIT_GID</b>(struct <a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a>
|
||||
*<i>zz</i>, <b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>id</i>);</td>
|
||||
|
||||
<td>Initializes all entries of the global ID <i>id</i> to zero; <i>id</i>
|
||||
must be allocated before calling <b>ZOLTAN_INIT_GID</b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE>void<b> ZOLTAN_INIT_LID</b>(struct <a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a>
|
||||
*<i>zz</i>, <b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>id</i>);</td>
|
||||
|
||||
<td>Initializes all entries of the local ID <i>id</i> to zero; <i>id</i>
|
||||
must be allocated before calling <b>ZOLTAN_INIT_LID</b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE>void<b> ZOLTAN_SET_GID</b>(struct <a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a>
|
||||
*<i>zz</i>, <b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>tgt</i>,
|
||||
<b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b>
|
||||
<i>src</i>);</td>
|
||||
|
||||
<td>Copies the global ID <i>src</i> into the global ID <i>tgt</i>.
|
||||
Both <i>src</i> and <i>tgt</i> must be allocated before calling <b>ZOLTAN_SET_LID</b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE>void<b> ZOLTAN_SET_LID</b>(struct <a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a>
|
||||
*<i>zz</i>, <b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>tgt</i>,
|
||||
<b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b>
|
||||
<i>src</i>);</td>
|
||||
|
||||
<td>Copies the local ID <i>src</i> into the local ID <i>tgt</i>.
|
||||
Both <i>src</i> and <i>tgt</i> must be allocated before calling <b>ZOLTAN_SET_LID</b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE>int<b> ZOLTAN_EQ_GID</b>(struct <a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a>
|
||||
*<i>zz</i>, <b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>a</i>,
|
||||
<b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b>
|
||||
<i>b</i>);</td>
|
||||
|
||||
<td>Returns TRUE if global ID<i> a</i> is equal to global ID <i>b</i>.</td>
|
||||
</tr>
|
||||
<!-------------------- KDD COMMENTED OUT WHILE NOT USED IN CODE
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE>int<b> ZOLTAN_LT_GID</b>(struct <a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a>
|
||||
*<i>zz</i>, <b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>a</i>,
|
||||
<b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b>
|
||||
<i>b</i>);</td>
|
||||
|
||||
<td>Returns TRUE if global ID<i> a</i> is less than global ID <i>b.</i></td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE>int<b> ZOLTAN_GT_GID</b>(struct <a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a>
|
||||
*<i>zz</i>, <b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>a</i>,
|
||||
<b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b>
|
||||
<i>b</i>);</td>
|
||||
|
||||
<td>Returns TRUE if global ID<i> a</i> is greater than global ID <i>b.</i></td>
|
||||
</tr>
|
||||
-------------------->
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE>void<b> ZOLTAN_PRINT_GID</b>(struct <a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a>
|
||||
*<i>zz</i>, <b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>id</i>);</td>
|
||||
|
||||
<td>Prints all entries of a single global ID <i>id</i>.</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td>void<b> ZOLTAN_PRINT_LID</b>(struct <a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a>
|
||||
*<i>zz</i>, <b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>id</i>);</td>
|
||||
|
||||
<td NOSAVE>Prints all entries of a single local ID <i>id</i>.</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a> | <a href="dev_lb_structs.html">Next:
|
||||
Data Structures</a> | <a href="dev_lb_interface.html">Previous:
|
||||
Interface Functions</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
78
thirdParty/Zoltan/docs/dev_html/dev_mig.html
vendored
Normal file
@ -0,0 +1,78 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="karen devine, kddevin@sandia.gov">
|
||||
<title> Zoltan Developer's Guide: Migration Tools</title>
|
||||
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_fortran.html">Next</a> | <a href="dev_add_remap.html">Previous</a></i></b></div>
|
||||
|
||||
<h2>
|
||||
<a NAME="migration_help"></a>Migration Tools</h2>
|
||||
The migration tools in the Zoltan library perform communication necessary
|
||||
for data migration in the application. The routine <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>
|
||||
calls application-registered <a href="../ug_html/ug_query_mig.html#ZOLTAN_PACK_OBJ_FN">packing</a> routines to gather data to be sent
|
||||
to other processors. It sends the data using the <a href="../ug_html/ug_util_comm.html">unstructured
|
||||
communication package</a>. It then calls application-registered <a href="../ug_html/ug_query_mig.html#ZOLTAN_UNPACK_OBJ_FN">unpacking</a>
|
||||
routines for each imported object to add received data to the processor's
|
||||
data structures. See the <a href="../ug_html/ug.html">Zoltan User's Guide</a>
|
||||
for more details on the use of and interface to the migration tools.
|
||||
<p>In future releases, the migration tools will be updated to use
|
||||
MPI data types to support heterogeneous computing architectures.
|
||||
<br>
|
||||
<p>
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a> | <a href="dev_fortran.html">Next:
|
||||
FORTRAN Interface</a> | <a href="dev_add_remap.html">Previous:
|
||||
Part Remapping</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
176
thirdParty/Zoltan/docs/dev_html/dev_parmetis.html
vendored
Normal file
@ -0,0 +1,176 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.6 sun4m) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="karen devine, kddevin@sandia.gov">
|
||||
<title> Zoltan Developer's Guide: ParMETIS/Jostle</title>
|
||||
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="dev.html">Zoltan Developer's Guide</a>
|
||||
| <a href="dev_phg.html">Next</a> | <a href="dev_rib.html">Previous</a></i></b></div>
|
||||
|
||||
<h2>
|
||||
Appendix: <a href="https://www-users.cs.umn.edu/~karypis/metis/parmetis/">ParMETIS</a>
|
||||
and <a href="https://www.gre.ac.uk/jostle">Jostle</a></h2>
|
||||
|
||||
<h3>
|
||||
Overview of structure (algorithm)</h3>
|
||||
This part of Zoltan provides an interface to various graph-based load-balancing
|
||||
algorithms. Currently two libraries are supported: <a href="../ug_html/ug_alg_parmetis.html">ParMETIS
|
||||
</a>and
|
||||
<a href="../ug_html/ug_alg_jostle.html">Jostle.</a>
|
||||
Each of these libraries contain several algorithms.
|
||||
<h4>
|
||||
Interface algorithm</h4>
|
||||
The structure of the code is as follows: Each package
|
||||
(<a href="https://www-users.cs.umn.edu/~karypis/metis/parmetis/">ParMETIS</a>,
|
||||
<a href="https://www.gre.ac.uk/jostle">Jostle</a>)
|
||||
has its own wrapper routine that performs initialization and sets parameters.
|
||||
The main routine is <b>Zoltan_ParMetis_Jostle,</b> which constructs an appropriate
|
||||
graph data structure using Zoltan's query functions. After the graph structure
|
||||
has been constructed, the appropriate library is called and the import/export
|
||||
list is created and returned.
|
||||
<p>Please note that <a href="https://www-users.cs.umn.edu/~karypis/metis/parmetis/">ParMETIS</a>
|
||||
and <a href="https://www.gre.ac.uk/jostle">Jostle</a> are not integral parts
|
||||
of Zoltan. These libraries must be obtained and installed separately.
|
||||
(<a href="https://www-users.cs.umn.edu/~karypis/metis/parmetis/">ParMETIS</a>
|
||||
may be bundled with Zoltan, but it is an independent package developed
|
||||
at Univ. of Minnesota.) Zoltan merely provides an interface to these libraries.
|
||||
<p>The most complex task in the interface code is the construction of the
|
||||
graph data structure. This structure is described in the next section.
|
||||
The routine uses the Zoltan query functions to get a list of objects and
|
||||
edges on each processor. Each object has a unique global ID which is mapped
|
||||
into a unique (global) number between 1 and <i>n</i>, where <i>n</i> is
|
||||
the total number of objects. The construction of the local (on-processor)
|
||||
part of the graph is straightforward. When an edge goes between objects
|
||||
that reside on different processors, global communication is required.
|
||||
We use Zoltan's unstructured communication library for this. A hash function
|
||||
(<a href="dev_services_hash.html"><b>Zoltan_Hash</b></a>) is used to efficiently map global IDs to integers.
|
||||
The graph construction algorithm has parallel complexity
|
||||
<i>O(max<sub>j</sub> {n<sub>j</sub>+m<sub>j</sub>+p})</i>, where
|
||||
<i>n<sub>j</sub></i> is the number of objects on processor j,
|
||||
<i>m<sub>j</sub></i> is the number of edges on processor j, and
|
||||
<i>p</i> is the number of processors.
|
||||
<p>One other feature of the interface code should be mentioned. While
|
||||
Zoltan allows objects and edges to have real (float) weights, both ParMETIS and Jostle
|
||||
currently require integer weights. Therefore, Zoltan first checks if the
|
||||
object weights are integers. If not, the weights are automatically scaled
|
||||
and rounded to integers. The scaling is performed such that the weights
|
||||
become large integers, subject to the constraint that the sum of (any component
|
||||
of) the weights is less than a large constant MAX_WGT_SUM < INT_MAX.
|
||||
The scaled weights are rounded up to the nearest integer to ensure that
|
||||
nonzero weights never become zero.
|
||||
Note that for multidimensional weights, each weight component is scaled independently.
|
||||
(The source code is written such that this scaling is simple to change.)
|
||||
<p>Currently Zoltan constructs and discards the entire graph structure
|
||||
every time a graph-based method (ParMETIS or Jostle) is called. Incremental
|
||||
update of the graph structure may be supported in the future.
|
||||
<p>The graph construction code in <b>Zoltan_ParMetis_Jostle </b>can also be
|
||||
used to interface with other graph-based algorithms.
|
||||
<h4>
|
||||
Algorithms used in ParMETIS and Jostle libraries</h4>
|
||||
There are two main types of algorithms used in ParMETIS and Jostle. The
|
||||
first is multilevel graph partitioning. The main idea is to take a large
|
||||
graph and construct a sequence of smaller and simpler graphs that
|
||||
in some sense approximate the original graph. When the graph is sufficiently
|
||||
small it is partitioned using some other method. This smallest graph and
|
||||
the corresponding partition is then propagated back through all the levels
|
||||
to the original graph. A popular local refinement strategy known as Kernighan-Lin
|
||||
is employed at some or every level.
|
||||
<p>The second main strategy is diffusion. This method assumes that an initial
|
||||
partition (balance) is given, and load balance is achieved by repeatedly
|
||||
moving objects (nodes) from parts (processors) that have too heavy
|
||||
load to neighboring parts (processors) with too small load.
|
||||
<p>For further details about the algorithms in a specific library, please
|
||||
refer to the documentation that is distributed with that library.
|
||||
<h3>
|
||||
Data structures</h3>
|
||||
We use the ParMETIS parallel graph structure. This is implemented using
|
||||
5 arrays:
|
||||
<ol>
|
||||
<li>
|
||||
<i>vtxdist</i>: gives the distribution of the objects (vertices) to processors</li>
|
||||
|
||||
<li>
|
||||
<i>xadj</i>: indices (pointers) to the <i>adjncy</i> array</li>
|
||||
|
||||
<li>
|
||||
<i>adjncy</i>: neighbor lists</li>
|
||||
|
||||
<li>
|
||||
<i>adjwgt</i>: edge weights</li>
|
||||
|
||||
<li>
|
||||
<i>vwgt</i>: vertex (object) weights</li>
|
||||
</ol>
|
||||
The <i>vtxdist</i> array is duplicated on all processors, while the other
|
||||
arrays are local.
|
||||
<br>For more details, see the ParMETIS User's Guide.
|
||||
<h3>
|
||||
Parameters</h3>
|
||||
Zoltan supports the most common parameters in ParMETIS and Jostle. These
|
||||
parameters are parsed in the package-specific wrapper routine (<b>Zoltan_ParMetis</b>
|
||||
or <b>Zoltan_Jostle</b>) and later passed on to the desired library via <b>Zoltan_ParMetis_Jostle</b>.
|
||||
<p>In addition, Zoltan has one graph parameter of its own: <a href="../ug_html/ug_alg_parmetis.html">CHECK_GRAPH</a>.
|
||||
This parameter is set in <b>Zoltan_ParMetis_Jostle</b> and specifies the amount
|
||||
of verification that is performed on the constructed graph. For example, it
|
||||
is required that the graph is symmetric and that the weights are non-negative.
|
||||
<h3>
|
||||
Main routine</h3>
|
||||
The main routine is <b>Zoltan_ParMetis_Jostle</b> but it should always be accessed
|
||||
through either <b>Zoltan_ParMetis</b> or <b>Zoltan_Jostle</b>.
|
||||
<p>
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a> | <a href="dev_phg.html">Next:
|
||||
Hypergraph Partitioning</a> | <a href="dev_rib.html">Previous:
|
||||
Recursive Inertial Bisection (RIB)</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
504
thirdParty/Zoltan/docs/dev_html/dev_phg.html
vendored
Normal file
@ -0,0 +1,504 @@
|
||||
<!-------- @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="GENERATOR"
|
||||
content="Mozilla/4.76 [en] (X11; U; Linux 2.4.2-2smp i686) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1377">
|
||||
<meta name="author" content="karen devine, kddevin@sandia.gov">
|
||||
<title>Zoltan Developer's Guide: Hypergraph Partitioning</title>
|
||||
</head>
|
||||
<body bgcolor="#ffffff">
|
||||
<div align="right"><b><i><a href="dev.html">Zoltan Developer's Guide</a>
|
||||
| <a href="dev_reftree.html">Next</a> | <a
|
||||
href="dev_parmetis.html">Previous</a></i></b></div>
|
||||
<h2>
|
||||
<a name="Hypergraph Partitioning"></a>Appendix: Hypergraph Partitioning</h2>
|
||||
Hypergraph partitioning is a useful partitioning and
|
||||
load balancing method when connectivity data is available. It can be
|
||||
viewed as a more sophisticated alternative to
|
||||
the traditional graph partitioning.
|
||||
<p>A hypergraph consists of vertices and hyperedges. A hyperedge
|
||||
connects
|
||||
one or more vertices. A graph is a special case of a hypergraph where
|
||||
each edge has size two (two vertices). The hypergraph model is well
|
||||
suited to parallel computing, where vertices correspond to data objects
|
||||
and hyperedges represent the communication requirements. The basic
|
||||
partitioning problem is to partition the vertices into <i>k</i>
|
||||
approximately equal sets such that the number of cut hyperedges is
|
||||
minimized. Most partitioners (including Zoltan-PHG) allows a more
|
||||
general
|
||||
model where both vertices and hyperedges can be assigned weights.
|
||||
It has been
|
||||
shown that the hypergraph model gives a more accurate representation
|
||||
of communication cost (volume) than the graph model. In particular,
|
||||
for sparse matrix-vector multiplication, the hypergraph model
|
||||
<strong>exactly</strong> represents communication volume. Sparse
|
||||
matrices can be partitioned either along rows or columns;
|
||||
in the row-net model the columns are vertices and each row corresponds
|
||||
to an hyperedge, while in the column-net model the roles of vertices
|
||||
and hyperedges are reversed. </p>
|
||||
<p>Zoltan contains a native parallel hypergraph partitioner, called PHG
|
||||
(Parallel HyperGraph partitioner). In addition, Zoltan provides
|
||||
access to <a href="https://bmi.osu.edu/%7Eumit/software.htm">PaToH</a>,
|
||||
a serial hypergraph partitioner.
|
||||
Note that PaToH is not part of Zoltan and should be obtained
|
||||
separately from the <a href="https://bmi.osu.edu/%7Eumit/software.htm">
|
||||
PaToH web site</a>.
|
||||
Zoltan-PHG is a fully parallel multilevel hypergraph partitioner. For
|
||||
further technical description, see <a
|
||||
href="ug_refs.html#hypergraph-ipdps06">[Devine et al, 2006]</a>.<br>
|
||||
</p>
|
||||
<h4>Algorithm:</h4>
|
||||
The algorithm used is multilevel hypergraph partitioning. For
|
||||
coarsening, several versions of inner product (heavy connectivity)
|
||||
matching are available.
|
||||
The refinement is based on Fiduccia-Mattheysis (FM) but in parallel it
|
||||
is only an approximation.
|
||||
|
||||
<h4>Parallel implementation:</h4>
|
||||
A novel feature of our parallel implementation is that we use a 2D
|
||||
distribution of the hypergraph. That is, each processor owns partial
|
||||
data about some vertices and some hyperedges. The processors are
|
||||
logically organized in a 2D grid as well. Most communication is limited
|
||||
to either a processor row or column. This design should allow for
|
||||
good scalability on large number of processors.<br>
|
||||
|
||||
<h4>Data structures:</h4>
|
||||
The hypergraph is the most important data structure. This is stored as
|
||||
a compressed sparse matrix. Note that in parallel, each processor owns
|
||||
a local part of the global hypergraph
|
||||
(a submatrix of the whole matrix).
|
||||
The hypergraph data type is <i>struct HGraph</i>, and contains
|
||||
information like number of vertices, hyperedges, pins, compressed
|
||||
storage of all pins, optional vertex and edge weights, pointers
|
||||
to relevant communicators, and more. One cryptic notation needs an
|
||||
explanation: The arrays <i>hindex, hvertex</i> are used to
|
||||
look up vertex info given a hyperedge, and <i>vindex, vedge</i> are
|
||||
used to look up hyperedge info given a vertex. Essentially,
|
||||
we store the hypergraph as a sparse matrix in both CSR and CSC formats.
|
||||
This doubles the memory cost but gives better performance.
|
||||
The data on each processor is stored using local indexing, starting at zero.
|
||||
In order to get the global vertex or edge number, use the macros
|
||||
<i>VTX_LNO_TO_GNO</i> and <i>EDGE_LNO_TO_GNO</i>. These macros will
|
||||
look up the correct offsets (using the dist_x and dist_y arrays).
|
||||
Note that <i>phg->nVtx</i> is always the local number of vertices,
|
||||
which may be zero on some processors.
|
||||
|
||||
<h4>Parameters:</h4>
|
||||
In the User's Guide, only the most essential parameters have been
|
||||
documented. There are several other parameters, intended for developers
|
||||
and perhaps expert "power" users. We give a more complete list of all
|
||||
parameters below. Note that these parameters <span
|
||||
style="font-style: italic;">may change in future versions!<br>
|
||||
</span>
|
||||
For a precise list of parameters in a particular version of Zoltan, look at the source code (phg.c).
|
||||
<table nosave="" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Method String:</b></td>
|
||||
<td><b>HYPERGRAPH</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Parameters:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> <span
|
||||
style="font-style: italic;">HYPERGRAPH_PACKAGE</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;">PHG (parallel) or PaToH (serial)<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> <span
|
||||
style="font-style: italic;">CHECK_HYPERGRAPH</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;">Check if input data is valid.
|
||||
(Slows performance;intended for debugging.)<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><span style="font-style: italic;">
|
||||
PHG_OUTPUT_LEVEL</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;">Level of verbosity; 0 is silent.<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> <span
|
||||
style="font-style: italic;">PHG_FINAL_OUTPUT</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;">Print stats about final
|
||||
partition? (0/1)<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> <span
|
||||
style="font-style: italic;">PHG_NPROC_VERTEX</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;">Desired number of processes in
|
||||
the vertex direction (for 2D internal layout) </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> <span
|
||||
style="font-style: italic;">PHG_NPROC_HEDGE</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;">Desired number of processes in
|
||||
the hyperedge direction (for 2D internal layout) </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><i> PHG_COARSENING_METHOD</i></td>
|
||||
<td>The method to use in matching/coarsening; currently these are
|
||||
available. <br>
|
||||
<span style="font-style: italic;">agg</span> - agglomerative inner product
|
||||
matching (a.k.a. heavy connectivity matching) <br>
|
||||
<span style="font-style: italic;">ipm</span> - inner product
|
||||
matching (a.k.a. heavy connectivity matching) <br>
|
||||
<span style="font-style: italic;">c-ipm</span> - column
|
||||
ipm; faster method based on ipm within processor columns <br>
|
||||
<span style="font-style: italic;">a-ipm </span>- alternate
|
||||
between fast method (l-ipm ) and ipm <br>
|
||||
<span style="font-style: italic;">l-ipm </span>- local ipm
|
||||
on each processor. Fastest option but often gives poor quality. <br>
|
||||
<i>h-ipm - </i>hybrid ipm that uses partial c-ipm followed
|
||||
by ipm on each level <br>
|
||||
<i><br>
|
||||
</i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> <span style="font-style: italic;">PHG_COARSENING_LIMIT</span><br>
|
||||
</td>
|
||||
<td>Number of vertices at which to stop coarsening.<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> <span
|
||||
style="font-style: italic;">PHG_VERTEX_VISIT_ORDER</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;">Ordering of vertices in greedy
|
||||
matching scheme:<br>
|
||||
0 - random<br>
|
||||
1 - natural order (as given by the query functions)<br>
|
||||
2 - increasing vertex weights<br>
|
||||
3 - increasing vertex degree<br>
|
||||
4 - increasing vertex degree, weighted by pins<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> <span
|
||||
style="font-style: italic;">PHG_EDGE_SCALING</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;">Scale edge weights by some
|
||||
function of size of the hyperedges:<br>
|
||||
0 - no scaling<br>
|
||||
1 - scale by 1/(size-1) [absorption scaling]<br>
|
||||
2 - scale by 2/((size*size-1)) [clique scaling]<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> <span
|
||||
style="font-style: italic;">PHG_VERTEX_SCALING</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;">Variations in "inner product"
|
||||
similarity metric (for matching):<br>
|
||||
0 - Euclidean inner product: <x,y><br>
|
||||
1 - cosine similarity: <x,y>/(|x|*|y|)<br>
|
||||
2 - <x,y>/(|x|^2 * |y|^2)<br>
|
||||
3 - scale by sqrt of vertex weights<br>
|
||||
4 - scale by vertex weights<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"> <i>PHG_COARSEPARTITION_METHOD</i></td>
|
||||
<td>Method to partition the coarsest (smallest) hypergraph;
|
||||
typically done in serial:<br>
|
||||
<span style="font-style: italic;">random</span> - random<br>
|
||||
<span style="font-style: italic;">linear</span> - linear
|
||||
(natural) order<br>
|
||||
<span style="font-style: italic;">greedy </span>- greedy method
|
||||
based on minimizing cuts<br>
|
||||
<span style="font-style: italic;">auto </span>- automatically
|
||||
select from the above methods (in parallel, the processes will do
|
||||
different methods)<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> <span
|
||||
style="font-style: italic;">PHG_REFINEMENT_METHOD</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;">Refinement algorithm:<br>
|
||||
<span style="font-style: italic;">fm </span>- two-way
|
||||
approximate FM<br>
|
||||
<span style="font-style: italic;">none</span> - no refinement<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> <i>PHG_REFINEMENT_LOOP_LIMIT</i></td>
|
||||
<td>Loop limit in FM refinement. Higher number means more
|
||||
refinement. <br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr nosave="" valign="top">
|
||||
<td> <span style="font-style: italic;">PHG_REFINEMENT_MAX_NEG_MOVE</span><br>
|
||||
</td>
|
||||
<td nosave="">Maximum number of negative moves allowed in FM.<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr nosave="" valign="top">
|
||||
<td> <span style="font-style: italic;">PHG_BAL_TOL_ADJUSTMENT</span><br>
|
||||
</td>
|
||||
<td nosave="">Controls how the balance tolerance is adjusted at
|
||||
each level of bisection.<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> <span
|
||||
style="font-style: italic;">PHG_RANDOMIZE_INPUT</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;">Randomize layout of vertices and
|
||||
hyperedges in internal parallel 2D layout? (0/1)<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> <a
|
||||
name="PHG_EDGE_WEIGHT_OPERATION"></a><span style="font-style: italic;">PHG_EDGE_WEIGHT_OPERATION</span>
|
||||
</td>
|
||||
<td style="vertical-align: top;">Operation to be applied to edge
|
||||
weights supplied by different processes for the same hyperedge:<br>
|
||||
<i>add</i> - the hyperedge weight will be the sum of the supplied
|
||||
weights<br>
|
||||
<i>max</i> - the hyperedge weight will be the maximum of the
|
||||
supplied weights<br>
|
||||
<i>error</i> - if the hyperedge weights are not equal, Zoltan
|
||||
will flag an error, otherwise the hyperedge weight will be the value
|
||||
returned by the processes<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr nosave="" valign="top">
|
||||
<td> <span style="font-style: italic;">EDGE_SIZE_THRESHOLD</span><br>
|
||||
</td>
|
||||
<td nosave="">Ignore hyperedges greater than this fraction times
|
||||
number of vertices.<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> <span
|
||||
style="font-style: italic;">PATOH_ALLOC_POOL0</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;">Memory allocation for PaToH; see
|
||||
the PaToH manual for details.<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> <span
|
||||
style="font-style: italic;">PATOH_ALLOC_POOL1</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;">Memory allocation for PaToH; see
|
||||
the PaToH manual for details.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><b>Default values:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>HYPERGRAPH_PACKAGE = PHG<br>
|
||||
</i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"><span style="font-style: italic;">CHECK_HYPERGRAPH</span>
|
||||
= 0<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><span style="font-style: italic;">PHG_OUTPUT_LEVEL=0</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><span style="font-style: italic;">PHG_FINAL_OUTPUT=0</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>PHG_REDUCTION_METHOD=ipm</i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><span style="font-style: italic;">PHG_REDUCTION_LIMIT=100</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><span style="font-style: italic;">PHG_VERTEX_VISIT_ORDER=0</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><span style="font-style: italic;">PHG_EDGE_SCALING=0</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><span style="font-style: italic;">PHG_VERTEX_SCALING=0</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"><i>PHG_COARSEPARTITION_METHOD=greedy</i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"><span style="font-style: italic;">PHG_REFINEMENT_METHOD=fm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"><i>PHG_REFINEMENT_LOOP_LIMIT=10</i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"><span style="font-style: italic;">PHG_REFINEMENT_MAX_NEG_MOVE=100</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"><span style="font-style: italic;">PHG_BAL_TOL_ADJUSTMENT=0.7</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"><span style="font-style: italic;">PHG_RANDOMIZE_INPUT=0</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><span style="font-style: italic;">PHG_EDGE_WEIGHT_OPERATION=max</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"><span style="font-style: italic;">EDGE_SIZE_THRESHOLD=0.25</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"><span style="font-style: italic;">PATOH_ALLOC_POOL0=0</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"><span style="font-style: italic;">PATOH_ALLOC_POOL1=0</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><b>Required Query Functions:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="../ug_html/ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</a></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="../ug_html/ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</a></b>
|
||||
or <b><a href="../ug_html/ug_query_lb.html#ZOLTAN_FIRST_OBJ_FN">ZOLTAN_FIRST_OBJ_FN</a></b>/<b><a
|
||||
href="../ug_html/ug_query_lb.html#ZOLTAN_NEXT_OBJ_FN">ZOLTAN_NEXT_OBJ_FN</a></b>
|
||||
pair</td>
|
||||
</tr>
|
||||
<tr nosave="" valign="top">
|
||||
<td><br>
|
||||
</td>
|
||||
<td nosave=""> <b><a href="../ug_html/ug_query_lb.html#ZOLTAN_HG_SIZE_CS_FN">ZOLTAN_HG_SIZE_CS_FN</a></b>
|
||||
<br>
|
||||
<b><a href="../ug_html/ug_query_lb.html#ZOLTAN_HG_CS_FN">ZOLTAN_HG_CS_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><b>Optional Query Functions:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="../ug_html/ug_query_lb.html#ZOLTAN_HG_SIZE_EDGE_WTS_FN">ZOLTAN_HG_SIZE_EDGE_WTS_FN</a></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="../ug_html/ug_query_lb.html#ZOLTAN_HG_EDGE_WTS_FN">ZOLTAN_HG_EDGE_WTS_FN</a></b></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>
|
||||
It is possible to provide the graph query functions instead of the
|
||||
hypergraph queries, though this is not recommended. If only graph query
|
||||
functions are registered, Zoltan will automatically create a hypergraph
|
||||
from the graph, but some information (specifically, edge weights) will
|
||||
be lost. </p>
|
||||
<hr width="100%">[<a href="ug.html">Table of Contents</a> | <a
|
||||
href="dev_reftree.html">Next:
|
||||
Refinement Tree Partitioning</a> | <a
|
||||
href="dev_parmetis.html">Previous:
|
||||
ParMetis</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
207
thirdParty/Zoltan/docs/dev_html/dev_rcb.html
vendored
Normal file
@ -0,0 +1,207 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; U; SunOS 5.6 sun4m) [Netscape]">
|
||||
<META NAME="sandia.approved" CONTENT="SAND99-1376">
|
||||
<META NAME="author" CONTENT="karen devine, kddevin@sandia.gov">
|
||||
<TITLE> Zoltan Developer's Guide: RCB</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_rib.html">Next</a> | <a href="dev_test_script.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<H2>
|
||||
<A NAME="RCB"></A>Appendix: Recursive Coordinate Bisection (RCB)</H2>
|
||||
|
||||
|
||||
<H3>
|
||||
Outline of Algorithm</H3>
|
||||
|
||||
<P>The implementation of Recursive Coordinate Bisection (RCB) in Zoltan
|
||||
is due to Steve Plimpton of Sandia National Laboratories and was modified
|
||||
by Matt St. John and Courtenay Vaughan. In this implementation of RCB, the
|
||||
parallel computer is first divided into two pieces and then the computational
|
||||
domain is divided into two pieces such that the proportion of work in each
|
||||
piece is the same as the proportion of computational power. The division
|
||||
of the parallel machine is done by a subroutine which is part of the support
|
||||
for heterogenous architectures that is being built into the Zoltan library.
|
||||
This process is repeated recursively on each subdomain and its associated
|
||||
part of the computer. Each of these divisions are done with a cutting plane
|
||||
that is orthogonal to one of the coordinate axes.
|
||||
|
||||
<P>At each of these stages, each subdomain of processors and the objects
|
||||
that are contained on those processors are divided into two sets based
|
||||
on which side of the cutting plane each object is on. Either or both of
|
||||
these sets may be empty. On each processor, the set of objects which are
|
||||
on the same side of the cut as the processor are retained by the processor,
|
||||
while the other objects are sent to processors on the other side of the
|
||||
cut. In order to minimize the maximum memory usage in each set of processors,
|
||||
the objects that are being sent to each set of processors are distributed
|
||||
such that each each processor in a set has about the same number of objects
|
||||
after the objects from the other set of processors are sent. In the case
|
||||
when a processor has more objects that it will retain than the average
|
||||
number of objects that the rest of the processors have in its set, then
|
||||
that processor will not receive any objects. Thus each processor may send
|
||||
and receive objects from several (or no) processors in the other set. The
|
||||
process of determining which outgoing objects are sent to which processors
|
||||
is determined in the subroutine <B>Zoltan_Create_Proc_List</B>. Once this new
|
||||
distribution of objects is determined, the
|
||||
<B><A HREF="../ug_html/ug_util_comm.html">unstructured communication package</A></B> in
|
||||
Zoltan is used to determine which processors are going to receive which
|
||||
objects and actually move the objects.
|
||||
|
||||
<P>For applications that wish to add more objects to the decomposition
|
||||
at a later time (e.g., through <a href="../ug_html/ug_interface_augment.html#Zoltan_LB_Box_Assign"><b>Zoltan_LB_Box_Assign</b></a> or <a href="../ug_html/ug_interface_augment.html#Zoltan_LB_Point_Assign"><b>Zoltan_LB_Point_Assign</b></a>), information to do this can be retained during the
|
||||
decomposition phase. This information is kept if the parameter <a href="../ug_html/ug_alg_rcb.html">KEEP_CUTS</a>
|
||||
is set during the decomposition (see the <a href="../ug_html/ug_alg_rcb.html">RCB section</a> in the
|
||||
<B><A HREF="../ug_html/ug.html">Zoltan User's Guide</A></B>).
|
||||
This information about the decomposition can be thought of as a tree with
|
||||
the nodes which have children representing the cut information and the nodes
|
||||
with no children representing processors. An object is dropped through the
|
||||
tree starting with the root node and uses the cut information at each node it
|
||||
encounters to determine which subtree it traverses. When it reaches a terminal
|
||||
node, the node contains the processor number that the object belongs to.
|
||||
The information to construct the tree is saved during the decomposition.
|
||||
At each step in the decomposition, when each set is divided into two sets,
|
||||
the set with the lowest numbered processor is designated to be the left set
|
||||
and the information about the cut is stored in the lowest numbered processor
|
||||
in the other set of processors which is the right set. As a result of this
|
||||
process, each processor will store information for, at most, one cut, since
|
||||
once a processor stores information about a cut, by being the lowest numbered
|
||||
processor in the right set, it will always be in a left set after each
|
||||
subsequent cut since it will be the lowest numbered processor in the set
|
||||
being cut and the set it is put into will be the left set. The processor
|
||||
which stores the cut information also stores the root node as its parent.
|
||||
After the end of the division process, all of the information is collected
|
||||
onto all of the processors. The parent information is then used to establish
|
||||
the leaf information for the parent. When this information is gathered, the
|
||||
tree structure is stored in arrays with the array position determined by the
|
||||
processor number that was storing the information. There is an array which
|
||||
stores the position of the cut information for the left set and one for the
|
||||
right set as well as arrays for the cut information. Given that the lowest
|
||||
numbered processor after a cut is in the left set, the cut information is
|
||||
stored in the right set, and there is one fewer cut than the total number of
|
||||
processors, processor 0 has no cut information, so the 0 position of the right
|
||||
set array is empty and is used to store the position in the array that the
|
||||
first cut is stored. When this information is used to process an object,
|
||||
array position 0 in the right set array is used to determine the array
|
||||
position of the first cut. From there, which side of the cut the object is
|
||||
on is determined and that information is used to determine which cut to test
|
||||
the object against next. This process is repeated recursively until a
|
||||
terminal node is encountered which contains the processor number that the
|
||||
object belongs to.
|
||||
<p>
|
||||
When the parameter <a href="../ug_html/ug_alg_rcb.html">RCB_REUSE</a> is
|
||||
specified, the RCB algorithm attempts to use information from a previous
|
||||
RCB decomposition to generate an "initial guess" at the new decomposition.
|
||||
For problems that change little between invocations of RCB, using <a href="../ug_html/ug_alg_rcb.html">RCB_REUSE</a>
|
||||
can reduce the amount of data movement in RCB, improving the performance
|
||||
of the algorithm. When <a href="../ug_html/ug_alg_rcb.html">RCB_REUSE</a> is true,the coordinates of all objects obtained through query functions are passed through
|
||||
<a href="../ug_html/ug_interface_augment.html#Zoltan_LB_Point_Assign"><b>Zoltan_LB_Point_Assign</b></a>
|
||||
to determine their processor assignment in the previous RCB decomposition.
|
||||
The information for the objects is then sent to the new processor assignments
|
||||
using the <a href="../ug_html/ug_util_comm.html">unstructured communication utilities</a>
|
||||
to generate an initial condition matching the output of the previous RCB
|
||||
decomposition.
|
||||
The normal RCB algorithm is then applied to this new initial condition.
|
||||
|
||||
<BR>
|
||||
|
||||
<H3>
|
||||
Data Structure Definitions</H3>
|
||||
|
||||
<P>There are three major data structures in RCB and they are defined in
|
||||
<i>rcb/rcb.h</i> and <i>rcb/shared.h</i>. The points which are being load balanced are represented as a
|
||||
structure <i>Dot_Struct</i> which contains the location of the point, its weight, and
|
||||
its originating processor number. The nodes on the decomposition tree are
|
||||
represented by the structure <i>rcb_tree</i> which contains the position of the cut,
|
||||
the dimension that the cut is perpendicular to, and the node's parent and two
|
||||
children (if they exist) in the tree. The structure <i>RCB_Struct</i> is the RCB data
|
||||
structure which holds pointers to all of the other data structures needed for
|
||||
RCB. It contains an array of <i>Dot_Struct</i> to represent the points being load
|
||||
balanced, global and local IDs for the points, and an array of <i>rcb_tree</i> (whose length is the number of processors)
|
||||
which contains the decomposition tree.
|
||||
|
||||
<BR>
|
||||
|
||||
<H3>
|
||||
Parameters</H3>
|
||||
|
||||
<P>The parameters used by RCB and their default values are described in the
|
||||
<a href="../ug_html/ug_alg_rcb.html">RCB section</a> of the <B><A HREF="../ug_html/ug.html">Zoltan User's
|
||||
Guide</A></B>. These can be set by use of the <b>Zoltan_RCB_Set_Param</b> subroutine
|
||||
in the file <i>rcb/rcb.c</i>.
|
||||
|
||||
<p>
|
||||
When the parameter <a href="../ug_html/ug_alg_rcb.html">REDUCE_DIMENSIONS</a>
|
||||
is specified, the RCB algorithm will perform lower dimensional
|
||||
partitioning if the geometry is found to be degenerate. More information
|
||||
on detecting degenerate
|
||||
geometries may be found in another <a href="dev_degenerate.html">
|
||||
section</a>.
|
||||
|
||||
<BR>
|
||||
|
||||
<H3>
|
||||
Main Routine</H3>
|
||||
|
||||
<P>The main routine for RCB is <b>Zoltan_RCB</b> in the file <i>rcb/rcb.c</i>.
|
||||
|
||||
<BR>
|
||||
<BR>
|
||||
<BR>
|
||||
|
||||
<P>
|
||||
<HR WIDTH="100%">
|
||||
<BR>[<A HREF="dev.html">Table of
|
||||
Contents</A> | <a href="dev_rib.html">Next:
|
||||
Recursive Inertial Bisection (RIB)</a> | <A HREF="dev_test_script.html">
|
||||
Previous: Using the Test Script</A> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</BODY>
|
||||
</HTML>
|
108
thirdParty/Zoltan/docs/dev_html/dev_refs.html
vendored
Normal file
@ -0,0 +1,108 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="karen devine, kddevin@sandia.gov">
|
||||
<title> Zoltan Developer's Guide: References</title>
|
||||
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_driver.html">Next</a> | <a href="dev_cpp.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<h2>
|
||||
<a NAME="refs"></a>References</h2>
|
||||
|
||||
<ol>
|
||||
<li>
|
||||
<a NAME="BB87"></a>M. J. Berger and S. H. Bokhari. "A partitioning strategy
|
||||
for nonuniform problems on multiprocessors." <i>IEEE Trans. Computers</i>,
|
||||
C-36 (1987), 570-580.</li>
|
||||
|
||||
<li>
|
||||
<a NAME="Users_Guide"></a>K. Devine, B. Hendrickson, M. St.John, E. Boman,
|
||||
and C. Vaughan. "<a href="../ug_html/ug.html">Zoltan: A Dynamic Load-Balancing
|
||||
Library for Parallel Applications, User's Guide.</a>" Sandia National Laboratories
|
||||
Tech. Rep. SAND99-1377, Albuquerque, NM, 1999.</li>
|
||||
|
||||
<li>
|
||||
<a NAME="E97"></a>H. C. Edwards. <i>A Parallel Infrastructure For Scalable
|
||||
Adaptive Finite Element Methods and Its Application To Least Squares C^(inf)
|
||||
Collocation</i>. Ph.D. Dissertation, University of Texas at Austin, May,
|
||||
1997.</li>
|
||||
|
||||
<li>
|
||||
<a NAME="HD99"></a>B. Hendrickson and K. Devine. "Dynamic Load Balancing
|
||||
in Computational Mechanics." <i>Comp. Meth. Appl. Mech. Engrg.</i>, <b>184</b>
|
||||
(2000) 484-500.</li>
|
||||
|
||||
<li>
|
||||
<a NAME="Chaco"></a>B. Hendrickson and R. Leland. ``The Chaco User's
|
||||
Guide, version 2.0.'' Sandia National Laboratories Tech. Rep. SAND94-2692,
|
||||
Albuquerque, NM, 1994. <a href="http://cs.sandia.gov/CRF/chac.html">http://cs.sandia.gov/CRF/chac.html</a></li>
|
||||
|
||||
<li>
|
||||
<a NAME="ParMETIS"></a>G. Karypis and V. Kumar. ``ParMETIS:
|
||||
Parallel graph partitioning and sparse matrix ordering library.''
|
||||
Tech. Rep. 97-060, Dept. of Computer Science, Univ. of Minnesota, 1997.
|
||||
<a href="https://www-users.cs.umn.edu/~karypis/metis/parmetis/">https://www-users.cs.umn.edu/~karypis/metis/parmetis/</a></li>
|
||||
|
||||
<li>
|
||||
<a NAME="Jostle"></a>C. Walshaw. "Parallel Jostle Library Interface:
|
||||
Version 1.1.7." Tech. Rep., Univ. of Greenwich, London, 1995.
|
||||
<a href="https://www.gre.ac.uk/jostle">https://www.gre.ac.uk/jostle</a></li>
|
||||
</ol>
|
||||
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a> | <a href="dev_driver.html">Next:
|
||||
Using Test Driver</a> | <a href="dev_cpp.html">Previous:
|
||||
C++ Interface</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
163
thirdParty/Zoltan/docs/dev_html/dev_reftree.html
vendored
Normal file
@ -0,0 +1,163 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="william mitchell, william.mitchell@nist.gov">
|
||||
<title> Zoltan Developer's Guide: Refinement Tree</title>
|
||||
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a>
|
||||
| <a href="dev_hsfc.html">Next</a>
|
||||
| <a href="dev_phg.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<h2>
|
||||
Appendix: Refinement Tree</h2>
|
||||
|
||||
<h3>
|
||||
Overview of structure (algorithm)</h3>
|
||||
The refinement tree based partitioning algorithm was developed and implemented
|
||||
by <a href="https://math.nist.gov/~mitchell">William Mitchell</a> of the National Institute of Standards and Technology.
|
||||
It is similar to the Octree method except that it uses a tree representation
|
||||
of the refinement history instead of a geometry based octree. The method
|
||||
generates a space filling curve which is cut into <i>K</i> appropriately-sized pieces
|
||||
to define contiguous parts, where the size of a piece is the sum of the
|
||||
weights of the elements in that piece. <i>K</i>, the number of parts, is not
|
||||
necessarily equal to <i>P</i>, the number of processors. It is an appropriate load balancing
|
||||
method for grids that are generated by adaptive refinement when the refinement
|
||||
history is available. This implementation consists of two phases: the
|
||||
construction of the refinement tree, and the definition of the parts.
|
||||
<h4>
|
||||
Refinement Tree Construction</h4>
|
||||
The refinement tree consists of a root node and one node for each element
|
||||
in the refinement history. The children of the root node are the elements
|
||||
of the initial coarse grid. The children of all other nodes are the elements
|
||||
that were formed when the parent element was refined. Upon first invocation,
|
||||
the refinement tree is initialized. This creates the root node and initializes
|
||||
a hash table that maps global IDs into nodes of the refinement tree.
|
||||
It also queries the user for the elements of the initial grid and creates
|
||||
the children of the root node. Unless the user provides the order
|
||||
through which to traverse the elements of the initial grid, a path is
|
||||
determined through the initial elements along with the "in" vertex and
|
||||
"out" vertex of each element, i.e., the vertices through which the path
|
||||
passes to move from one element to the next.
|
||||
This path can be determined by a Hilbert space filling curve, Sierpinski
|
||||
space filling curve (triangles only), or an algorithm that attempts to make
|
||||
connected parts (connectivity is guaranteed for triangles and
|
||||
tetrahedra).
|
||||
The refinement tree is required to have all initial coarse grid elements,
|
||||
not just those that reside on the processor. However, this requirement is not
|
||||
imposed on the user; a communication step fills in the elements from other
|
||||
processors. This much of the tree persists throughout execution of the
|
||||
program. The remainder of the tree is reconstructed on each invocation of
|
||||
the refinement tree partitioner. The remainder of the tree is built through
|
||||
a tree traversal. At each node, the user is queried for the children of the
|
||||
corresponding element. If there are no children, the user is queried for
|
||||
the weight of the element. If there are children, the order of the children
|
||||
is determined such that a tree traversal produces a space filling curve.
|
||||
The user indicates what type of refinement was used to produce the children
|
||||
(bisection of triangles, quadrasection of quadrilaterals, etc.). For each
|
||||
supported type of refinement, a template based ordering is imposed. The
|
||||
template also maintains an "in" and "out" vertex for each element
|
||||
which are used by the template to determine the beginning and end of the space
|
||||
filling curve through the children. If the
|
||||
refinement is not among the types supported by templates, an exhaustive
|
||||
search is performed to find an appropriate order, unless the user provides
|
||||
the order.
|
||||
<h4>
|
||||
Partition algorithm</h4>
|
||||
The algorithm that determines the parts uses four traversals of the
|
||||
refinement tree. The first two traversals sum the weights in the tree.
|
||||
In the first traversal, each node gets the sum of the weights of all the
|
||||
descendant nodes that are assigned to this processor. The processors then
|
||||
exchange information to fill in the partial sums for the leaf elements
|
||||
that are not owned by this processor. (Note that an unowned leaf on one
|
||||
processor may be the root of a large subtree on another processor.)
|
||||
The second traversal completes the summation of the weights. The root
|
||||
now has the sum of all the weights, which, in conjunction with an array
|
||||
of relative part sizes, determines the desired weight of each part.
|
||||
Currently the array of part sizes are all equal, but in the future
|
||||
the array will be input to reflect heterogeneity in the system. The third
|
||||
traversal computes the partition by adding subtrees to a part
|
||||
until the size of the part meets the desired weight, and counts
|
||||
the number of elements to be exported. Finally, the fourth traversal
|
||||
constructs the export list.
|
||||
<h3>
|
||||
Data structures</h3>
|
||||
The implementation of the refinement tree algorithm uses three data
|
||||
structures which are contained in <i>reftree/reftree.h</i>. <i>Zoltan_Reftree_data_struct</i>
|
||||
is the structure pointed to by <i>zz->LB.Data_Structure</i>. It contains a pointer
|
||||
to the refinement tree root and a pointer to the hash table.
|
||||
<i>Zoltan_Reftree_hash_node</i> is an entry in the hash table. It consists of a global ID,
|
||||
a pointer to a refinement tree node, and a "next" pointer from which
|
||||
linked lists at each table entry are constructed to handle collisions.
|
||||
<i>Zoltan_Reftree_Struct</i> is
|
||||
a node of the refinement tree. It contains the global ID, local ID,
|
||||
pointers to the children, weight and summed weights, vertices of the
|
||||
element, "in" and "out" vertex, a flag to indicate if this element is
|
||||
assigned to this processor, and the new part number.
|
||||
<h3>
|
||||
Parameters</h3>
|
||||
There are two parameters. <a href="../ug_html/ug_alg_reftree.html">REFTREE_HASH_SIZE</a> determines the size of
|
||||
the hash table.
|
||||
<a href="../ug_html/ug_alg_reftree.html">REFTREE_INITPATH</a> determines which
|
||||
algorithm to use to find a path through the initial elements.
|
||||
Both are set by <b>Zoltan_Reftree_Set_Param</b> in the file <i>reftree/reftree_build.c</i>.
|
||||
<h3>
|
||||
Main routine</h3>
|
||||
The main routine is <b>Zoltan_Reftree_Part</b> in file <i>reftree/reftree_part.c</i>.
|
||||
<p>
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a>
|
||||
| <a href="dev_hsfc.html">Next: Hilbert Space-Filling Curve (HSFC)</a>
|
||||
| <a href="dev_phg.html">Previous: Hypergraph Partitioning</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
146
thirdParty/Zoltan/docs/dev_html/dev_rib.html
vendored
Normal file
@ -0,0 +1,146 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; U; SunOS 5.6 sun4m) [Netscape]">
|
||||
<META NAME="sandia.approved" CONTENT="SAND99-1376">
|
||||
<META NAME="author" CONTENT="karen devine, kddevin@sandia.gov">
|
||||
<TITLE> Zoltan Developer's Guide: RIB</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_parmetis.html">Next</a> | <a href="dev_rcb.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<H2>
|
||||
<A NAME="RIB"></A>Appendix: Recursive Inertial Bisection (RIB)</H2>
|
||||
|
||||
<H3>
|
||||
Outline of Algorithm</H3>
|
||||
|
||||
<P>The implementation of Recursive Inertial Bisection (RIB) in Zoltan is due
|
||||
due to Bruce Hendrickson and Robert Leland of Sandia National Laboratories for
|
||||
use in <a href="http://cs.sandia.gov/CRF/chac.html">Chaco</a>
|
||||
and was modified by Courtenay Vaughan. RIB is an algorithm
|
||||
similar to RCB (see the <B><A HREF="dev_rcb.html">appendix on RCB</A></B> for
|
||||
a description of RCB) in that it uses the coordinates of the objects to be
|
||||
balanced to do the load balancing. Similarly to RCB, the domain is
|
||||
recursively divided into two pieces until the number of subdomains needed is
|
||||
reached. In each stage of the division, the direction of the principle axis
|
||||
of the domain to be divided is calculated by determining an eigenvector of
|
||||
the inertial matrix. This direction vector is used to define a normal to a
|
||||
plane which is used to divide the domain into two pieces. This process is
|
||||
repeated until the desired number of subdomains is reached.
|
||||
|
||||
<P>The communication of objects being divided is handled by the same routine
|
||||
as is used by <B><A HREF="dev_rcb.html">RCB</A></B>. For applications which
|
||||
wish to add more objects to the decomposition at a later time
|
||||
(e.g., through <a href="../ug_html/ug_interface_augment.html#Zoltan_LB_Box_Assign"><b>Zoltan_LB_Box_Assign</b></a> or
|
||||
<a href="../ug_html/ug_interface_augment.html#Zoltan_LB_Point_Assign"><b>Zoltan_LB_Point_Assign</b></a>),
|
||||
information to
|
||||
do this can be retained during the decomposition phase. This information is
|
||||
kept if the parameter <a href="../ug_html/ug_alg_rib.html">KEEP_CUTS</a> is set during the decomposition.
|
||||
The process is similar to that used for RCB, but the
|
||||
information kept is different. For each RIB cut, the center of mass
|
||||
of the subdomain which is cut, the direction vector, and a distance from
|
||||
the center of mass to the cutting plane have to be saved.
|
||||
|
||||
<BR>
|
||||
|
||||
<H3>
|
||||
Data Structure Definitions</H3>
|
||||
|
||||
<P>There are three major data structures in RIB and they are defined in
|
||||
<i>rcb/rib.h</i> and <i>rcb/shared.h</i>. The points which are being load balanced are represented as a
|
||||
structure <i>Dot_Struct</i> which contains the location of the point, its weight, and
|
||||
the originating processor's number. The nodes on the decomposition tree are
|
||||
represented by the structure <i>rib_tree</i> which contains the position of the cut,
|
||||
the center of mass of the subdomain which is being cut, the direction vector
|
||||
of the principle axis of the subdomain, and the node's parent and two
|
||||
children (if they exist) in the tree. The structure RIB_Struct is the RIB data
|
||||
structure which holds pointers to all of the other data structures needed for
|
||||
RIB. It contains an array of <i>Dot_Struct</i> to represent the points being load
|
||||
balanced, global and local IDs of the points, an array of <i>rib_tree</i> (whose length is the number of processors) which
|
||||
contains the decomposition tree, and the dimension of the problem.
|
||||
|
||||
<BR>
|
||||
|
||||
<H3>
|
||||
Parameters</H3>
|
||||
|
||||
<P>The parameters used by RIB and their default values are described in the
|
||||
<a href="../ug_html/ug_alg_rib.html">RIB</a> section of the <B><A HREF="../ug_html/ug.html">Zoltan User's
|
||||
Guide</A></B>. These can be set by use of the <b>Zoltan_RIB_Set_Param</b> subroutine
|
||||
in the file <i>rcb/rib.c</i>.
|
||||
<p>
|
||||
When the parameter <a href="../ug_html/ug_alg_rib.html">REDUCE_DIMENSIONS</a>
|
||||
is specified, the RIB algorithm will perform lower dimensional
|
||||
partitioning if the geometry is found to be degenerate. More information
|
||||
on detecting degenerate
|
||||
geometries may be found in another <a href="dev_degenerate.html">
|
||||
section</a>.
|
||||
|
||||
|
||||
<BR>
|
||||
|
||||
<H3>
|
||||
Main Routine</H3>
|
||||
|
||||
<P>The main routine for RIB is <b>Zoltan_RIB</b> in the file <i>rcb/rib.c</i>.
|
||||
|
||||
<BR>
|
||||
<BR>
|
||||
<BR>
|
||||
|
||||
<P>
|
||||
<HR WIDTH="100%">
|
||||
<BR>[<A HREF="dev.html">Table of
|
||||
Contents</A> | <a href="dev_parmetis.html">Next: ParMETIS and
|
||||
Jostle</a> | <A HREF="dev_rcb.html">Previous: Recursive
|
||||
Coordinate Bisection (RCB)</A> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</BODY>
|
||||
</HTML>
|
78
thirdParty/Zoltan/docs/dev_html/dev_services.html
vendored
Normal file
@ -0,0 +1,78 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="karen devine, kddevin@sandia.gov">
|
||||
<title> Zoltan Developer's Guide: Services</title>
|
||||
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_services_params.html">Next</a> | <a href="dev_lb_structs.html">Previous</a></i></b></div>
|
||||
|
||||
<h2>
|
||||
<a NAME="services"></a>Services</h2>
|
||||
Within Zoltan, several services are provided to simplify development of new algorithms
|
||||
in the library. Each service consists of a routine or set of routines that is
|
||||
compiled directly into Zoltan. Use of these services makes debugging easier
|
||||
and provides a uniform look to the algorithms in the library. The
|
||||
services available are listed below.
|
||||
<blockquote>
|
||||
<br><a href="dev_services_params.html">Parameter Setting Routines</a>
|
||||
<br><a href="dev_services_parallel.html">Parallel Computing Routines</a>
|
||||
<br><a href="dev_services_objlist.html">Object List Function</a>
|
||||
<br><a href="dev_services_hash.html">Hash Function</a>
|
||||
<br><a href="dev_services_time.html">Timing Routines</a>
|
||||
<br><a href="dev_services_debug.html">Debugging Services</a></blockquote>
|
||||
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a> | <a href="dev_services_params.html">Next:
|
||||
Parameter Setting Routines</a> | <a href="dev_lb_structs.html">Previous: Data Structures</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
278
thirdParty/Zoltan/docs/dev_html/dev_services_debug.html
vendored
Normal file
@ -0,0 +1,278 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="karen devine, kddevin@sandia.gov">
|
||||
<title> Zoltan Developer's Guide: Debugging Services</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_add.html">Next</a> | <a href="dev_services_zoltantimer.html">Previous</a></i></b></div>
|
||||
|
||||
<!------------------------------------------------------------------------->
|
||||
<h2>
|
||||
<a NAME="Debugging"></a>Debugging Services</h2>
|
||||
Execution of code for debugging can be controlled by algorithm specific
|
||||
parameters or by the Zoltan key parameter <a href="../ug_html/ug_param.html#Debug Levels in Zoltan">DEBUG_LEVEL</a>.
|
||||
The value of the <i>Debug_Level</i> field of the <b><a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a></b>
|
||||
structure can be tested to determine whether the user desires debugging
|
||||
information. Several constants (<b>ZOLTAN_DEBUG_*</b>) are defined in
|
||||
<i>zz/zz_const.h</i>; the <i>Debug_Level</i> field should be compared to
|
||||
these values so that future changes to the debugging levels can be made
|
||||
easily. An <a href="#Debug Example">example</a> is included below.
|
||||
<p>Several macros for common debugging operations are provided. The
|
||||
macros can be used to generate function trace information, such as when
|
||||
control enters or exits a function or reaches a certain point in the execution
|
||||
of a function.
|
||||
<blockquote><a href="#ZOLTAN_TRACE_ENTER">ZOLTAN_TRACE_ENTER</a>
|
||||
<br><a href="#ZOLTAN_TRACE_EXIT">ZOLTAN_TRACE_EXIT</a>
|
||||
<br><a href="#ZOLTAN_TRACE_DETAIL">ZOLTAN_TRACE_DETAIL</a></blockquote>
|
||||
These macros produce output depending upon the value of the <a href="../ug_html/ug_param.html#Debug Levels in Zoltan">DEBUG_LEVEL</a>
|
||||
parameter set in Zoltan by a call to <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>.
|
||||
The macros are defined in <i>zz/zz_const.h.</i>
|
||||
<p><a href="#Debug Example">Examples</a> of the use of these macros can
|
||||
be found <a href="#Debug Example">below</a> and in <i>lb/lb_balance.c</i>
|
||||
and <i>rcb/rcb.c.</i>
|
||||
<p>
|
||||
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr>
|
||||
<a NAME="ZOLTAN_TRACE_ENTER"></a>
|
||||
<hr>
|
||||
<b>ZOLTAN_TRACE_ENTER</b>(struct <b><a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a></b>
|
||||
*<i>zz</i>, char *<i>function_name</i>);
|
||||
<br>
|
||||
<hr>
|
||||
<b>ZOLTAN_TRACE_ENTER</b> prints to <i>stdout</i> a message stating that
|
||||
a given processor is entering a function. The call to the macro should
|
||||
be included at the beginning of major functions for which debugging information
|
||||
is desired. Output includes the processor number and the function
|
||||
name passed as an argument to the macro. The amount of output produced
|
||||
is controlled by the value of the <a href="../ug_html/ug_param.html#Debug Levels in Zoltan">DEBUG_LEVEL</a>
|
||||
parameter set in Zoltan by a call to <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>.
|
||||
<br>
|
||||
<table WIDTH="100%" NOSAVE >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="20%"><b>Arguments:</b></td>
|
||||
|
||||
<td WIDTH="80%"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>zz</i></td>
|
||||
|
||||
<td>Pointer to a Zoltan structure.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE> <i>function_name</i></td>
|
||||
|
||||
<td>Character string containing the function's name.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><b>Output:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> </td>
|
||||
|
||||
<td>ZOLTAN (Processor #) Entering <i>function_name</i></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr>
|
||||
<a NAME="ZOLTAN_TRACE_EXIT"></a>
|
||||
<hr>
|
||||
<b>ZOLTAN_TRACE_EXIT</b>(struct <b><a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a></b>
|
||||
*<i>zz</i>, char *<i>function_name</i>);
|
||||
<br>
|
||||
<hr>
|
||||
<b>ZOLTAN_TRACE_EXIT</b> prints to <i>stdout</i> a message stating that
|
||||
a given processor is exiting a function. The call to the macro should
|
||||
be included at the end of major functions (and before return statements)
|
||||
for which debugging information is desired. Output includes the processor
|
||||
number and the function name passed as an argument to the macro.
|
||||
The amount of output produced is controlled by the value of the <a href="../ug_html/ug_param.html#Debug Levels in Zoltan">DEBUG_LEVEL</a>
|
||||
parameter set in Zoltan by a call to <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>.
|
||||
<br>
|
||||
<table WIDTH="100%" NOSAVE >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="20%"><b>Arguments:</b></td>
|
||||
|
||||
<td WIDTH="80%"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><i> zz</i></td>
|
||||
|
||||
<td>Pointer to a Zoltan structure.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><i> function_name</i></td>
|
||||
|
||||
<td>Character string containing the function's name.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><b>Output:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> </td>
|
||||
|
||||
<td>ZOLTAN (Processor #) Leaving <i>function_name</i></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr>
|
||||
<a NAME="ZOLTAN_TRACE_DETAIL"></a>
|
||||
<hr WIDTH="100%">
|
||||
<b>ZOLTAN_TRACE_DETAIL</b>(struct
|
||||
<b><a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a></b>
|
||||
*<i>zz</i>, char *<i>function_name</i>, char *<i>message</i>);
|
||||
<br>
|
||||
<hr>
|
||||
<b>ZOLTAN_TRACE_DETAIL</b> prints to <i>stdout</i> a message specified
|
||||
by the developer. It can be used to indicate how far execution
|
||||
has progressed through a routine. It can also be used to print values
|
||||
of variables. See the example below. Output includes the processor
|
||||
number, the function name passed as an argument to the macro, and a user-defined
|
||||
message passed to the macro. The amount of output produced is controlled
|
||||
by the value of the <a href="../ug_html/ug_param.html#Debug Levels in Zoltan">DEBUG_LEVEL</a>
|
||||
parameter set in Zoltan by a call to <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>.
|
||||
<br>
|
||||
<table WIDTH="100%" NOSAVE >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="20%"><b>Arguments:</b></td>
|
||||
|
||||
<td WIDTH="80%"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>zz</i></td>
|
||||
|
||||
<td>Pointer to a Zoltan structure.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE> <i>function_name</i></td>
|
||||
|
||||
<td>Character string containing the function's name.</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE> <i>message</i></td>
|
||||
|
||||
<td>Character string containing a message defined by the developer.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><b>Output:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> </td>
|
||||
|
||||
<td>ZOLTAN (Processor #) <i>function_name: message</i></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<!------------------------------------------------------------------------->
|
||||
<p>
|
||||
<hr><a NAME="Debug Example"></a>
|
||||
<br><b>Example:</b>
|
||||
<br>An example using the debugging macros in shown below.
|
||||
<tt>
|
||||
<ul>#include "zoltan.h"
|
||||
<br>void example(struct <b><a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a></b>
|
||||
*zz)
|
||||
<br>{
|
||||
<br>char *yo = "example";
|
||||
<br>char tmp[80];
|
||||
<br>int a, b;
|
||||
<br>
|
||||
<ul><a href="#ZOLTAN_TRACE_ENTER">ZOLTAN_TRACE_ENTER</a>(zz, yo);
|
||||
<br>a = function_one(zz);
|
||||
<br><a href="#ZOLTAN_TRACE_DETAIL">ZOLTAN_TRACE_DETAIL</a>(zz, yo, "After function_one");
|
||||
<br>b = function_two(zz);
|
||||
<br>sprintf(tmp, "b = %d a = %d", b, a);
|
||||
<br><a href="#ZOLTAN_TRACE_DETAIL">ZOLTAN_TRACE_DETAIL</a>(zz, yo, tmp);
|
||||
<br>if (zz->Debug_Level >= ZOLTAN_DEBUG_ALL)
|
||||
<br> printf("Total = %d\n", a+b);
|
||||
<br><a href="#ZOLTAN_TRACE_EXIT">ZOLTAN_TRACE_EXIT</a>(zz, yo);</ul>
|
||||
}</ul>
|
||||
</tt>
|
||||
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a> | <a href="dev_add.html">Next:
|
||||
Adding New Load-Balancing Algorithms</a> | <a href="dev_services_zoltantimer.html">Previous:
|
||||
ZOLTAN_TIMER</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
131
thirdParty/Zoltan/docs/dev_html/dev_services_hash.html
vendored
Normal file
@ -0,0 +1,131 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.6 sun4m) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="karen devine, kddevin@sandia.gov">
|
||||
<title> Zoltan Developer's Guide: Hash function</title>
|
||||
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="dev.html">Zoltan Developer's Guide</a>
|
||||
| <a href="dev_services_time.html">Next</a> | <a href="dev_services_objlist.html">Previous</a></i></b></div>
|
||||
|
||||
<!------------------------------------------------------------------------->
|
||||
|
||||
<h2>
|
||||
Hash Function</h2>
|
||||
Zoltan provides a hash function for global and local IDs. The hash function
|
||||
computes a non-negative integer value in a certain range<i> </i>from an
|
||||
ID.
|
||||
<blockquote><b><a href="#Zoltan_Hash">Zoltan_Hash</a></b> : hash a global
|
||||
or local ID into non-negative integers</blockquote>
|
||||
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr>
|
||||
<a NAME="Zoltan_Hash"></a>
|
||||
<hr>
|
||||
unsigned int<b> Zoltan_Hash</b>(
|
||||
<b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR
|
||||
</a></b><i>key</i>,
|
||||
int <i>num_id_entries</i>, unsigned int <i>n</i>);
|
||||
<hr>
|
||||
<b>Zoltan_Hash </b>computes a hash value for a global or local ID. Note
|
||||
that this hash function has been optimized for 32-bit integer systems,
|
||||
but should work on any machine. The current implementation uses a
|
||||
simple multiplicative hash function based on Don Knuth's golden ratio method;
|
||||
see <i>The Art of Computer Programming,</i> vol. 3.
|
||||
<br>
|
||||
<table WIDTH="100%" >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="20%"><b>Arguments:</b></td>
|
||||
|
||||
<td WIDTH="80%"></td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP> <i>key</i></td>
|
||||
|
||||
<td>A pointer to the ID to be hashed.</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td> <i>num_id_entries</i></td>
|
||||
|
||||
<td>The length of the ID (as given by <b><a href="../ug_html/ug_param.html#NUM_GID_ENTRIES">NUM_GID_ENTRIES</a></b>
|
||||
or <b><a href="../ug_html/ug_param.html#NUM_LID_ENTRIES">NUM_LID_ENTRIES</a></b>).</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP> <i>n</i></td>
|
||||
|
||||
<td>The computed hash value will be between 0 and <i>n</i>-1. </td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td><b>Return Value:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td> unsigned int</td>
|
||||
|
||||
<td>The hash value (between 0<i> </i>and <i>n</i>-1). </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a> | <a href="dev_services_time.html">Next:
|
||||
Timing Routines</a> | <a href="dev_services_objlist.html">Previous:
|
||||
Object List Function</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
324
thirdParty/Zoltan/docs/dev_html/dev_services_objlist.html
vendored
Normal file
@ -0,0 +1,324 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.76 [en] (X11; U; Linux 2.4.2-2smp i686) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="karen devine, kddevin@sandia.gov">
|
||||
<title> Zoltan Developer's Guide: Object List function</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="dev.html">Zoltan Developer's Guide</a>
|
||||
| <a href="dev_services_hash.html">Next</a> | <a href="dev_services_parallel.html">Previous</a></i></b></div>
|
||||
<!------------------------------------------------------------------------->
|
||||
<h2>
|
||||
Common Functions for Querying Applications</h2>
|
||||
|
||||
Many Zoltan algorithms need to query applications for similar data.
|
||||
The following functions provide simple, uniform query functionality for
|
||||
algorithm developers:
|
||||
<blockquote>
|
||||
<b><a href="#Zoltan_Get_Obj_List">Zoltan_Get_Obj_List</a></b><br>
|
||||
<b><a href="#Zoltan_Get_Coordinates">Zoltan_Get_Coordinates</a></b><br>
|
||||
</blockquote>
|
||||
These functions provide a uniform method of calling the query functions
|
||||
registered by an application.
|
||||
Their use simplifies new algorithm development and code
|
||||
maintenance. Usage examples are in <i>rcb/shared.c</i>.
|
||||
|
||||
<p><b><a href="#Zoltan_Get_Obj_List">Zoltan_Get_Obj_List</a></b> can be called
|
||||
from any Zoltan algorithm to obtain a list of object IDs, weights, and
|
||||
part assignments.
|
||||
|
||||
<p>Given a list of object IDs,
|
||||
<b><a href="#Zoltan_Get_Coordinates">Zoltan_Get_Coordinates</a></b>
|
||||
can be called from any Zoltan algorithm to obtain a list of coordinates for
|
||||
those IDs.
|
||||
|
||||
<p><b><i>Note that, contrary to most Zoltan functions, these functions allocate
|
||||
memory for their return lists.</i></b>
|
||||
|
||||
<p><!------------------------------------------------------------------------->
|
||||
<hr><a NAME="Zoltan_Get_Obj_List"></a>
|
||||
<hr>int<b> Zoltan_Get_Obj_List</b>(
|
||||
<br> struct <b><a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a></b> *<i>zz</i>,
|
||||
<br> int *<i>num_obj</i>,
|
||||
<br> <b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> *<i>global_ids</i>,
|
||||
<br> <b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> *<i>local_ids</i>,
|
||||
<br> int <i>wdim</i>,
|
||||
<br> float **<i>objwgts</i>,
|
||||
<br> int **<i>parts</i>);
|
||||
<hr><b>Zoltan_Get_Obj_List</b> returns arrays of global and local IDs,
|
||||
part assignments, and
|
||||
object weights (if
|
||||
<b><a href="../ug_html/ug_param.html#General_Parameters">OBJ_WEIGHT_DIM</a></b>
|
||||
is not zero) for all objects on a processor. It is a convenient function
|
||||
that frees algorithm developers from calling
|
||||
<b><a href="../ug_html/ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</a></b>,
|
||||
<b><a href="../ug_html/ug_query_lb.html#ZOLTAN_FIRST_OBJ_FN">ZOLTAN_FIRST_OBJ_FN</a></b>,
|
||||
<b><a href="../ug_html/ug_query_lb.html#ZOLTAN_NEXT_OBJ_FN">ZOLTAN_NEXT_OBJ_FN</a></b>,
|
||||
and
|
||||
<b><a href="../ug_html/ug_query_lb.html#ZOLTAN_PART_FN">ZOLTAN_PART_FN</a></b>
|
||||
query functions directly.
|
||||
<br>
|
||||
<table WIDTH="100%" NOSAVE >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="20%" NOSAVE><b>Arguments:</b></td>
|
||||
|
||||
<td WIDTH="80%"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>zz</i></td>
|
||||
|
||||
<td>A pointer to the Zoltan structure created by <b><a href="../ug_html/ug_interface_init.html#Zoltan_Create">Zoltan_Create</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td> <i>num_obj</i></td>
|
||||
|
||||
<td>Upon return, the number of objects.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td> <i>global_ids</i></td>
|
||||
|
||||
<td>Upon return, an array of global IDs of objects on the current processor.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>local_ids</i></td>
|
||||
|
||||
<td>Upon return, an array of local IDs of objects on the current processor.
|
||||
NULL is returned when
|
||||
<a href="../ug_html/ug_param.html#NUM_LID_ENTRIES">NUM_LID_ENTRIES</a>
|
||||
is zero.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>wdim</i></td>
|
||||
|
||||
<td>The number of weights associated with an object (typically 1), or 0
|
||||
if weights are not requested.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>objwgts</i></td>
|
||||
|
||||
<td>Upon return, an array of object weights. Weights for object <i>i</i>
|
||||
are stored in
|
||||
<i>objwgts</i>[<i>i</i>*<i>wdim</i>:(<i>i</i>+1)*<i>wdim</i>-1], for
|
||||
<i>i</i>=0,1,...,<i>num_obj</i>-1.
|
||||
If <i>wdim</i> is zero, the return value of objwgts is undefined and may
|
||||
be NULL.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>parts</i></td>
|
||||
|
||||
<td>Upon return, an array of part assignments. Object <i>i</i>
|
||||
is currently in part <i>parts[i]</i>.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Returned value:</b></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><a href="../ug_html/ug_interface.html#Error Codes">Error code</a>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Required Query Functions:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><b><a href="../ug_html/ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</a></b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><b><a href="../ug_html/ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</a></b>
|
||||
or <b><a href="../ug_html/ug_query_lb.html#ZOLTAN_FIRST_OBJ_FN">ZOLTAN_FIRST_OBJ_FN</a></b>/<b><a href="../ug_html/ug_query_lb.html#ZOLTAN_NEXT_OBJ_FN">ZOLTAN_NEXT_OBJ_FN</a></b>
|
||||
pair</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Optional Query Functions:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><b><a href="../ug_html/ug_query_lb.html#ZOLTAN_PART_FN">ZOLTAN_PART_FN</a></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p><!------------------------------------------------------------------------->
|
||||
<hr><a NAME="Zoltan_Get_Coordinates"></a>
|
||||
<hr>int<b> Zoltan_Get_Coordinates</b>(
|
||||
<br> struct <b><a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a></b> *<i>zz</i>,
|
||||
<br> int <i>num_obj</i>,
|
||||
<br> <b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>global_ids</i>,
|
||||
<br> <b><a href="../ug_html/ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>local_ids</i>,
|
||||
<br> int *<i>num_dim</i>,
|
||||
<br> double **<i>coords</i>);
|
||||
<hr>
|
||||
Given lists of object IDs,
|
||||
<b>Zoltan_Get_Coordinates</b> returns the dimensionality of the problem and
|
||||
an array of coordinates of the objects. It is a convenient function
|
||||
that frees algorithm developers from calling
|
||||
<b><a href="../ug_html/ug_query_lb.html#ZOLTAN_NUM_GEOM_FN">ZOLTAN_NUM_GEOM_FN</a></b>,
|
||||
<b><a href="../ug_html/ug_query_lb.html#ZOLTAN_GEOM_MULTI_FN">ZOLTAN_GEOM_MULTI_FN</a></b>,
|
||||
and
|
||||
<b><a href="../ug_html/ug_query_lb.html#ZOLTAN_GEOM_FN">ZOLTAN_GEOM_FN</a></b>
|
||||
query functions directly.
|
||||
<br>
|
||||
<table WIDTH="100%" NOSAVE >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="20%" NOSAVE><b>Arguments:</b></td>
|
||||
|
||||
<td WIDTH="80%"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>zz</i></td>
|
||||
|
||||
<td>A pointer to the Zoltan structure created by <b><a href="../ug_html/ug_interface_init.html#Zoltan_Create">Zoltan_Create</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td> <i>num_obj</i></td>
|
||||
|
||||
<td>The number of objects.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td> <i>global_ids</i></td>
|
||||
|
||||
<td>An array of global IDs of objects on the current processor.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>local_ids</i></td>
|
||||
|
||||
<td>An array of local IDs of objects on the current processor.
|
||||
<i>local_ids</i> is NULL when
|
||||
<a href="../ug_html/ug_param.html#NUM_LID_ENTRIES">NUM_LID_ENTRIES</a>
|
||||
is zero.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>num_dim</i></td>
|
||||
|
||||
<td>Upon return, the number of coordinates for each object (typically 1, 2 or
|
||||
3).
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>coords</i></td>
|
||||
|
||||
<td>Upon return, an array of coordinates for the objects. Coordinates for
|
||||
object <i>i</i>
|
||||
are stored in
|
||||
<i>coords</i>[<i>i</i>*<i>num_dim</i>:(<i>i</i>+1)*<i>num_dim</i>-1], for
|
||||
<i>i</i>=0,1,...,<i>num_obj</i>-1.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Returned value:</b></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><a href="../ug_html/ug_interface.html#Error Codes">Error code</a>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Required Query Functions:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><b><a href="../ug_html/ug_query_lb.html#ZOLTAN_NUM_GEOM_FN">ZOLTAN_NUM_GEOM_FN</a></b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td>
|
||||
<b><a href="../ug_html/ug_query_lb.html#ZOLTAN_GEOM_MULTI_FN">ZOLTAN_GEOM_MULTI_FN</a></b>
|
||||
or
|
||||
<b><a href="../ug_html/ug_query_lb.html#ZOLTAN_GEOM_FN">ZOLTAN_GEOM_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p><!------------------------------------------------------------------------->
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a> | <a href="dev_services_hash.html">Next:
|
||||
Hash Function</a> | <a href="dev_services_parallel.html">Previous:
|
||||
Parallel Routines</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
254
thirdParty/Zoltan/docs/dev_html/dev_services_parallel.html
vendored
Normal file
@ -0,0 +1,254 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; U; SunOS 4.1.3_U1 sun4m) [Netscape]">
|
||||
<META NAME="sandia.approved" CONTENT="SAND99-1376">
|
||||
<META NAME="author" CONTENT="karen devine, kddevin@sandia.gov">
|
||||
|
||||
<TITLE> Zoltan Developer's Guide: Parallel Routines</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_services_objlist.html">Next</a> | <a href="dev_services_params.html">Previous</a></i></b></div>
|
||||
<!------------------------------------------------------------------------->
|
||||
|
||||
|
||||
<H2>
|
||||
<A NAME="parallel_compute"></A>Parallel Computing Routines</H2>
|
||||
Parallel computing utilities are described in this section.
|
||||
<BLOCKQUOTE><B><A HREF="#Zoltan_Print_Sync_Start">Zoltan_Print_Sync_Start</A></B>
|
||||
/ <B><A HREF="#Zoltan_Print_Sync_End">Zoltan_Print_Sync_End</A></B>: provide
|
||||
synchronization of processors for I/O (with <A HREF="#print_sync_example">example</A>).
|
||||
<BR><B><A HREF="#Zoltan_Print_Stats">Zoltan_Print_Stats</A></B> : print statistics
|
||||
about a parallel variable.</BLOCKQUOTE>
|
||||
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr>
|
||||
<A NAME="Zoltan_Print_Sync_Start"></A>
|
||||
<HR>
|
||||
void <B>Zoltan_Print_Sync_Start</B>(MPI_Comm <i>communicator</i>,
|
||||
int <I>do_print_line</I>);
|
||||
<HR>
|
||||
|
||||
<P>The <B>Zoltan_Print_Sync_Start</B> function is adapted from work of John
|
||||
Shadid for the MPSalsa project at Sandia National Laboratories. With <B><A HREF="#Zoltan_Print_Sync_End">Zoltan_Print_Sync_End</A></B>,
|
||||
it provides synchronization so that one processor in the Zoltan
|
||||
communicator can complete its I/O before the next processor begins its
|
||||
I/O. This synchronization utility is useful for debugging algorithms, as
|
||||
it allows the output from processors to be produced in an organized manner.
|
||||
It is, however, a serializing process, and thus, does not scale well to
|
||||
large number of processors.
|
||||
|
||||
<P><B>Zoltan_Print_Sync_Start</B> should called by each processor in the MPI
|
||||
communicator before the desired I/O is performed. <B><A HREF="#Zoltan_Print_Sync_End">Zoltan_Print_Sync_End</A></B>
|
||||
is called by each processor after the I/O is performed. No communication
|
||||
can be performed between calls to <B>Zoltan_Print_Sync_Start</B> and <B><A HREF="#Zoltan_Print_Sync_End">Zoltan_Print_Sync_End</A></B>.
|
||||
See the <A HREF="#print_sync_example">example</A> below for usage of <B>Zoltan_Print_Sync_Start</B>.
|
||||
<BR>
|
||||
<TABLE WIDTH="100%" >
|
||||
<TR VALIGN=TOP>
|
||||
<TD VALIGN=TOP WIDTH="20%"><B>Arguments:</B></TD>
|
||||
|
||||
<TD WIDTH="80%"></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP> <I>communicator</I></TD>
|
||||
|
||||
<TD>The MPI communicator containing all processors to participate in the
|
||||
synchronization.
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP> <I>do_print_line</I></TD>
|
||||
|
||||
<TD>A flag indicating whether to print a line of "#" characters before
|
||||
and after the synchronization block. If <I>do_print_line</I> is TRUE, a
|
||||
line is printed; no line is printed otherwise.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
|
||||
<P>
|
||||
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr>
|
||||
<A NAME="Zoltan_Print_Sync_End"></A>
|
||||
<HR>
|
||||
void <B>Zoltan_Print_Sync_End</B>(MPI_Comm <i>communicator</i>,
|
||||
int <I>do_print_line</I>);
|
||||
<HR>
|
||||
|
||||
<P>The <B>Zoltan_Print_Sync_End </B>function is adapted from work of John Shadid
|
||||
for the MPSalsa project at Sandia National Laboratories. With <B><A HREF="#Zoltan_Print_Sync_Start">Zoltan_Print_Sync_Start</A></B>,
|
||||
it provides synchronization so that one processor in the Zoltan
|
||||
communicator can complete its I/O before the next processor begins its
|
||||
I/O. This synchronization utility is useful for debugging algorithms, as
|
||||
it allows the output from processors to be produced in an organized manner.
|
||||
It is, however, a serializing process, and thus, does not scale well to
|
||||
large number of processors.
|
||||
|
||||
<P><B><A HREF="#Zoltan_Print_Sync_Start">Zoltan_Print_Sync_Start</A></B> should
|
||||
called by each processor in the MPI communicator before the desired I/O
|
||||
is performed. <B>Zoltan_Print_Sync_End</B> is called by each processor after
|
||||
the I/O is performed. No communication can be performed between calls to
|
||||
<B><A HREF="#Zoltan_Print_Sync_Start">Zoltan_Print_Sync_Start</A></B> and <B>Zoltan_Print_Sync_End</B>.
|
||||
See the <A HREF="#print_sync_example">example</A> below for usage of <B>Zoltan_Print_Sync_End</B>.
|
||||
<BR>
|
||||
<TABLE WIDTH="100%" >
|
||||
<TR VALIGN=TOP>
|
||||
<TD VALIGN=TOP WIDTH="20%"><B>Arguments:</B></TD>
|
||||
|
||||
<TD WIDTH="80%"></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP> <I>communicator</I></TD>
|
||||
|
||||
<TD>The MPI communicator containing all processors to participate in the
|
||||
synchronization.
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP> <I>do_print_line</I></TD>
|
||||
|
||||
<TD>A flag indicating whether to print a line of "#" characters before
|
||||
and after the synchronization block. If <I>do_print_line</I> is TRUE, a
|
||||
line is printed; no line is printed otherwise.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr>
|
||||
<A NAME="Zoltan_Print_Stats"></A>
|
||||
<HR WIDTH="100%">
|
||||
void <B>Zoltan_Print_Stats</B>(MPI_Comm <i>comm</i>, int <i>debug_proc</i>,
|
||||
double <i>x</i>, char <i>*msg</i>);
|
||||
<BR>
|
||||
<HR WIDTH="100%">
|
||||
<BR>Zoltan_Print_Stats is a very simple routine that computes the maximum and
|
||||
sum of the variable <I>x</I> over all processors associated with the MPI
|
||||
communicator <i>comm</i>.
|
||||
It also computes and prints the imbalance
|
||||
of <I>x</I>, that is, the maximum value divided by the average minus one.
|
||||
If <I>x </I>has the same value on all processors, the imbalance is zero.
|
||||
<p>
|
||||
<TABLE BORDER=0 WIDTH="100%" NOSAVE >
|
||||
<tr>
|
||||
<TD VALIGN=TOP WIDTH="20%"><B>Arguments:</B></TD>
|
||||
<td WIDTH="80%"></td>
|
||||
</tr>
|
||||
<TR>
|
||||
<TD> <I>comm </I></TD>
|
||||
|
||||
<TD>The MPI Communicator to be used in maximum and sum operations.
|
||||
</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD> <I>debug_proc </I></TD>
|
||||
|
||||
<TD>The processor from which output should be printed.
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
|
||||
<TR>
|
||||
<TD> <I>x</I></TD>
|
||||
|
||||
<TD>The variable of which one wishes to display statistics.</TD>
|
||||
</TR>
|
||||
|
||||
<TR NOSAVE>
|
||||
<TD> <I>msg</I></TD>
|
||||
|
||||
<TD NOSAVE>A string that typically describes the meaning of <I>x.</I></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<HR WIDTH="100%">
|
||||
<H4>
|
||||
|
||||
<!------------------------------------------------------------------------->
|
||||
|
||||
<HR WIDTH="100%"><A NAME="print_sync_example"></A><B>Example Using Zoltan_Print_Sync_Start/Zoltan_Print_Sync_End</B></H4>
|
||||
|
||||
<CENTER><TABLE BORDER=2 COLS=1 WIDTH="90%" NOSAVE >
|
||||
<TR>
|
||||
<TD><TT>...</TT>
|
||||
<BR><TT>if (zz->Debug_Level >= ZOLTAN_DEBUG_ALL) {</TT>
|
||||
<BR><TT> int i;</TT>
|
||||
<BR><TT> Zoltan_Print_Sync_Start(zz->Communicator, TRUE);</TT>
|
||||
<BR><TT> printf("Zoltan: Objects to be exported from Proc
|
||||
%d\n", zz->Proc);</TT>
|
||||
<BR><TT> for (i = 0; i < *num_export_objs; i++) {</TT>
|
||||
<BR><TT> printf("
|
||||
Obj: ");</tt>
|
||||
<BR><TT> ZOLTAN_PRINT_GID(zz, &((*export_global_ids)[i*zz->Num_GID]));
|
||||
<BR><TT> printf(" Destination: %4d\n",</TT>
|
||||
<BR><TT>
|
||||
(*export_procs)[i]);</TT>
|
||||
<BR><TT> }</TT>
|
||||
<BR><TT> Zoltan_Print_Sync_End(zz->Communicator, TRUE);</TT>
|
||||
<BR><TT>}</TT></TD>
|
||||
</TR>
|
||||
|
||||
<CAPTION ALIGN=BOTTOM><I>Example usage of Zoltan_Print_Sync_Start and Zoltan_Print_Sync_End
|
||||
to synchronize output among processors. (Taken from Zoltan_LB_Partition in
|
||||
lb/lb_balance.c.)</I></CAPTION>
|
||||
</TABLE></CENTER>
|
||||
|
||||
|
||||
<P>
|
||||
<HR WIDTH="100%">
|
||||
<BR>[<A HREF="dev.html">Table of Contents</A> | <A HREF="dev_services_objlist.html">Next:
|
||||
Object List Function</A> | <A HREF="dev_services_params.html">Previous:
|
||||
Parameter Setting Routines</A> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</BODY>
|
||||
</HTML>
|
504
thirdParty/Zoltan/docs/dev_html/dev_services_params.html
vendored
Normal file
@ -0,0 +1,504 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="karen devine, kddevin@sandia.gov">
|
||||
<title> Zoltan Developer's Guide: Parameter Setting Routines</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_services_parallel.html">Next</a> | <a href="dev_services.html">Previous</a></i></b></div>
|
||||
<!------------------------------------------------------------------------->
|
||||
|
||||
|
||||
<h2>
|
||||
<a NAME="Parameters"></a>Parameter Setting Routines</h2>
|
||||
Zoltan allows applications to change a number of parameter settings at
|
||||
runtime. This facility supports debugging by, for instance, allowing control
|
||||
over the type and quantity of output. It also allows users to modify some
|
||||
of the parameters that characterize the partitioning algorithms. The design
|
||||
of the parameter setting routines was driven by several considerations.
|
||||
First, we wanted to keep the user interface as simple as possible. Second,
|
||||
we wanted to allow different Zoltan structures to have different
|
||||
parameter settings associated with them. This second consideration precluded
|
||||
the use of C's static global variables (except in a few special places).
|
||||
The parameter routines described below allow developers to provide runtime
|
||||
access to any appropriate variables. In some cases,
|
||||
it is appropriate to allow developers to tinker with parameters that will
|
||||
never be documented for users.
|
||||
<p>Our solution to parameter setting is to have a single interface routine
|
||||
<b><a href="#Zoltan_Set_Param">Zoltan_Set_Param</a></b>.
|
||||
This function calls a set of more domain-specific parameter setting routines,
|
||||
each of which is responsible for a domain-specific set of parameters. Assuming
|
||||
there are no errors, the parameter name and new value are placed in a linked
|
||||
list of new parameters which is maintained by the Zoltan structure.
|
||||
When a partitioning method is invoked on a Zoltan structure, it
|
||||
scans through this linked list using the <b><a href="#Zoltan_Assign_Param_Vals">Zoltan_Assign_Param_Vals</a></b>
|
||||
function, resetting parameter values that are appropriate to the method.
|
||||
<p>In addition to the method-specific parameters, Zoltan also has a set
|
||||
of so-called <a NAME="key_params"></a><b>key parameters</b>. These
|
||||
are normally stored in the Zoltan structure and may be accessed by
|
||||
any part of the Zoltan code (including all the methods). A list of the
|
||||
<a href="../ug_html/ug_param.html#General_Parameters">key
|
||||
parameters currently used in Zoltan</a> can be found in the User's Guide.
|
||||
<p>The routines that control parameter setting are listed below. Note that
|
||||
these routines have been written to be as independent of Zoltan as possible.
|
||||
Only a few minor changes would be required to use these routines as a separate
|
||||
library.
|
||||
<blockquote>
|
||||
<b><a href="#Zoltan_Set_Param">Zoltan_Set_Param</a></b>: User
|
||||
interface function that calls a set of method-specific routines.
|
||||
<br><b><a href="#Zoltan_Set_Param_Vec">Zoltan_Set_Param_Vec</a></b>:
|
||||
Same as Zoltan_Set_Param, but for vector parameters.
|
||||
<br><b><a href="#Zoltan_Check_Param">Zoltan_Check_Param</a></b>: Routine
|
||||
to check if parameter name and value are OK.
|
||||
<br><b><a href="#Zoltan_Bind_Param">Zoltan_Bind_Param</a></b>: Routine to associate a parameter name with a variable.
|
||||
<br><b><a href="#Zoltan_Bind_Param_Vec">Zoltan_Bind_Param_Vec</a></b>: Same as Zoltan_Bind_Param, but for vector parameters.
|
||||
<br><b><a href="#Zoltan_Assign_Param_Vals">Zoltan_Assign_Param_Vals</a></b>:
|
||||
Scans list of parameter names & values, setting relevant parameters
|
||||
accordingly.
|
||||
<br><b><a href="#Zoltan_Free_Params">Zoltan_Free_Params</a></b>: Frees a parameter
|
||||
list.</blockquote>
|
||||
See also: <a href="dev_add_params.html">Adding new parameters in
|
||||
Zoltan</a>.
|
||||
<p>
|
||||
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr>
|
||||
<a NAME="Zoltan_Set_Param"></a>
|
||||
<hr>
|
||||
int <b>Zoltan_Set_Param</b>(struct <b><a href="dev_lb_structs.html">Zoltan_Struct</a></b>
|
||||
*<i>zz</i>, char *<i>param_name</i>, char *<i>new_val</i>);
|
||||
<br>
|
||||
<hr>
|
||||
<p>The <b>Zoltan_Set_Param</b> function is the <a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">user
|
||||
interface for parameter setting</a>. Its principle purpose is to call a
|
||||
sequence of more domain-specific routines for setting domain-specific parameters
|
||||
(e.g., <b>Zoltan_RCB_Set_Param</b>). If you are adding algorithms to Zoltan,
|
||||
you must write one of these domain-specific parameter routines and modify
|
||||
<b>Zoltan_Set_Param</b>
|
||||
to call it. <b>Zoltan_RCB_Set_Param</b> can serve as a template for this task.
|
||||
The arguments to this routine are two strings <i>param_name</i> and <i>new_val</i>.
|
||||
The domain-specific routines return an integer value with the following
|
||||
meaning.
|
||||
<blockquote>0 - The parameter name was found, and the value passed all
|
||||
error checks.
|
||||
<br>1 - The parameter name was not found among the parameters known by
|
||||
the domain-specific routine.
|
||||
<br>2 - The parameter name was found, but the value failed the error checking.
|
||||
<br>3 - Same as 0, but do not add parameter and value to linked list.
|
||||
<br>Other - More serious error; value is an <a href="../ug_html/ug_interface.html#Error Codes">error
|
||||
code</a>.</blockquote>
|
||||
If one of the domain-specific parameter routines returns with a 0,
|
||||
<b>Zoltan_Set_Param</b>
|
||||
adds the parameter and the value (both strings) to a linked list of such
|
||||
pairs that is pointed to by the <i>Params</i> field of the <i>zz</i> structure.
|
||||
<table WIDTH="100%" >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="20%"><b>Arguments:</b></td>
|
||||
|
||||
<td WIDTH="80%"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>zz</i></td>
|
||||
|
||||
<td>The Zoltan structure whose parameter value is being modified.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>param_name</i></td>
|
||||
|
||||
<td>A string containing the name of the parameter being modified. It is
|
||||
automatically converted to all upper-case letters.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>new_val</i></td>
|
||||
|
||||
<td>The new value desired for the parameter, expressed as a string.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><b>Returned Value:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> int</td>
|
||||
|
||||
<td><a href="../ug_html/ug_interface.html#Error Codes">Error code</a>.</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr>
|
||||
<a NAME="Zoltan_Set_Param_Vec"></a>
|
||||
<hr>
|
||||
int <b>Zoltan_Set_Param_Vec</b>(struct <b><a href="dev_lb_structs.html">Zoltan_Struct</a></b>
|
||||
*<i>zz</i>, char *<i>param_name</i>, char *<i>new_val</i>, int <i>index</i>);
|
||||
<br>
|
||||
<hr>
|
||||
<p>
|
||||
This routine works the same way as <a href="#Zoltan_Set_Param">
|
||||
Zoltan_Set_Param</a>, but is used for vector parameters.
|
||||
A vector parameter is a parameter that in
|
||||
addition to a name also has a set of indices, usually starting at 0. Each entry (component) may have a different value. This routine
|
||||
sets a single entry (component) of a vector parameter. If you want all entries (components) of a vector parameter to have the
|
||||
same value, set the parameter using <a href="#Zoltan_Set_Param">
|
||||
Zoltan_Set_Param</a> as if it were a scalar parameter.
|
||||
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr>
|
||||
<a NAME="Zoltan_Check_Param"></a>
|
||||
<hr>
|
||||
int <b>Zoltan_Check_Param</b>( char *<i>param_name</i>,
|
||||
char *<i>new_val</i>, <b>PARAM_VARS</b> *<i>params</i>, <b>PARAM_UTYPE
|
||||
</b>*<i>result</i>,
|
||||
int *<i>matched_index</i>);
|
||||
<br>
|
||||
<hr>The <b>Zoltan_Check_Param</b> routine simplifies the task of writing your
|
||||
own domain-specific parameter setting function. <b>Zoltan_Check_Param</b> compares
|
||||
the <i>param_name</i> string against a list of strings that you provide,
|
||||
and if a match is found it extracts the new value from the <i>new_val</i>
|
||||
string. See <b>Zoltan_RCB_Set_Param</b> for an example of how to use this routine.
|
||||
<table WIDTH="100%" >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="20%"><b>Arguments:</b></td>
|
||||
|
||||
<td WIDTH="80%"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>param_name</i></td>
|
||||
|
||||
<td>A capitalized string containing the name of the parameter being modified.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>new_val</i></td>
|
||||
|
||||
<td>The new value desired for the parameter, expressed as a string.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>params</i></td>
|
||||
|
||||
<td>The data structure (defined in <i>params/params_const.h</i>) describing
|
||||
the domain-specific parameters to be matched against. The data structure
|
||||
is an array of items, each of which consists of four fields. The first
|
||||
field is a string that is a capitalized name of a parameter. The second
|
||||
field is an address that is unused in
|
||||
<b>Zoltan_Check_Param</b>, but is used
|
||||
in <b><a href="#Zoltan_Assign_Param_Vals">Zoltan_Assign_Param_Vals</a></b>. The
|
||||
third field is another capitalized string that indicates the type of the
|
||||
parameter from the first field. Currently supported types are "INT", "INTEGER",
|
||||
"FLOAT", "REAL", "DOUBLE", "LONG", "STRING" and "CHAR". It is easy to add additional types
|
||||
by simple modifications to <b>Zoltan_Check_Param</b> and <b><a href="#Zoltan_Assign_Param_Vals">Zoltan_Assign_Param_Vals</a></b>.
|
||||
The fourth field is an integer that gives the dimension (length) of
|
||||
the parameter, if it is a vector parameter. Scalar parameters have dimension 0.
|
||||
The array is terminated by an item consisting of four NULL fields. See
|
||||
<b>Zoltan_RCB_Set_Param</b>
|
||||
for an example of how to set up this data structure. </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>result</i></td>
|
||||
|
||||
<td>Structure of information returned by <b>Zoltan_Check_Param</b> (defined
|
||||
in <i>params/params_const.h</i>). If <i>param_name</i> matches any
|
||||
of the parameter names from the first field of the <i>params</i> data structure,
|
||||
|
||||
<b>Zoltan_Check_Param</b> attempts to decode the value in <i>new_val</i>.
|
||||
The type of the value is determined by the third field in the <i>params</i>
|
||||
data structure. If the value decodes properly, it is returned in <i>result</i>. </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>matched_index</i></td>
|
||||
|
||||
<td>If <i>param_name</i> matches, then <i>matched_index</i> returns the
|
||||
index into the <i>params</i> array that corresponds to the matched parameter
|
||||
name. The <i>matched_index</i> and <i>result</i> values allow the developer
|
||||
to check that values being assigned to parameters are valid. </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><b>Returned Value:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> int</td>
|
||||
|
||||
<td>0 - <i>param_name</i> found in <i>params</i> data structure and <i>new_val</i>
|
||||
decodes OK.
|
||||
<br>1 - <i>param_name</i> not found in <i>params</i> data structure.
|
||||
<br>2 - <i>param_name</i> found in <i>params</i> data structure but <i>new_val</i>
|
||||
doesn't decode properly. </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr>
|
||||
<a NAME="Zoltan_Bind_Param"></a>
|
||||
<hr WIDTH="100%">
|
||||
int <b>Zoltan_Bind_Param </b>(<b>PARAM_VARS</b>
|
||||
*<i>params,</i> char *<i>name,</i> void *<i>var</i>);
|
||||
<br>
|
||||
<hr WIDTH="100%">
|
||||
<br>This routine is used to associate the name of a parameter in the parameter
|
||||
array <i>params</i> with a variable pointed to by <i>var</i>.
|
||||
<br>Note that since the variable to be bound can be of an arbitrary type,
|
||||
the pointer should be cast to a void pointer. <b>Zoltan_Bind_Param</b> must
|
||||
be called before <b><a href="#Zoltan_Assign_Param_Vals">Zoltan_Assign_Param_Vals</a></b>,
|
||||
where the actual assignment of values takes place.
|
||||
<table WIDTH="100%" NOSAVE >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="20%"><b>Arguments:</b></td>
|
||||
|
||||
<td WIDTH="80%"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>params</i></td>
|
||||
|
||||
<td>The data structure describing the domain-specific parameters to be
|
||||
matched against. The data structure is an array of items, each of which
|
||||
consists of four fields. The first field is a string that is a capitalized
|
||||
name of a parameter. The second field is an address that is unused in
|
||||
<b><a href="#Zoltan_Check_Param">Zoltan_Check_Param</a></b>,
|
||||
but is used in <b><a href="#Zoltan_Assign_Param_Vals">Zoltan_Assign_Param_Vals</a></b>.
|
||||
The third field is another capitalized string that indicates the type
|
||||
of the parameter from the first field. Currently supported types are "INT",
|
||||
"INTEGER", "FLOAT", "REAL", "DOUBLE", "LONG", "STRING" and "CHAR".
|
||||
It is easy to add additional types by simple modifications to <b><a href="#Zoltan_Check_Param">Zoltan_Check_Param</a></b>
|
||||
and <b><a href="#Zoltan_Assign_Param_Vals">Zoltan_Assign_Param_Vals</a></b>.
|
||||
The fourth field is an integer that gives the dimension (length) of
|
||||
the parameter, if it is a vector parameter. Scalar parameters have dimension 0.
|
||||
The array is terminated by an item consisting of four NULL fields.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td> <i>name</i></td>
|
||||
|
||||
<td>A capitalized string containing the name of the parameter being modified.</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td> <i>var</i></td>
|
||||
|
||||
<td NOSAVE>A pointer to the variable you wish to associate with the
|
||||
parameter name <i>name.</i> The pointer should be type cast to a
|
||||
void pointer. The user is responsible for ensuring that the pointer really
|
||||
points to a variable of appropriate type. A NULL pointer may be used
|
||||
to "unbind" a variable such that it will not be assigned a value upon future
|
||||
calls to <b><a href="#Zoltan_Assign_Param_Vals">Zoltan_Assign_Param_Vals</a>.</b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><b>Returned Value:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td> int</td>
|
||||
|
||||
<td NOSAVE><a href="../ug_html/ug_interface.html#Error Codes">Error code</a>.</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
|
||||
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr>
|
||||
<a NAME="Zoltan_Bind_Param_Vec"></a>
|
||||
<hr WIDTH="100%">
|
||||
int <b>Zoltan_Bind_Param_Vec</b>(<b>PARAM_VARS</b>
|
||||
*<i>params,</i> char *<i>name,</i> void *<i>var</i>, int <i>dim</i>);
|
||||
<br>
|
||||
<hr WIDTH="100%">
|
||||
<p>
|
||||
Same as Zoltan_Bind_Param, but for vector parameters. The additional
|
||||
parameter <i>dim</i> gives the dimension or length of the vector parameter.
|
||||
</p>
|
||||
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr>
|
||||
<a NAME="Zoltan_Assign_Param_Vals"></a>
|
||||
<hr>
|
||||
int <b>Zoltan_Assign_Param_Vals</b>(<b>PARAM_LIST</b>
|
||||
*<i>change_list</i>, <b>PARAM_VARS</b> *<i>params,
|
||||
</i>int<i> debug_level,</i>
|
||||
int <i>my_proc,</i> int <i>debug_proc</i>);
|
||||
<br>
|
||||
<hr>This routine changes parameter values as specified by the list of names
|
||||
and new values which is associated with a Zoltan structure. To
|
||||
use this routine, parameter values should first be set to their defaults,
|
||||
and then
|
||||
<b>Zoltan_Assign_Param_Vals</b> should be called to alter the values
|
||||
as appropriate. See <b>Zoltan_RCB</b> for a template.
|
||||
<table WIDTH="100%" >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="20%"><b>Arguments:</b></td>
|
||||
|
||||
<td WIDTH="80%"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>change_list</i></td>
|
||||
|
||||
<td>The linked list of parameter names and values which is constructed
|
||||
by <b><a href="#Zoltan_Set_Param">Zoltan_Set_Param</a></b> and is a field of an
|
||||
<b><a href="dev_lb_structs.html#Zoltan_Struct">Zoltan_Struct</a></b>
|
||||
data structure (defined in <i>params/param_const.h</i>). </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>params</i></td>
|
||||
|
||||
<td>The data structure (defined in <i>params/params_const.h</i>) describing
|
||||
the domain-specific parameters to be matched against. The data structure
|
||||
is an array of items, each of which consists of three fields. The first
|
||||
field is a string which is a capitalized name of a parameter. The second
|
||||
field is an address of the parameter which should be altered. The third
|
||||
field is another capitalized string which indicates the type of the parameter
|
||||
being altered. Currently supported types are "INT", "INTEGER", "FLOAT", "REAL", "DOUBLE",
|
||||
"LONG", "STRING" and "CHAR". It is easy to add additional types by simple
|
||||
modifications to <b><a href="#Zoltan_Check_Param">Zoltan_Check_Param</a></b> and
|
||||
<b>Zoltan_Assign_Param_Vals</b>.
|
||||
The array is terminated by an item consisting of three NULL fields. </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td> <i>debug_level</i></td>
|
||||
|
||||
<td>Zoltan debug level. (Normally this is <i>zz->Debug_Level</i>.)</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td> <i>my_proc</i></td>
|
||||
|
||||
<td>Processor number. (Normally this is<i> zz->Proc</i>.)</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td> <i>debug_proc</i></td>
|
||||
|
||||
<td>Processor number for debugging. (Normally this is <i>zz->Debug_Proc</i>.)</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><b>Returned Value:</b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td> int</td>
|
||||
|
||||
<td><a href="../ug_html/ug_interface.html#Error Codes">Error code</a>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
The last three input parameters may seem strange. They are present to support
|
||||
Zoltan's debugging features. If the parameter utility code is used outside
|
||||
of Zoltan, these parameters may be removed or simply set these input
|
||||
values to zero in the function call.
|
||||
<p>
|
||||
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr WIDTH="100%">
|
||||
<a NAME="Zoltan_Free_Params"></a>
|
||||
<hr>
|
||||
void <b>Zoltan_Free_Params </b>(<b>PARAM_LIST</b>
|
||||
**<i>param_list</i> );
|
||||
<hr WIDTH="100%">
|
||||
<br>This routine frees the parameters in the list pointed to by <i>param_list</i>.
|
||||
<br>
|
||||
<table WIDTH="100%" >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="20%"><b>Arguments:</b></td>
|
||||
|
||||
<td WIDTH="80%"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>param_list</i></td>
|
||||
|
||||
<td>A pointer to a list (array) of parameters to be freed. <b>PARAM_LIST</b>
|
||||
is defined in <i>params/param_const.h</i>.</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
|
||||
<!------------------------------------------------------------------------->
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a> | <a href="dev_services_parallel.html">Next:
|
||||
Parallel Computing Routines</a> | <a href="dev_services.html">Previous:
|
||||
Services</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
203
thirdParty/Zoltan/docs/dev_html/dev_services_time.html
vendored
Normal file
@ -0,0 +1,203 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.76 [en] (X11; U; Linux 2.4.2-2smp i686) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="karen devine, kddevin@sandia.gov">
|
||||
<title> Zoltan Developer's Guide: Timing Routines</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="dev.html">Zoltan Developer's Guide</a>
|
||||
| <a href="dev_services_zoltantimer.html">Next</a> | <a href="dev_services_hash.html">Previous</a></i></b></div>
|
||||
<!------------------------------------------------------------------------->
|
||||
<h2>
|
||||
<a NAME="Timing"></a>Timing Routines</h2>
|
||||
To assist in performance measurements and profiling, several timing routines
|
||||
are included in the Zoltan library. The main timer function,
|
||||
<b><a href="#Zoltan_Time">Zoltan_Time</a></b>,
|
||||
provides access to at least two portable timers: one CPU clock and one
|
||||
wall clock. On most systems, user time can also be measured.
|
||||
A higher-level timing capability built using
|
||||
<b><a href="#Zoltan_Time">Zoltan_Time</a></b> is also available; see
|
||||
<b><a href="dev_services_zoltantimer.html">ZOLTAN_TIMER</a></b> for more
|
||||
details.
|
||||
<p>
|
||||
The routines included in the utility are listed below.
|
||||
<blockquote><b><a href="#Zoltan_Time">Zoltan_Time</a></b>: Returns the
|
||||
time (in seconds) after some fixed reference point in time.
|
||||
<br><b><a href="#Zoltan_Time_Resolution">Zoltan_Time_Resolution</a></b>:
|
||||
The resolution of the specified timer.</blockquote>
|
||||
Currently, the following timers are supported:
|
||||
<ul>
|
||||
<li>
|
||||
<i>ZOLTAN_TIME_WALL </i>: wall-clock time.</li>
|
||||
|
||||
<br>On most systems, this timer calls MPI_Wtime.
|
||||
<li>
|
||||
<i>ZOLTAN_TIME_CPU </i>: cpu time.</li>
|
||||
|
||||
<br>On most systems, this timer calls the ANSI C function clock(). Note
|
||||
that this timer may roll over at just 71 minutes. <b><a href="#Zoltan_Time">Zoltan_Time</a></b>
|
||||
attempts to keep track of the number of roll-overs but this feature will
|
||||
work only if <b><a href="#Zoltan_Time">Zoltan_Time</a></b> is called at
|
||||
least once during every period between roll-overs.
|
||||
<li>
|
||||
<i>ZOLTAN_TIME_USER </i>: user time.</li>
|
||||
|
||||
<br>On most systems, this timer calls times(). Note that times() is required
|
||||
by POSIX and is widely available, but it is not required by ANSI C so may
|
||||
be unavailable on some systems. Compile Zoltan with -DNO_TIMES in this
|
||||
case.</ul>
|
||||
Within Zoltan, it is recommended to select which timer to use by setting
|
||||
the
|
||||
<a href="../ug_html/ug_param.html#TIMER">TIMER</a> general parameter
|
||||
via <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>.
|
||||
The default value of <a href="../ug_html/ug_param.html#TIMER">TIMER</a>
|
||||
is <i>wall</i>. Zoltan stores an integer representation of the selected
|
||||
timing method in <i>zz->Timer</i>. This value should be passed to <b><a href="#Zoltan_Time">Zoltan_Time</a></b>,
|
||||
as in <b><a href="#Zoltan_Time">Zoltan_Time</a></b>(<i>zz->Timer</i>).
|
||||
<p><!------------------------------------------------------------------------->
|
||||
<hr><a NAME="Zoltan_Time"></a>
|
||||
<hr>double <b>Zoltan_Time</b>(int <i>timer</i>);
|
||||
<hr>
|
||||
<p><b>Zoltan_Time</b> returns the time in seconds, measured from some fixed
|
||||
reference time. Note that the time is <i>not </i>synchronized among different
|
||||
processors or processes. The time may be either CPU time or wall-clock
|
||||
time. The timer is selected through <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>.
|
||||
<br>
|
||||
<table WIDTH="100%" >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="20%"><b>Arguments:</b></td>
|
||||
|
||||
<td WIDTH="80%"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>timer</i></td>
|
||||
|
||||
<td>The timer type (e.g., wall or cpu) represented as an integer. See <a href="#Timing">top
|
||||
of page</a> for a list of valid values.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><b>Returned Value:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> double </td>
|
||||
|
||||
<td>The time in seconds. The time is always positive; a negative value
|
||||
indicates an error.</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p><!------------------------------------------------------------------------->
|
||||
<hr><a NAME="Zoltan_Time_Resolution"></a>
|
||||
<hr>double <b>Zoltan_Time_Resolution</b>(int
|
||||
<i>timer</i>) ;
|
||||
<hr>
|
||||
<br><b>Zoltan_Time_Resolution</b> returns the resolution of the current
|
||||
timer. The returned resolution is a lower bound on the actual resolution.
|
||||
<br>
|
||||
<table WIDTH="100%" >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="20%"><b>Arguments:</b></td>
|
||||
|
||||
<td WIDTH="80%"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>timer</i></td>
|
||||
|
||||
<td>The timer type (e.g., wall or cpu) represented as an integer. See <a href="#Timing">top
|
||||
of page</a> for a list of valid values.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><b>Returned Value:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> double </td>
|
||||
|
||||
<td>The timer resolution in seconds. If the resolution is unknown,
|
||||
-1 is returned.</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
<p><!------------------------------------------------------------------------->
|
||||
<hr><a NAME="Example"></a>
|
||||
<br><b>Example:</b>
|
||||
<br>Here is a simple example for how to use the timer routines:
|
||||
<ul><tt>double t0, t1, t2;</tt>
|
||||
<br><tt>Zoltan_Set_Param(zz, "TIMER", "wall");</tt>
|
||||
<br><tt>t0 = Zoltan_Time(zz->Timer);</tt>
|
||||
<br><tt>/* code segment 1 */</tt>
|
||||
<br><tt>t1 = Zoltan_Time(zz->Timer);</tt>
|
||||
<br><tt>/* code segment 2 */</tt>
|
||||
<br><tt>t2 = Zoltan_Time(zz->Timer);</tt>
|
||||
<br><tt>/* Print timing results */</tt>
|
||||
<br><tt>Zoltan_Print_Stats(zz->Communicator, zz->Debug_Proc, t1-t0, "Time
|
||||
for part 1:");</tt>
|
||||
<br><tt>Zoltan_Print_Stats(zz->Communicator, zz->Debug_Proc, t2-t1, "Time
|
||||
for part 2:");</tt>
|
||||
<br><tt>Zoltan_Print_Stats(zz->Communicator, zz->Debug_Proc, t2-t0, "Total
|
||||
time :");</tt></ul>
|
||||
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a> | <a href="dev_services_debug.html">Next:
|
||||
Debugging Services</a> | <a href="dev_services_hash.html">Previous:
|
||||
Hash Function</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
1042
thirdParty/Zoltan/docs/dev_html/dev_services_zoltantimer.html
vendored
Normal file
229
thirdParty/Zoltan/docs/dev_html/dev_test_script.html
vendored
Normal file
@ -0,0 +1,229 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="karen devine, kddevin@sandia.gov">
|
||||
<title> Zoltan Developer's Guide: Running test_zoltan</title>
|
||||
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="dev.html">Zoltan Developer's Guide</a>
|
||||
| <a href="dev_rcb.html">Next</a> | <a href="dev_view.html">Previous</a></i></b></div>
|
||||
|
||||
<h2>
|
||||
<a NAME="migration_help"></a>Appendix: Using the test script <i>test_zoltan</i></h2>
|
||||
<B>
|
||||
Note: The script <i>test_zoltan</i> as described below is obsolete.
|
||||
It will work in some instances, but is no longer generally supported.
|
||||
<p>
|
||||
Automated testing is now supported through CMake. Build
|
||||
<a href="../ug_html/ug_usage.html#CMake">Zoltan
|
||||
through CMake</a> with option
|
||||
<blockquote>
|
||||
"-D Zoltan_ENABLE_Tests:BOOL=ON"
|
||||
</blockquote>
|
||||
<p>
|
||||
Automated tests can be then run with command
|
||||
<blockquote>
|
||||
make test
|
||||
</blockquote>
|
||||
The testing environment uses script <i>zoltan/test/ctest_zoltan.pl</i>.
|
||||
To add new <i>zdrive.inp</i> files to an existing test, add the files to
|
||||
the appropriate directory and to the glob commands in <i>ctest_zoltan.pl</i>.
|
||||
(Follow the example of <i>zdrive.inp.rcb</i> in <i>ctest_zoltan.pl</i>.
|
||||
<p>
|
||||
To add new test directories, create the directories and populate them
|
||||
with input files. Copy file <i>CMakeLists.txt</i>
|
||||
from <i>zoltan/test/ch_simple</i> to the new directories,
|
||||
and edit the test names and numbers of processors in the new files.
|
||||
Also add the new directories to <i>zoltan/test/CMakeLists.txt</i>, following
|
||||
the example of <i>ch_simple</i>. The new tests will now be run in the CMake
|
||||
environment.
|
||||
<p>
|
||||
<a href="https://trilinos.sandia.gov/cdash/index.php?project=Trilinos&subproject=Zoltan">Results of automated nightly testing</a> are posted to the CDASH
|
||||
dashboard.
|
||||
</B>
|
||||
<hr>
|
||||
<hr>
|
||||
<B>OBSOLETE</B>
|
||||
<p>
|
||||
The purpose of the Zoltan test script is to run the test driver <i><a href="dev_driver.html">zdrive</a></i> (or
|
||||
<i><a href="dev_driver.html">zfdrive</a></i>)
|
||||
on a set of test problems to verify that the Zoltan library works correctly.
|
||||
The script compares the output of actual runs with precomputed output.
|
||||
The assumption is that if the outputs are identical, then the current implementation
|
||||
is is likely to be correct.
|
||||
Small differences may occur depending on the architectures used; developers
|
||||
should examine the output and use their judgement in determining its correctness.
|
||||
It is strongly recommended that developers
|
||||
run <i>test_zoltan</i> to verify correctness before committing changes
|
||||
to existing code!
|
||||
<br>
|
||||
<h3>
|
||||
How to run <i>test_zoltan</i></h3>
|
||||
First make sure you have compiled the driver <i><a href="dev_driver.html">zdrive</a></i> (or <i><a href="dev_driver.html">zfdrive</a></i>).
|
||||
Then go to the Zoltan directory <i>Zoltan/tests</i> and type<i> test_zoltan </i>
|
||||
with suitable options as described below. This will run the test script
|
||||
in interactive mode. The output from the driver will be sent to <i>stdout</i>
|
||||
and <i>stderr</i<i>stdout</i>
|
||||
and <i>stderr</i>
|
||||
with a summary of results. The summary of results is also saved in a log
|
||||
file. If an error occured, look at the log file to find out what
|
||||
went wrong. The script currently assumes that runs are deterministic
|
||||
and reproducible across all architectures,
|
||||
which is not necessarily true.
|
||||
Hence false alarms may occur.
|
||||
<br>
|
||||
<h3>
|
||||
Syntax</h3>
|
||||
<b> test_zoltan </b>[-arch <i>arch-type</i>] [-cmd
|
||||
<i>command</i>]
|
||||
[other options as listed below]
|
||||
<p>It is required to use either the -arch or the -cmd option. The
|
||||
other arguments are optional.
|
||||
<p>
|
||||
<table BORDER=0 WIDTH="100%" NOSAVE >
|
||||
<tr VALIGN=TOP>
|
||||
<td WIDTH="25%"><b>Options:</b></td>
|
||||
<td WIDTH="75%"></td>
|
||||
</tr>
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td WIDTH="25%" NOSAVE>-arch <i>arch-type</i></td>
|
||||
|
||||
<td WIDTH="75%" NOSAVE>The architecture on which the driver is to run. For a
|
||||
list of currently supported architectures, type <i>test_zoltan</i> with no
|
||||
arguments.
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td>-cmd <i>command</i></td>
|
||||
|
||||
<td>The <i>command</i> is the command that the script
|
||||
uses to launch the driver. One must include an option to specify the number
|
||||
of processors as part of the command. Use quotes appropriately; for example,
|
||||
<i>-cmd
|
||||
'mpirun -np'</i>. Default settings have been provided for all the supported
|
||||
architectures.</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td>-logfile <i>filename</i></td>
|
||||
|
||||
<td NOSAVE>The name of the log file. The default is <i>test_zoltan.log</i>.
|
||||
If an old log file exists, it will be moved to <i>test_zoltan.log.old.</i></td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>-no_parmetis</td>
|
||||
|
||||
<td>Do not run any <a href="../ug_html/ug_alg_parmetis.html">ParMETIS</a>
|
||||
methods.</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>-no_nemesis</td>
|
||||
|
||||
<td>Do not run test problems in Nemesis format.</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>-no_chaco</td>
|
||||
|
||||
<td>Do not run test problems
|
||||
in <a href="http://cs.sandia.gov/CRF/chac.html">Chaco</a> format.</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>-yes_fortran</td>
|
||||
|
||||
<td>Run the Fortran90 driver <a href="dev_driver.html"><i>zfdrive</i></a>
|
||||
instead of <i>zdrive</i>.</td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>The default behavior is to run
|
||||
<a href="dev_driver.html"><i>zdrive</i></a>
|
||||
all methods on all types of input format.
|
||||
<br>
|
||||
<h3>
|
||||
Test problems</h3>
|
||||
The test problems are included in subdirectories of the <i>Zoltan/test</i>
|
||||
directory. Problems using <a href="http://cs.sandia.gov/CRF/chac.html">Chaco</a> input files are in subdirectories
|
||||
<i>ch_*</i>; problems using Nemesis input files are in subdirectories
|
||||
<i>nem_*</i>.
|
||||
Please see the README files located in each test directory for more
|
||||
details on these test problems.
|
||||
<h3>
|
||||
Load balancing methods</h3>
|
||||
Many different load-balancing methods are currently tested in <i>test_zoltan</i>.
|
||||
Input files for the methods are found in the test problem subdirectories.
|
||||
The input files are named <i>zdrive.inp.<method></i>, where <i><method></i> indicates which load-balancing method is passed to Zoltan.
|
||||
To run only a subset of the methods,
|
||||
edit the <i>test_zoltan</i> script manually; searching for "rcb" shows
|
||||
which lines of the script must be changed.
|
||||
<br>
|
||||
<h3>
|
||||
<b>Number of processors</b></h3>
|
||||
The script <i>test_zoltan</i> runs each test problem on a predetermined number of processors, currently
|
||||
ranging from 3 to 9.
|
||||
<p>
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a> | <a href="dev_rcb.html">Next:
|
||||
RCB</a> | <a href="dev_view.html">Previous: Visualization of Geometric Partitions</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
241
thirdParty/Zoltan/docs/dev_html/dev_view.html
vendored
Normal file
@ -0,0 +1,241 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approved" content="SAND99-1376">
|
||||
<meta name="author" content="lee ann fisk, lafisk@sandia.gov">
|
||||
<title> Zoltan Developer's Guide: Visualization of Geometric Partitions</title>
|
||||
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="dev.html">Zoltan Developer's Guide</a> | <a href="dev_test_script.html">Next</a> | <a href="dev_driver.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<h2>
|
||||
<a NAME="Visualization"></a>Appendix: Visualization of Geometric Partitions
|
||||
</h2>
|
||||
|
||||
Graphical images of partitioned meshes can help you to understand the
|
||||
geometric partitioning algorithms of Zoltan and to debug new or existing
|
||||
algorithms. The following sections describe methods for visualizing the
|
||||
partitions computed by the <a href="dev_driver.html">test drivers</a>.
|
||||
|
||||
<h3>
|
||||
<a NAME="Vis_2D"></a>2D problems with <I>gnuplot</I>
|
||||
</h3>
|
||||
|
||||
To view the result of a 2D decomposition performed by the
|
||||
<a href="dev_driver.html">test driver</a>,
|
||||
use the "gnuplot output" option of the test driver input file,
|
||||
as described in <i><a href="zdrive.inp">zdrive.inp</a></i>. The test driver
|
||||
will write a file that can be loaded into <a href="https://www.gnuplot.info/">gnuplot</a>.
|
||||
The result for the test mesh in directory <I>ch_hammond</I>, partitioned into four
|
||||
regions with RCB, is show below. The first picture is obtained from the input file
|
||||
<i> zdrive.inp.gnuplot1</i> with <i>gnuplot output = 1</i>. The second
|
||||
picture is obtained from the input file <i> zdrive.inp.gnuplot2</i>
|
||||
with <i>gnuplot output = 2</i>. Both pictures have been zoomed so
|
||||
that the xrange is [-0.2,1.2] and the yrange is [-0.3,0.35].
|
||||
<p>
|
||||
<img src="hammondPoints.png" alt="[gnuplot 2D view]" border=2 height=488 width=654>
|
||||
<p>
|
||||
<p>
|
||||
<img src="hammondMesh.png" alt="[gnuplot 2D view]" border=2 height=488 width=654>
|
||||
<p>
|
||||
|
||||
<h3>
|
||||
<a NAME="Vis_3D"></a>3D problems with <I>vtk_view</I>
|
||||
</h3>
|
||||
3D visualization requires downloading and compiling the
|
||||
<a href="https://www.vtk.org">Visualization Toolkit</a> (VTK) library (version
|
||||
5.0 or later). You can then use the Zoltan top level makefile to build
|
||||
the <I>vtk_view</I> application found in the <I>util</I> directory of
|
||||
Zoltan. Build details can be found in the <I>Config.generic</I> file
|
||||
in <I>Utilities/Config</I>. Note that you will have to download and
|
||||
build <a href = "https://www.cmake.org">CMake</a>, the makefile generator
|
||||
used by <a href="https://www.vtk.org">VTK</a>, before you can build VTK.
|
||||
<p>
|
||||
<I>vtk_view</I> is a parallel MPI program. It does not need to be
|
||||
run with the same number of processes with which you ran <I>zdrive</I>. You
|
||||
can choose the number of processes based on the size of the input mesh you
|
||||
will be visualizing, and the computational load of rendering it to an image
|
||||
at interactive rates.
|
||||
<p>
|
||||
If you run <I>vtk_view</I> in the directory in which you ran
|
||||
the test driver, the following will happen:
|
||||
<UL>
|
||||
<LI><I>vtk_view</I> will read <I><a href="zdrive.inp">zdrive.inp</a></I>, or another input parameter file
|
||||
if you specify a different file on the command line.
|
||||
<LI>It will read in the same input Chaco or Exodus II mesh that the test driver
|
||||
read in.
|
||||
<LI>It will read in the <i>file_name</i>.out.<i>p</i>.<i>n</i> files that the
|
||||
test driver wrote listing the part assigned to every global ID.
|
||||
<LI>It will open a window on your display, showing the input mesh. For
|
||||
Chaco files, the mesh vertices will be colored by the part into which
|
||||
Zoltan placed them. For Exodus II files, the mesh elements will be so colored.
|
||||
A scalar bar in the window indicates the mapping from colors to part
|
||||
numbers. A caption describes the input file name, the decomposition
|
||||
method, the Zoltan parameter settings, and so on. You can use your mouse
|
||||
to rotate the volume, pan and zoom in and out.
|
||||
</UL>
|
||||
<p>
|
||||
The example below shows how <I>vtk_view</I> displays the mesh in the test directory
|
||||
<I>ch_brack2_3</I> after it has been partitioned with HSFC across 5 processes.
|
||||
<p>
|
||||
<img src="brack3d.png" alt="[vtk_view 3D view]" border=2 height=466 width=473>
|
||||
<p>
|
||||
If no test driver output files are found, <I>vtk_view</I> will
|
||||
display the mesh without part IDs.
|
||||
<p>
|
||||
There are a few additional options that can be added to the test driver
|
||||
input file, that are specifically for <I>vtk_view</I>.
|
||||
<P><TABLE rules=cols,rows frame=box align=center cellpadding=5>
|
||||
<TR> <TD>zdrive count = <number></TD>
|
||||
<TD>the number of <i>file_name</i>.out.<i>p</i>.<i>n</i> files, also the value of <i>p</i></TD>
|
||||
<TR> <TD>image height = <number></TD>
|
||||
<TD>number of pixels in height of image (default is <I>300</I>)</TD>
|
||||
<TR> <TD>image width = <number></TD>
|
||||
<TD>number of pixels in width of image (<I>300</I>)</TD>
|
||||
<TR> <TD>omit caption = <1 or 0></TD>
|
||||
<TD>do not print default caption in window if "1" (<I>0</I>) </TD>
|
||||
<TR> <TD>omit scalar bar = <1 or 0></TD>
|
||||
<TD>do not print scalar bar in window if "1" (<I>0</I>)</TD>
|
||||
<TR> <TD>add caption = <text of caption></TD>
|
||||
<TD>display indicated text in the window (<I>no caption</I>)</TD>
|
||||
</TABLE>
|
||||
<p>
|
||||
The <I>zdrive count</I> option may be required if you have more than one
|
||||
set of test driver output files in the directory. Otherwise, <I>vtk_view</I>
|
||||
will look for files of the form <i>file_name</i>.out.<i>p</i>.<i>n</i> for
|
||||
any value <i>p</i>. Note that since the window may be resized with the
|
||||
mouse, you may not need <i>image height</i> and <i>image width</i>
|
||||
unless you must have a very specific window size. Also note that if you
|
||||
ran the Fortan test driver <I>zfdrive</I>, you will need to rename the
|
||||
output files from <i>file_name</i>.<B>f</B>out.<i>p</i>.<i>n</i> to
|
||||
<i>file_name</i>.out.<i>p</i>.<i>n</i>.
|
||||
|
||||
<h3>
|
||||
<a NAME="Vis_offscreen"></a>Off-screen rendering with <I>vtk_write</I>
|
||||
</h3>
|
||||
In some situations it is not possible or not convenient to open a window
|
||||
on a display. In that case, you can compile <I>util/vtk_view.cpp</I> with the flag
|
||||
<B>OUTPUT_TO_FILE</B> and it will create a program that renders the image
|
||||
to a file instead of opening a window on a display. (The Zoltan top level makefile
|
||||
does exactly this when you use the <I>vtk_write</I> target.)
|
||||
<p>
|
||||
Note that while
|
||||
<I>vtk_view</I> is built with OpenGL and <a href=https://www.vtk.org>VTK</a>,
|
||||
<I>vtk_write</I> must be built
|
||||
with <a href = https://www.mesa3d.org>Mesa</a> GL and a version of the
|
||||
<a href=https://www.vtk.org>VTK</a> libraries that you have compiled with
|
||||
special Mesa flags and with the Mesa header files. This is because
|
||||
OpenGL implementations are not
|
||||
in general capable of off-screen rendering, and Mesa GL is. The
|
||||
<I>Config.generic</I> file in <I>Utilities/Config</I> describes in
|
||||
detail how to build Mesa and then VTK for off-screen rendering.
|
||||
<p>
|
||||
<I>vtk_write</I> goes through the same steps that <I>vtk_view</I> does,
|
||||
except at the end it writes one or more image files instead of opening
|
||||
a window on your display. The images begin with a camera focused on the
|
||||
mesh, pointing in the direction of the negative Z-axis. The positive
|
||||
Y-axis is the "up" direction, and we use a right-handed coordinate
|
||||
system. (So the X-axis is pointing to the right.) The camera can
|
||||
revolve around the mesh in 1 degree increments.
|
||||
<p>
|
||||
The <I>zdrive count</I>, <I>image width</I>, and <I>image height</I>
|
||||
options listed above also apply to <I>vtk_write</I>. In addition, you
|
||||
can use these options to govern the output images.
|
||||
|
||||
<P><TABLE rules=cols,rows frame=box align=center cellpadding=5>
|
||||
<TR> <TD>output format = <format name></TD>
|
||||
<TD>choices are tiff, png, jpeg, ps and bmp (default is <I>tiff</I>)</TD>
|
||||
<TR> <TD>output name = <file name></TD>
|
||||
<TD>base name of image file or files (<I>outfile</I>)</TD>
|
||||
<TR> <TD>output frame start = <number></TD>
|
||||
<TD>first frame, between 0 and 360 (<I>0</I>)</TD>
|
||||
<TR> <TD>output frame stop = <number></TD>
|
||||
<TD>last frame, between 0 and 360 (<I>0</I>)</TD>
|
||||
<TR> <TD>output frame stride = <number></TD>
|
||||
<TD>the difference in degrees from one frame to the next (<I>1</I>)</TD>
|
||||
<TR> <TD>output view up = <x y z></TD>
|
||||
<TD>the direction of "up" as camera points at mesh (<I>0 1 0</I>)</TD>
|
||||
</TABLE>
|
||||
|
||||
<h3>
|
||||
<a NAME="Vis_other"></a>Other file formats
|
||||
</h3>
|
||||
<I>vtk_view</I> was written to post-process <I>zdrive</I> runs, so it
|
||||
only reads Chaco or Exodus II/Nemesis meshes.
|
||||
If you are working with a different mesh-based file format, it
|
||||
is still possible that you could use <I>vtk_view</I> or <I>vtk_write</I>
|
||||
to view the parts assigned to your mesh by some application using the
|
||||
Zoltan library. <a href=https://www.vtk.org>VTK</a>
|
||||
at this point in time has readers for many different file formats. If VTK
|
||||
has a reader for your format, then
|
||||
modify the <I>read_mesh</I> function in <I>util/vtk_view.cpp</I> to use that
|
||||
reader.
|
||||
<p>
|
||||
You can then hard-code <I>vtk_view</I> to read your file, or you can
|
||||
modify <I>read_cmd_file</I> in <I>driver/dr_input.c</I> to accept
|
||||
a specification of your file type in addition to Chaco and Nemesis. If
|
||||
you do the latter you can create a <a href="zdrive.inp">zdrive-style
|
||||
input file</a> in which to specify your file name and other visualization
|
||||
parameters.
|
||||
<p>
|
||||
Finally, you need to create text files listing each global ID you supplied
|
||||
to Zoltan, followed by the part ID assigned by Zoltan, with only
|
||||
one global ID/part ID pair per line. Name this
|
||||
file or files using the conventions used by the
|
||||
<a href=dev_driver.html>test drivers</a>.
|
||||
|
||||
<hr WIDTH="100%">
|
||||
<br>[<a href="dev.html">Table of Contents</a> | <a href="dev_test_script.html">Next:
|
||||
Using the Test Script</a> | <a href="dev_driver.html">Previous:
|
||||
Using the Test Drivers</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html
|
BIN
thirdParty/Zoltan/docs/dev_html/figures/arrow.gif
vendored
Normal file
After Width: | Height: | Size: 992 B |
BIN
thirdParty/Zoltan/docs/dev_html/film2d.png
vendored
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
thirdParty/Zoltan/docs/dev_html/hammondMesh.png
vendored
Normal file
After Width: | Height: | Size: 43 KiB |
BIN
thirdParty/Zoltan/docs/dev_html/hammondPoints.png
vendored
Normal file
After Width: | Height: | Size: 18 KiB |
591
thirdParty/Zoltan/docs/dev_html/zdrive.inp
vendored
Normal file
@ -0,0 +1,591 @@
|
||||
# @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
|
||||
##############################################################################
|
||||
#
|
||||
# EXAMPLE OF zdrive.inp INPUT FILE FOR zdrive AND zfdrive.
|
||||
#
|
||||
##############################################################################
|
||||
# GENERAL NOTES
|
||||
#
|
||||
# 1) Any line beginning with a "#" is considered a comment and will be
|
||||
# ignored by the file parser.
|
||||
#
|
||||
# 2) The order of the lines IS NOT significant.
|
||||
#
|
||||
# 3) Any lines that are optional are marked as such in this file. Unless
|
||||
# otherwise noted a line is required to exist in any input file.
|
||||
#
|
||||
# 4) The case of words IS NOT significant, e.g., "file" IS equivalent
|
||||
# to "FILE" or "File", etc.
|
||||
#
|
||||
# 5) The amount of blank space in between words IS significant. Each
|
||||
# word should only be separated by a single space.
|
||||
#
|
||||
# 6) Blank lines are ignored.
|
||||
#
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
# Decomposition Method = <method>
|
||||
#
|
||||
# This line is used to specify the algorithm that Zoltan will use
|
||||
# for load balancing. Currently, the following methods that are acceptable:
|
||||
# rcb - Reverse Coordinate Bisection
|
||||
# octpart - Octree/Space Filling Curve
|
||||
# parmetis - ParMETIS graph partitioning
|
||||
# reftree - Refinement tree partitioning
|
||||
#
|
||||
#-----------------------------------------------------------------------------
|
||||
Decomposition Method = rcb
|
||||
|
||||
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
# Zoltan Parameters = <options>
|
||||
#
|
||||
# This line is OPTIONAL. If it is not included, no user-defined parameters
|
||||
# will be passed to Zoltan.
|
||||
#
|
||||
# This line is used to to specify parameter values to overwrite the default
|
||||
# parameter values used in Zoltan. These parameters will be passed to Zoltan
|
||||
# through calls to Zoltan_Set_Param(). Parameters are set by entries consisting
|
||||
# of pairs of strings "<parameter string>=<value string>".
|
||||
# The <parameter string> should be a string that is recognized by the
|
||||
# particular load-balancing method being used.
|
||||
# The parameter entries should be separated by commas.
|
||||
# When many parameters must be specified, multiple
|
||||
# "Zoltan Parameters" lines may be included in the input file.
|
||||
# NOTE: The Fortran90 driver zfdrive can read only one parameter per line.
|
||||
#-----------------------------------------------------------------------------
|
||||
Zoltan Parameters = DEBUG_LEVEL=3
|
||||
Zoltan Parameters = RCB_REUSE=0
|
||||
|
||||
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
# File Type = <file type><,chaco or Matrix Market options>
|
||||
#
|
||||
# This line is OPTIONAL. If it is not included, then it is assumed that
|
||||
# the file type is parallel nemesis.
|
||||
#
|
||||
# This line indicates which format the file is in. The current
|
||||
# file types for this line are:
|
||||
# NemesisI - parallel ExodusII/NemesisI files (1 per processor)
|
||||
# Chaco - Chaco graph and/or geometry file(s)
|
||||
# hypergraph - format documented in driver/dr_hg_readfile.c,
|
||||
# suffix .hg
|
||||
# matrixmarket - Matrix Market exchange format, suffix .mtx
|
||||
# matrixmarket+ - our enhanced Matrix Market format, documented in
|
||||
# driver/dr_hg_io.c, includes vertex and edge weights,
|
||||
# and process ownership of matrix data for
|
||||
# a distributed matrix, suffix .mtxp
|
||||
#
|
||||
# For NemesisI input, the initial distribution of data is given in the
|
||||
# Nemesis files. For Chaco input, however, an initial decomposition is
|
||||
# imposed by the zdrive. Four initial distribution methods are provided.
|
||||
# The method to be used can be specified in the chaco options:
|
||||
# initial distribution = <option>
|
||||
# where <option> is
|
||||
# linear -- gives the first n/p objects to proc 0, the
|
||||
# next n/p objects to proc 1, etc.
|
||||
# cyclic -- assigns the objects to processors as one would
|
||||
# deal cards; i.e., gives the first object to proc 0,
|
||||
# the second object to proc 1, ..., the pth object to
|
||||
# proc (p-1),the (p+1)th object to proc 0, the (p+2)th
|
||||
# object to proc 1, etc.
|
||||
# file -- reads an initial distribution from the input file
|
||||
# <filename>.assign, where File Name is specified by
|
||||
# the "File Name" command line below.
|
||||
# owner -- for vertices, same as "linear." For hyperedge, send a
|
||||
# copy of a hyperedge to each processor owning one of its
|
||||
# vertices. (Multiple processors may then store each
|
||||
# hyperedge.)
|
||||
# If an initial distribution is not specified, the default is linear.
|
||||
#
|
||||
# A second Chaco option is to distribute the objects over a subset
|
||||
# of the processors, not all processors. The syntax for this is:
|
||||
# initial procs = k
|
||||
# where k is an integer between 1 and the number of processors.
|
||||
# The objects will be evenly distributed among the k first
|
||||
# processors, using the distribution method optionally specified by
|
||||
# the "initial distribution" option.
|
||||
#
|
||||
# Example:
|
||||
# File Type = chaco, initial distribution = cyclic, initial procs = 2
|
||||
# will give proc 0 objects 1, 3, 5, ... and proc 1 objects 2, 4, 6, ...
|
||||
# while procs 2 and higher get no objects.
|
||||
#
|
||||
# For hypergraph, matrixmarket and matrixmarket+ files, there are three
|
||||
# options that determine how zdrive divides the hypergraph or matrix data
|
||||
# across the processes initially. (The Zoltan library will redistribute
|
||||
# these elements yet again before the parallel hypergraph methods begins.)
|
||||
#
|
||||
# initial_distribution = {val} initial vertex (object) distribution
|
||||
#
|
||||
# linear (default) - First n/p vertices supplied by first process,
|
||||
# next n/p vertices supplied by next process, and so on.
|
||||
# cyclic - Deal out the vertex ownership in round robin fashion.
|
||||
# file - Use process vertex assignment found in the file (.mtxp only)
|
||||
#
|
||||
# initial_pins = {val} initial pin (matrix non-zero) distribution
|
||||
#
|
||||
# row (default) - Each zdrive process supplies entire rows of the matrix,
|
||||
# in compressed row storage format
|
||||
# column - Each zdrive process supplies entire columns of the matrix, in
|
||||
# compressed column storage format
|
||||
# linear - First n/p pins (matrix non-zeroes) supplied by first process,
|
||||
# next n/p pins supplied by next process, and so on.
|
||||
# cyclic - Deal out the pin ownership in round robin fashion.
|
||||
# file - Use process pin assignment found in the file (.mtxp only)
|
||||
# zero - Process zero initially has all pins
|
||||
#
|
||||
# initial_procs = {n}
|
||||
# This has the same meaning that it has for Chaco files. The initial
|
||||
# vertices, pins and weights are all provided by only {n} processes.
|
||||
#
|
||||
# objects = {val} how the file is viewed (define the vertices)
|
||||
#
|
||||
# rows - Vertices are the row of the matrix
|
||||
# columns (default) - Vertices are the columns of the matrix
|
||||
# nonzeros - Vertices are the nonzeros of the matrix
|
||||
# NOTE: matrixmarket+ driver only support "columns"
|
||||
|
||||
# NOTE: The Fortran90 driver zfdrive does not read NemesisI files.
|
||||
# NOTE: The Fortran90 driver zfdrive does not accept any Chaco options.
|
||||
#-----------------------------------------------------------------------------
|
||||
File Type = NemesisI
|
||||
|
||||
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
# Compression = <type of compression>
|
||||
#
|
||||
# This line is OPTIONAL. If it is not included, then it is assumed that
|
||||
# the input file is not compressed.
|
||||
# Currently, we support compression for Chaco, hypergraph and matrixmarket file
|
||||
# format.
|
||||
#
|
||||
# This line indicates which compression is used for the file. The current
|
||||
# compression supported for this line are:
|
||||
# uncompressed - No compression
|
||||
# gzip - input file is gzipped. The name should be postfixed by
|
||||
# the ".gz" extension. example: foo.mtx.gz for original
|
||||
# file foo in matrix market format.
|
||||
|
||||
# NOTE: however, if the corresponding compressed file is not found, the driver try
|
||||
# to open the file with the "usual" name.
|
||||
Compression = uncompressed
|
||||
|
||||
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
# File Name = <filename>
|
||||
#
|
||||
# This line contains the filename for the input finite element mesh.
|
||||
#
|
||||
# If the file type is NemesisI then this name refers to the base name
|
||||
# of the parallel ExodusII files that contain the results. The base
|
||||
# name is the parallel filename without the trailing .<# proc>.<file #>
|
||||
# on it. This file must contain the Nemesis global information.
|
||||
#
|
||||
# If the file type is Chaco, this name refers to the base name of the
|
||||
# Chaco files containing graph and/or coordinates information. The
|
||||
# file <filename>.graph will be read for the Chaco graph information;
|
||||
# The file <filename>.coords will be read for Chaco geometry information.
|
||||
# The optional file <filename>.assign may be read for an initial decomposition
|
||||
# by specifying "initial distribution=file" on the "File Type" input line.
|
||||
# For more information about the format of these files, see
|
||||
# the Chaco user's guide.
|
||||
#-----------------------------------------------------------------------------
|
||||
File Name = testa.par
|
||||
|
||||
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
# Parallel Disk Info = <options>
|
||||
#
|
||||
# This line is OPTIONAL. If this line is left blank, then it is assumed
|
||||
# that there is no parallel disk information, and all of the files are
|
||||
# in a single directory. This line is used only for Nemesis files.
|
||||
#
|
||||
# This line gives all of the information about the parallel file system
|
||||
# being used. There are a number of options that can be used with it,
|
||||
# although for most cases only a couple will be needed. The options are:
|
||||
#
|
||||
# number=<integer> - this is the number of parallel disks that the
|
||||
# results files are spread over. This number must
|
||||
# be specified, and must be first in the options
|
||||
# list. If zero (0) is specified, then all of the
|
||||
# files should be in the root directory specified
|
||||
# below.
|
||||
# list={list} - OPTIONAL, If the disks are not sequential, then a
|
||||
# list of disk numbers can be given. This list should
|
||||
# be enclosed in brackets "{}", and the disk numbers
|
||||
# can be seperated by any of the following comma,
|
||||
# blank space, tab, or semicolon.
|
||||
# offset=<integer> - OPTIONAL, This is the offset from zero that the
|
||||
# disk numbers begin with. If no number is specified,
|
||||
# this defaults to 1. This option is ignored if
|
||||
# "list" is specified.
|
||||
# zeros - OPTIONAL, This specifies that leading zeros are
|
||||
# used in the parallel file naming convention. For
|
||||
# example, on the Paragon, the file name for the
|
||||
# first pfs disk is "/pfs/tmp/io_01/". If this is
|
||||
# specified, then the default is not to have leading
|
||||
# zeros in the path name, such as on the teraflop
|
||||
# machine "/pfs/tmp_1/".
|
||||
#
|
||||
# NOTE: The Fortran90 driver zfdrive ignores this input line.
|
||||
#-----------------------------------------------------------------------------
|
||||
Parallel Disk Info = number=4,zeros
|
||||
|
||||
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
# Parallel file location = <options>
|
||||
#
|
||||
# This line is OPTIONAL, only if the above line is excluded as well, or
|
||||
# the number of raids is specified as zero (0). If this line is excluded,
|
||||
# then the root directory is set to the execution directory, ".", and all
|
||||
# files should be in that directory. This line is used only for Nemesis
|
||||
# files.
|
||||
#
|
||||
# This line gives all of the information about where the parallel files are
|
||||
# located. There are only two options for this line, and both must be
|
||||
# specified. The options are:
|
||||
# root=<root directory name>
|
||||
# This line is used to specify what the name of the root directory is
|
||||
# on the target machine. This can be any valid root directory
|
||||
# name. For example, if one is running on an SGI workstation and
|
||||
# using the "tflop" numbering scheme then you could use something
|
||||
# similar to "/usr/tmp/pio_" in this field so that files would be
|
||||
# written to root directories named:
|
||||
# /usr/tmp/pio_1
|
||||
# /usr/tmp/pio_2
|
||||
# .
|
||||
# .
|
||||
# .
|
||||
# /usr/tmp/pio_<Parallel Disk Info, number>
|
||||
#
|
||||
# subdir=<subdirectory name>
|
||||
# This line specifies the name of the subdirectory, under the root
|
||||
# directory, where files are to be written. This is tacked onto
|
||||
# the end of the "root" after an appropriate integer is added to
|
||||
# "root". Continuing with the example given for "root", if "subdir"
|
||||
# had a value of "run1/input" files would be written to directories
|
||||
# named:
|
||||
# /usr/tmp/pio_1/run1/input/
|
||||
# /usr/tmp/pio_1/run1/input/
|
||||
# .
|
||||
# .
|
||||
# .
|
||||
# /usr/tmp/pio_<Parallel Disk Info, number>/run1/input/
|
||||
#
|
||||
# NOTE: The Fortran90 driver zfdrive ignores this input line.
|
||||
#-----------------------------------------------------------------------------
|
||||
Parallel File Location = root=/pfs/io_, subdir=mmstjohn
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Zdrive debug level = <integer>
|
||||
#
|
||||
# This line is optional. It sets a debug level within zdrive (not within
|
||||
# Zoltan) that determines what output is written to stdout at runtime.
|
||||
# The currently defined values are listed below. For a given debug level
|
||||
# value i, all debug output for levels <= i is printed.
|
||||
#
|
||||
# 0 -- No debug output is produced.
|
||||
# 1 -- Evaluation of the initial and final partition is done
|
||||
# through calls to driver_eval and Zoltan_LB_Eval.
|
||||
# 2 -- Function call traces through major driver functions are
|
||||
# printed.
|
||||
# 3 -- Generate output files of initial distribution.
|
||||
# Debug Chaco input files.
|
||||
# 4 -- Entire distributed mesh (elements, adjacencies, communication
|
||||
# maps, etc.) is printed. This output is done serially and can
|
||||
# be big and slow.
|
||||
#
|
||||
# Default value is 1.
|
||||
#-----------------------------------------------------------------------------
|
||||
Zdrive debug level = 1
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# text output = <integer>
|
||||
#
|
||||
# This line is optional. If the integer specified is greater than zero,
|
||||
# zdrive produces files listing the part and processor assignment of
|
||||
# each object. When "text output = 1," P files are generated, where P is
|
||||
# the number of processors used for the run. Files have suffix ".out.P.N",
|
||||
# where P is the number of processors and N = 0,...,P-1 is the processor that
|
||||
# generated the particular file.
|
||||
#
|
||||
# Default value is 1.
|
||||
#-----------------------------------------------------------------------------
|
||||
text output = 1
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# gnuplot output = <integer>
|
||||
#
|
||||
# This line is optional. If the integer specified is greater than zero,
|
||||
# zdrive produces files that can be plotted using gnuplot. If the integer is
|
||||
# one, only the vertices of the graph are outputted. If the integer is
|
||||
# greater than 1, edges are also outputted. Each processor generates
|
||||
# files containing its decomposition; these files are named similarly
|
||||
# to the standard output filenames generated by zdrive but they include
|
||||
# a "gnu" field. A file containing the gnuplot commands to actually
|
||||
# plot the decomposition is also generated; this file has a ".gnuload" suffix.
|
||||
# To plot the results, start gnuplot; then type
|
||||
# load "filename.gnuload"
|
||||
#
|
||||
# The decomposition can be based on processor assignment or part
|
||||
# assignment. See zdrive input line "plot partition".
|
||||
#
|
||||
# For Chaco input files, edges are not drawn between neighboring subdomains (
|
||||
# as Chaco input is balanced with respect to graph nodes). Data style
|
||||
# "linespoints" is used; this style can be changed using gnuplot's
|
||||
# "set data style ..." command.
|
||||
#
|
||||
# In addition, processor assignments are written to the parallel Nemesis files
|
||||
# to be viewed by other graphics packages (avs, mustafa, blot, etc.). Note
|
||||
# that the parallel Nemesis files must have space allocated for at least one
|
||||
# elemental variable; this allocation is done by nem_spread.
|
||||
#
|
||||
# Gnuplot capability currently works only for 2D problems.
|
||||
#
|
||||
# Default value is 0.
|
||||
#-----------------------------------------------------------------------------
|
||||
gnuplot output = 0
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# nemesis output = <integer>
|
||||
#
|
||||
# This line is optional. If the integer specified is greater than zero,
|
||||
# zdrive writes subdomain assignment information to parallel nemesis files.
|
||||
# These files match the input nemesis file names, but contain a ".blot" suffix.
|
||||
# The SEACAS utility nem_join can combine these files into a single Exodus file
|
||||
# for plotting by blot, avs, mustafa, etc. Note that the input parallel
|
||||
# Nemesis files must have space allocated for at least one
|
||||
# elemental variable; this allocation is done by nem_spread.
|
||||
#
|
||||
# The decomposition can be based on processor assignment or part
|
||||
# assignment. See zdrive input line "plot partition".
|
||||
#
|
||||
# This option does nothing for Chaco input files.
|
||||
#
|
||||
# Default value is 0.
|
||||
#-----------------------------------------------------------------------------
|
||||
nemesis output = 0
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# plot partition = <integer>
|
||||
#
|
||||
# This line is optional. If the integer specified is greater than zero,
|
||||
# zdrive writes part assignments to the gnuplot or nemesis output files;
|
||||
# one file per part is generated.
|
||||
# Otherwise, zdrive writes processor assignments to the gnuplot or nemesis
|
||||
# output files, with one file per processor generated.
|
||||
#
|
||||
# See zdrive input lines "gnuplot output" and "nemesis output".
|
||||
#
|
||||
# Default value is 0 (processor assignments written).
|
||||
#-----------------------------------------------------------------------------
|
||||
plot partition = 0
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# print mesh info file = <integer>
|
||||
#
|
||||
# This line is optional. If the integer specified is greater than zero,
|
||||
# zdrive produces files describing the mesh connectivity. Each processor
|
||||
# generates a file containing its vertices (with coordinates) and elements
|
||||
# (with vertex connectivity); these files are named
|
||||
# similarly to the standard output filenames generated by zdrive but they
|
||||
# include a ".mesh" suffix.
|
||||
#
|
||||
# Default value is 0.
|
||||
#-----------------------------------------------------------------------------
|
||||
print mesh info file = 0
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Chaco input assignment inverse = <integer>
|
||||
#
|
||||
# This line is optional. It sets the IN_ASSIGN_INV flag, indicating that
|
||||
# the "inverse" Chaco assignment format should be used if a Chaco assignment
|
||||
# file is read for the initial decomposition. If this flag is 0, the assignment
|
||||
# file lists, for each vertex, the processor to which it is assigned. If this
|
||||
# flag is 1, the assignment file includes, for each processor, the number of
|
||||
# vertices assigned to the processor followed by a list of those vertices.
|
||||
# See the Chaco User's guide for a more detailed description of this parameter.
|
||||
#
|
||||
# Default value is 0.
|
||||
#-----------------------------------------------------------------------------
|
||||
Chaco input assignment inverse = 0
|
||||
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Number of Iterations = <integer>
|
||||
#
|
||||
# This line is optional. It indicates the number of time the load-balancing
|
||||
# method should be run on the input data. The original input data is passed
|
||||
# to the method for each invocation.
|
||||
# Multiple iterations are useful primarily for testing the RCB_REUSE parameter.
|
||||
#
|
||||
# Default value is 1.
|
||||
#
|
||||
# NOTE: The Fortran90 driver zfdrive ignores this input line.
|
||||
#-----------------------------------------------------------------------------
|
||||
Number of Iterations = 1
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# zdrive action = <integer>
|
||||
#
|
||||
# This line is optional. It indicates the action the driver should take,
|
||||
# typically load-balancing or ordering. Valid values are:
|
||||
#
|
||||
# 0 -- No action.
|
||||
# 1 -- Load balance.
|
||||
# 2 -- Order.
|
||||
# 3 -- First load balance, then order.
|
||||
#
|
||||
# Default value is 1 (load balance).
|
||||
#
|
||||
# NOTE: The Fortran90 driver zfdrive ignores this input line.
|
||||
#-----------------------------------------------------------------------------
|
||||
zdrive action = 1
|
||||
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Test Drops = <integer>
|
||||
#
|
||||
# This line signals that zdrive should exercise the box- and point-assign
|
||||
# capability of Zoltan. Note that the partitioning method must support
|
||||
# box- and point-drop, and appropriate parameters (e.g., Keep_Cuts) must also
|
||||
# be passed to Zoltan; otherwise, an error is returned from the box- and
|
||||
# point-assign functions.
|
||||
#
|
||||
# Default value is 0.
|
||||
#
|
||||
# NOTE: The Fortran90 driver zfdrive ignores this input line.
|
||||
#-----------------------------------------------------------------------------
|
||||
Test Drops = 0
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Test DDirectory = <integer>
|
||||
#
|
||||
# This line signals that zdrive should exercise the Distributed Directory
|
||||
# utility of Zoltan. Comparisons between zdrive-generated communication maps
|
||||
# and DDirectory-generated communication maps are done. If a difference is
|
||||
# found, a diagnostic message containing "DDirectory Test" is printed as
|
||||
# output from zdrive.
|
||||
#
|
||||
# Default value is 0.
|
||||
#
|
||||
# NOTE: The Fortran90 driver zfdrive ignores this input line.
|
||||
#-----------------------------------------------------------------------------
|
||||
Test DDirectory = 0
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Test Null Import Lists = <integer>
|
||||
#
|
||||
# This line signals that zdrive should test Zoltan's capability to accept
|
||||
# NULL import lists to Zoltan_Help_Migrate. It allows the driver to pass NULL
|
||||
# import lists. This flag's value should not affect the output of zdrive.
|
||||
#
|
||||
# Default value is 0.
|
||||
#
|
||||
# NOTE: The Fortran90 driver zfdrive ignores this input line.
|
||||
#-----------------------------------------------------------------------------
|
||||
Test Null Import Lists = 0
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Test Multi Callbacks = <integer>
|
||||
#
|
||||
# This line signals that zdrive should test the list-based (MULTI) callback
|
||||
# functions. If this line is set to 1, zdrive registers list-based callback
|
||||
# functions. Otherwise, callbacks on individual functions are registered.
|
||||
# This flag's value should not affect the output of zdrive.
|
||||
#
|
||||
# Default value is 0.
|
||||
#-----------------------------------------------------------------------------
|
||||
Test Multi Callbacks = 0
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Test Local Partitions = <integer>
|
||||
#
|
||||
# This line signals that zdrive should test Zoltan using various values
|
||||
# of the NUM_LOCAL_PARTS parameter and/or nonuniform part sizes.
|
||||
# While setting NUM_LOCAL_PARTS using a "Zoltan Parameter" above
|
||||
# would make all processors have the same number of local parts,
|
||||
# this flag allows different processors to have different values for
|
||||
# NUM_LOCAL_PARTS.
|
||||
# Valid values are integers from 0 to 7.
|
||||
# 0: NUM_LOCAL_PARTS is not set (unless specified as a
|
||||
# "Zoltan Parameter" above).
|
||||
# 1: Each processor sets NUM_LOCAL_PARTS to its processor number;
|
||||
# e.g., processor 0 requests zero local parts; processor 1
|
||||
# requests 1 local part, etc.
|
||||
# 2: Each odd-numbered processor sets NUM_LOCAL_PARTS to its
|
||||
# processor number; even-numbered processors do not set
|
||||
# NUM_LOCAL_PARTS.
|
||||
# 3: One part per proc, but variable part sizes.
|
||||
# Only set part sizes for upper half of procs
|
||||
# (using Zoltan_LB_Set_Part_Sizes and global part numbers).
|
||||
# 4: Variable number of parts per proc, and variable
|
||||
# part sizes. Proc i requests i parts, each
|
||||
# of size 1/i.
|
||||
# 5: One part per proc, but variable part sizes.
|
||||
# Same as case 3, except all sizes are increased by one to
|
||||
# avoid possible zero-sized parts.
|
||||
# 6: One part per proc, but variable part sizes.
|
||||
# When nprocs >= 6, zero-sized parts on processors >= 2.
|
||||
# (This case is of particular interest for HSFC.)
|
||||
# 7: One part per proc, but variable part sizes.
|
||||
# When nprocs >= 6, zero-sized parts on processors <= 3.
|
||||
# (This case is of particular interest for HSFC.)
|
||||
#
|
||||
# Default value is 0.
|
||||
#-----------------------------------------------------------------------------
|
||||
Test Local Partitions = 0
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Test Generate Files = <integer>
|
||||
#
|
||||
# This line signals that zdrive should test Zoltan using Zoltan_Generate_Files
|
||||
# to produce output files that describe the geometry, graph, or hypergraph
|
||||
# used in the load-balancing. Such files may be useful for debugging.
|
||||
#
|
||||
# 0: Do not generate files.
|
||||
# 1: Generate files.
|
||||
#
|
||||
# Default value is 0.
|
||||
#-----------------------------------------------------------------------------
|
||||
Test Generate Files = 0
|
1
thirdParty/Zoltan/docs/index.html
vendored
Symbolic link
@ -0,0 +1 @@
|
||||
Zoltan.html
|
28
thirdParty/Zoltan/docs/tu_html/Makefile
vendored
Normal 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
@ -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
@ -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}
|
21
thirdParty/Zoltan/docs/tu_html/contents.tex
vendored
Normal 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}
|
||||
|
1385
thirdParty/Zoltan/docs/tu_html/examples.tex
vendored
Normal file
51
thirdParty/Zoltan/docs/tu_html/introduction.tex
vendored
Normal 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.
|
||||
|
68
thirdParty/Zoltan/docs/tu_html/methods.tex
vendored
Normal 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}
|
||||
|
231
thirdParty/Zoltan/docs/tu_html/tutorial.html
vendored
Normal 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>
|
||||
</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>
|
||||
</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>
|
||||
</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>
|
||||
</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>
|
BIN
thirdParty/Zoltan/docs/ug_html/Structural_MATVEC_Avg_Time.jpg
vendored
Normal file
After Width: | Height: | Size: 75 KiB |
BIN
thirdParty/Zoltan/docs/ug_html/figures/HGFigure.gif
vendored
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
thirdParty/Zoltan/docs/ug_html/figures/Z.gif
vendored
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
thirdParty/Zoltan/docs/ug_html/figures/arrow.gif
vendored
Normal file
After Width: | Height: | Size: 992 B |
131
thirdParty/Zoltan/docs/ug_html/figures/hierexample.fig
vendored
Normal file
@ -0,0 +1,131 @@
|
||||
#FIG 3.2
|
||||
Landscape
|
||||
Center
|
||||
Inches
|
||||
Letter
|
||||
100.00
|
||||
Single
|
||||
-2
|
||||
1200 2
|
||||
0 32 #ffffe2
|
||||
0 33 #f1ecff
|
||||
0 34 #c4ffff
|
||||
0 35 #e4ffe2
|
||||
6 2850 1275 9300 2025
|
||||
2 2 0 2 16 34 150 0 20 0.000 0 0 -1 0 0 5
|
||||
2875 1350 9275 1350 9275 1950 2875 1950 2875 1350
|
||||
4 0 16 100 0 18 24 0.0000 4 285 1485 5400 1800 Network\001
|
||||
-6
|
||||
6 825 2625 5325 4575
|
||||
6 3150 2775 3975 3900
|
||||
6 3150 2775 3975 3600
|
||||
1 3 0 2 13 35 110 0 20 0.000 1 0.0000 3547 3172 382 382 3547 3172 3929 3172
|
||||
4 0 13 100 0 18 18 0.0000 4 210 735 3187 3277 CPU2\001
|
||||
-6
|
||||
2 1 0 2 10 7 100 0 -1 0.000 0 0 -1 0 0 2
|
||||
3525 3525 3450 3825
|
||||
2 1 0 2 10 7 100 0 -1 0.000 0 0 -1 0 0 2
|
||||
3375 3525 3300 3825
|
||||
-6
|
||||
6 2100 2775 2925 3900
|
||||
6 2100 2775 2925 3600
|
||||
1 3 0 2 19 30 110 0 20 0.000 1 0.0000 2528 3172 382 382 2528 3172 2910 3172
|
||||
4 0 19 100 0 18 18 0.0000 4 210 735 2168 3277 CPU1\001
|
||||
-6
|
||||
2 1 0 2 10 7 100 0 -1 0.000 0 0 -1 0 0 2
|
||||
2550 3525 2700 3825
|
||||
2 1 0 2 10 7 100 0 -1 0.000 0 0 -1 0 0 2
|
||||
2700 3525 2850 3825
|
||||
-6
|
||||
6 4125 2775 4950 3900
|
||||
6 4125 2775 4950 3600
|
||||
1 3 0 2 26 32 110 0 20 0.000 1 0.0000 4522 3172 382 382 4522 3172 4904 3172
|
||||
4 0 26 100 0 18 18 0.0000 4 210 735 4162 3277 CPU3\001
|
||||
-6
|
||||
2 1 0 2 10 7 100 0 -1 0.000 0 0 -1 0 0 2
|
||||
4500 3525 4425 3825
|
||||
2 1 0 2 10 7 100 0 -1 0.000 0 0 -1 0 0 2
|
||||
4350 3525 4275 3825
|
||||
-6
|
||||
6 1350 3750 4725 4425
|
||||
2 2 0 2 10 34 100 0 20 0.000 0 0 -1 0 0 5
|
||||
1400 3825 4675 3825 4675 4350 1400 4350 1400 3825
|
||||
4 0 10 50 0 18 18 0.0000 4 270 1050 2550 4200 Memory\001
|
||||
-6
|
||||
6 1125 2775 1950 3900
|
||||
6 1125 2775 1950 3600
|
||||
1 3 0 2 22 33 110 0 20 0.000 1 0.0000 1553 3172 382 382 1553 3172 1935 3172
|
||||
4 0 22 100 0 18 18 0.0000 4 210 735 1193 3277 CPU0\001
|
||||
-6
|
||||
2 1 0 2 10 7 100 0 -1 0.000 0 0 -1 0 0 2
|
||||
1575 3525 1725 3825
|
||||
2 1 0 2 10 7 100 0 -1 0.000 0 0 -1 0 0 2
|
||||
1725 3525 1875 3825
|
||||
-6
|
||||
2 4 0 2 10 34 150 0 20 0.000 0 0 7 0 0 5
|
||||
5275 4500 875 4500 875 2700 5275 2700 5275 4500
|
||||
-6
|
||||
6 6975 2625 11475 4575
|
||||
6 9300 2775 10125 3900
|
||||
6 9300 2775 10125 3600
|
||||
1 3 0 2 13 35 110 0 20 0.000 1 0.0000 9697 3172 382 382 9697 3172 10079 3172
|
||||
4 0 13 100 0 18 18 0.0000 4 210 735 9337 3277 CPU2\001
|
||||
-6
|
||||
2 1 0 2 10 7 100 0 -1 0.000 0 0 -1 0 0 2
|
||||
9675 3525 9600 3825
|
||||
2 1 0 2 10 7 100 0 -1 0.000 0 0 -1 0 0 2
|
||||
9525 3525 9450 3825
|
||||
-6
|
||||
6 8250 2775 9075 3900
|
||||
6 8250 2775 9075 3600
|
||||
1 3 0 2 19 30 110 0 20 0.000 1 0.0000 8678 3172 382 382 8678 3172 9060 3172
|
||||
4 0 19 100 0 18 18 0.0000 4 210 735 8318 3277 CPU1\001
|
||||
-6
|
||||
2 1 0 2 10 7 100 0 -1 0.000 0 0 -1 0 0 2
|
||||
8700 3525 8850 3825
|
||||
2 1 0 2 10 7 100 0 -1 0.000 0 0 -1 0 0 2
|
||||
8850 3525 9000 3825
|
||||
-6
|
||||
6 10275 2775 11100 3900
|
||||
6 10275 2775 11100 3600
|
||||
1 3 0 2 26 32 110 0 20 0.000 1 0.0000 10672 3172 382 382 10672 3172 11054 3172
|
||||
4 0 26 100 0 18 18 0.0000 4 210 735 10312 3277 CPU3\001
|
||||
-6
|
||||
2 1 0 2 10 7 100 0 -1 0.000 0 0 -1 0 0 2
|
||||
10650 3525 10575 3825
|
||||
2 1 0 2 10 7 100 0 -1 0.000 0 0 -1 0 0 2
|
||||
10500 3525 10425 3825
|
||||
-6
|
||||
6 7275 2775 8100 3900
|
||||
6 7275 2775 8100 3600
|
||||
1 3 0 2 22 33 110 0 20 0.000 1 0.0000 7703 3172 382 382 7703 3172 8085 3172
|
||||
4 0 22 100 0 18 18 0.0000 4 210 735 7343 3277 CPU0\001
|
||||
-6
|
||||
2 1 0 2 10 7 100 0 -1 0.000 0 0 -1 0 0 2
|
||||
7725 3525 7875 3825
|
||||
2 1 0 2 10 7 100 0 -1 0.000 0 0 -1 0 0 2
|
||||
7875 3525 8025 3825
|
||||
-6
|
||||
6 7500 3750 10875 4425
|
||||
2 2 0 2 10 34 100 0 20 0.000 0 0 -1 0 0 5
|
||||
7550 3825 10825 3825 10825 4350 7550 4350 7550 3825
|
||||
4 0 10 50 0 18 18 0.0000 4 270 1050 8700 4200 Memory\001
|
||||
-6
|
||||
2 4 0 2 10 34 150 0 20 0.000 0 0 7 0 0 5
|
||||
11425 4500 7025 4500 7025 2700 11425 2700 11425 4500
|
||||
-6
|
||||
2 1 0 2 0 7 100 0 -1 0.000 0 0 -1 0 0 4
|
||||
3600 1950 3600 2325 3000 2325 3000 2700
|
||||
2 1 0 2 0 7 100 0 -1 0.000 0 0 -1 0 0 4
|
||||
8475 1950 8475 2325 9075 2325 9075 2700
|
||||
2 1 0 2 0 7 100 0 -1 0.000 0 0 -1 0 0 4
|
||||
6150 1950 6150 2325 6450 2325 6450 2700
|
||||
2 1 0 2 0 7 100 0 -1 0.000 0 0 -1 0 0 4
|
||||
6075 1950 6075 2325 5775 2325 5775 2700
|
||||
4 1 9 100 0 18 18 0.0000 4 210 960 2325 2625 Node 0\001
|
||||
4 1 9 100 0 18 36 0.0000 4 75 450 6150 3600 ...\001
|
||||
4 1 9 100 0 18 18 0.0000 4 210 960 9675 2625 Node 3\001
|
||||
4 0 17 50 -1 2 24 0.0000 4 330 4095 12000 1575 16 processes compute one\001
|
||||
4 0 17 50 -1 2 24 0.0000 4 330 4485 12000 1950 4-way ParMetis partitioning\001
|
||||
4 0 9 50 -1 2 24 0.0000 4 330 4050 11925 3375 Each SMP independently\001
|
||||
4 0 9 50 -1 2 24 0.0000 4 330 5295 11925 3750 computes 4-way RIB partitioning\001
|
BIN
thirdParty/Zoltan/docs/ug_html/figures/hierexample.gif
vendored
Normal file
After Width: | Height: | Size: 5.9 KiB |
548
thirdParty/Zoltan/docs/ug_html/ug.html
vendored
Normal file
@ -0,0 +1,548 @@
|
||||
<!-------- @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="ug.html">
|
||||
<meta name="review" content="28 May, 1999">
|
||||
<meta name="subject" content="Zoltan User's Guide">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
<meta name="sandia.create_date" content="05/28/99">
|
||||
<meta name="keywords" content="Zoltan, Zoltan User's Guide, Zoltan dynamic load balancing library, Zoltan parallel computing">
|
||||
<meta name="description" content="Zoltan: User's Guide for the Zoltan Library project at Sandia National Laboratories">
|
||||
<meta name="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<title>Zoltan User's Guide</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-------->
|
||||
<!--------CHANGE THE PAGE OWNER AND EMAIL ADDRESS-------->
|
||||
<link rev="made" title="name of contact" >
|
||||
<!--------CHANGE THE PAGE MAKER AND EMAIL ADDRESS-------->
|
||||
<!--------PLACE FIVE KEY WORDS WITHIN THE QUOTES-------->
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
</head>
|
||||
<body text="#000000">
|
||||
<!-- 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="160" BGCOLOR="#003366">
|
||||
<table BORDER=0 WIDTH="160" valign="top" >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="160"><!--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="160" valign="top" >
|
||||
<!-------------------------------------------------------------------------->
|
||||
<tr ALIGN=LEFT VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="150"><!----------- 0th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="../Zoltan.html">Zoltan
|
||||
Home Page</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 1st little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="ug.html">Zoltan
|
||||
User's Guide</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 2nd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="../dev_html/dev.html">Zoltan
|
||||
Developer's Guide</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 2A-nd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td><b><font face="Verdana, Arial, Helvetica"><a href="../Zoltan_FAQ.html">
|
||||
Frequently Asked Questions</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 3rd little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="../Zoltan_phil.html">Zoltan
|
||||
Project Description</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 4th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="../Zoltan_pubs.html">Papers
|
||||
and Presentations</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td VALIGN=TOP WIDTH="20"></td>
|
||||
</tr>
|
||||
|
||||
<!-------------------------------------------------------------------------->
|
||||
<tr ALIGN=LEFT VALIGN=TOP>
|
||||
<td VALIGN=TOP WIDTH="150"><!----------- 4Ath little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="../Zoltan_cite.html">How to Cite Zoltan</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 5th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="https://github.com/sandialabs/Zoltan">Download
|
||||
Zoltan</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 6th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica"><a href="../Zoltan_bugreport.html">Report a Zoltan Bug</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 7th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica">
|
||||
<a href="mailto: zoltan-dev@software.sandia.gov">Contact Zoltan Developers</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</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="150"><!----------- 8th little turquoise bevel button ------------>
|
||||
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="150" BGCOLOR="#00CCFF" >
|
||||
<tr ALIGN=CENTER VALIGN=CENTER>
|
||||
<td COLSPAN="2"><b><font face="Verdana, Arial, Helvetica">
|
||||
<a href="https://www.sandia.gov/general/privacy-security/index.html">Sandia Privacy and Security Notice</a></font></b></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
<td VALIGN=TOP WIDTH="20"></td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td COLSPAN="2"></td>
|
||||
</tr>
|
||||
<!-------------------------------------------------------------------------->
|
||||
</table>
|
||||
</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:
|
||||
</font></font></b>
|
||||
<br>
|
||||
<b><font face="Verdana, Arial, Helvetica"><font size=+2>
|
||||
Parallel Partitioning, Load Balancing and
|
||||
Data-Management Services
|
||||
</font></font></b>
|
||||
<p>
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
<!----------------THIS IS A CHANGE AREA---------------->
|
||||
<!--MAIN CONTENT SHOULD BE PLACED IN THE AREA BELOW-->
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<!------------------------------------------------------------------------->
|
||||
<b><font face="Verdana, Arial, Helvetica"><font size=+2>
|
||||
User's Guide
|
||||
</font></font></b>
|
||||
<hr WIDTH="100%">
|
||||
<p>
|
||||
<hr WIDTH="100%">
|
||||
<p>
|
||||
<h3><b> The Zoltan Team </b></h3>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td width="50%" valign=top>
|
||||
<b> Sandia National Laboratories</b><br>
|
||||
<a href="https://www.sandia.gov/~egboman">Erik Boman</a> <br>
|
||||
<a href="https://www.sandia.gov/~kddevin">Karen Devine</a><br>
|
||||
Vitus Leung<br>
|
||||
<a href="https://www.cise.ufl.edu/~srajaman/">Sivasankaran Rajamanickam</a><br>
|
||||
Lee Ann Riesen<br>
|
||||
</td>
|
||||
<td width="50%" valign=top>
|
||||
<b> Ohio State University</b><br>
|
||||
<a href="https://bmi.osu.edu/~umit/">Umit Catalyurek</a><br>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<h3><b> Past Zoltan Contributors</b></h3>
|
||||
<table width="100%"
|
||||
<tr>
|
||||
<td width="50%" valign=top>
|
||||
<b> Sandia National Laboratories: </b><br>
|
||||
Cedric Chevalier (currently at CEA, DAM, France) <br>
|
||||
Robert Heaphy<br>
|
||||
Bruce Hendrickson<br>
|
||||
Matthew St. John<br>
|
||||
Courtenay Vaughan<br>
|
||||
Michael Wolf <br>
|
||||
<br>
|
||||
</td>
|
||||
<td width="50%" valign=top>
|
||||
<b> Ohio State University</b><br>
|
||||
<a href="https://www.ece.osu.edu/~bozdagd">Doruk Bozdag</a><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%" valign=top>
|
||||
<b> Williams College</b><br>
|
||||
<a href="https://www.teresco.org/~terescoj/">James Teresco</a><br>
|
||||
<br>
|
||||
</td>
|
||||
<td width="50%" valign=top>
|
||||
<b> National Institute of Standards and Technology</b><br>
|
||||
<a href="https://math.nist.gov/~mitchell">William F. Mitchell</a><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%" valign=top>
|
||||
<b> Rensselaer Polytechnic Institute</b><br>
|
||||
Jamal Faik<br>
|
||||
Luis Gervasio<br>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
<p>
|
||||
<!---------------------------------------------------------------------------->
|
||||
<!---------------------------------------------------------------------------->
|
||||
<!---------------------------------------------------------------------------->
|
||||
<hr WIDTH="100%">
|
||||
<div align=right><b><i>Zoltan User's Guide, Version 3.8</i></b></div>
|
||||
|
||||
<p>
|
||||
<h4>
|
||||
<!----------- KDDKDD: Lost ability to generate PDF when Sandia disabled Acrobat. Hope to restore soon.
|
||||
<table border="1"> <tr> <td>
|
||||
<a href="http://cs.sandia.gov/Zoltan/Zoltan_pdf/ug.pdf">DOWNLOAD PDF VERSION HERE.</a>
|
||||
</td> </tr> </table>
|
||||
------>
|
||||
<p>
|
||||
|
||||
<h4>
|
||||
<a href="ug_intro.html">Introduction</a></h4>
|
||||
|
||||
<blockquote>
|
||||
<a href="ug_intro.html#Motivation">Project Motivation</a>
|
||||
<br><a href="ug_intro.html#Tools">The Zoltan Toolkit</a>
|
||||
<br><a href="ug_intro.html#Terms">Terminology</a>
|
||||
<br><a href="ug_intro.html#Design">Zoltan Design</a>
|
||||
</blockquote>
|
||||
|
||||
<h4>
|
||||
<a href="ug_usage.html">Using the Zoltan Library</a></h4>
|
||||
|
||||
<blockquote>
|
||||
<a href="ug_usage.html#System Requirements">System Requirements</a>
|
||||
<br><a href="ug_usage.html#Building the Library">Building the Library</a>
|
||||
<br><a href="ug_usage.html#Testing the Library">Testing the Library</a>
|
||||
<br><a href="ug_usage.html#ReportingBugs">Reporting Zoltan Bugs</a>
|
||||
<br><a href="ug_usage.html#Incorporating Zoltan">Incorporating Zoltan into Applications</a>
|
||||
<br><a href="ug_usage.html#Building Applications">Building Applications</a>
|
||||
<br><a href="ug_usage.html#Data Types for Object IDs">Data Types for Object IDs</a>
|
||||
<br><a href="ug_cpp.html">C++ Interface</a>
|
||||
<br><a href="ug_fortran.html">FORTRAN Interface</a>
|
||||
</blockquote>
|
||||
|
||||
<h4>
|
||||
<a href="ug_interface.html">Zoltan Interface Functions</a></h4>
|
||||
|
||||
<blockquote><a href="ug_interface.html#Error Codes">Error Codes</a>
|
||||
<br><a href="ug_interface_init.html">General Zoltan Interface Functions</a>
|
||||
<br><a href="ug_interface_lb.html">Load-Balancing Functions</a>
|
||||
<br><a href="ug_interface_augment.html">Functions for Adding Items to a
|
||||
Decomposition</a>
|
||||
<br><a href="ug_interface_mig.html">Migration Functions</a>
|
||||
<br><a href="ug_interface_order.html">Ordering Functions</a>
|
||||
<br><a href="ug_interface_color.html">Coloring Functions</a></blockquote>
|
||||
|
||||
<h4>
|
||||
<a href="ug_query.html">Application-Registered Query Functions</a></h4>
|
||||
|
||||
<blockquote>
|
||||
<a href="ug_query_lb.html">General Zoltan Query Functions</a>
|
||||
<br><a href="ug_query_mig.html">Migration Query Functions</a>
|
||||
</blockquote>
|
||||
|
||||
<h4>
|
||||
<a href="ug_param.html">Zoltan Parameters and Output Levels</a></h4>
|
||||
<blockquote>
|
||||
<a href="ug_param.html#General_Parameters">General Parameters</a>
|
||||
<br><a href="ug_param.html#Debug Levels in Zoltan">Debugging Levels</a>
|
||||
</blockquote>
|
||||
|
||||
<h4>
|
||||
<a href="ug_alg.html">Load-Balancing Algorithms and Parameters</a></h4>
|
||||
|
||||
<blockquote>
|
||||
<a href="ug_alg.html#LB Parameters">Load-Balancing Parameters</a>
|
||||
<br><a href="ug_alg_simple.html">Simple Partitioners for Testing</a>
|
||||
<blockquote>
|
||||
<a href="ug_alg_block.html">Block Partitioning </a>
|
||||
<br><a href="ug_alg_cyclic.html">Cyclic Partitioning </a>
|
||||
<br><a href="ug_alg_random.html">Random Partitioning </a>
|
||||
</blockquote>
|
||||
<a href="ug_alg_geom.html">Geometric (Coordinate-based) Partitioners</a>
|
||||
<blockquote>
|
||||
<a href="ug_alg_rcb.html">Recursive Coordinate Bisection (RCB)</a>
|
||||
<br><a href="ug_alg_rib.html">Recursive Inertial Bisection (RIB)</a>
|
||||
<br><a href="ug_alg_hsfc.html">Hilbert Space-Filling Curve (HSFC) Partitioning</a>
|
||||
<br><a href="ug_alg_reftree.html">Refinement Tree Based Partitioning</a>
|
||||
<!----------
|
||||
<br><a href="ug_alg_oct.html">Octree/Space-Filling Curve (SFC) Partitioning</a>
|
||||
----------->
|
||||
</blockquote>
|
||||
<a href="ug_alg_hypergraph.html">Hypergraph Partitioning, Repartitioning and Refinement</a>
|
||||
<blockquote>
|
||||
<a href="ug_alg_phg.html">PHG</a>
|
||||
<br><a href="ug_alg_patoh.html">PaToH</a>
|
||||
</blockquote>
|
||||
<a href="ug_alg_graph.html">Graph Partitioning and Repartitioning</a>
|
||||
<blockquote>
|
||||
<a href="ug_graph_vs_hg.html">Discussion of graph partitioning vs. hypergraph partitioning</a>
|
||||
<br><a href="ug_alg_phg.html">PHG</a>
|
||||
<br><a href="ug_alg_parmetis.html">ParMETIS</a>
|
||||
<br><a href="ug_alg_ptscotch.html">Scotch</a>
|
||||
</blockquote>
|
||||
<br><a href="ug_alg_hier.html">Hierarchical Partitioning</a>
|
||||
<blockquote>
|
||||
<a href="ug_alg_hier.html#HierMC">For multicore architectures</a>
|
||||
<br><a href="ug_alg_hier.html#HierDist">For distributed systems</a>
|
||||
</blockquote>
|
||||
</blockquote>
|
||||
|
||||
<h4>
|
||||
<a href="ug_order.html">Ordering Algorithms</a></h4>
|
||||
|
||||
<blockquote>
|
||||
<a href="ug_order_parmetis.html">Nested Dissection by METIS/ParMETIS</a>
|
||||
<br><a href="ug_order_ptscotch.html">Nested Dissection by Scotch</a>
|
||||
</blockquote>
|
||||
|
||||
<h4>
|
||||
<a href="ug_color.html">Coloring Algorithms</a></h4>
|
||||
|
||||
<blockquote>
|
||||
<a href="ug_color_parallel.html">Parallel Coloring</a>
|
||||
</blockquote>
|
||||
|
||||
<h4>
|
||||
<a href="ug_util.html">Data Services and Utilities</a></h4>
|
||||
<blockquote>
|
||||
<a href="ug_util.html#Building Utilities">Building Utilities</a>
|
||||
<br><a href="ug_util_mem.html">Dynamic Memory Management</a>
|
||||
<br><a href="ug_util_comm.html">Unstructured Communication</a>
|
||||
<br><a href="ug_util_dd.html">Distributed Data Directories</a>
|
||||
</blockquote>
|
||||
|
||||
<h4>
|
||||
<a href="ug_examples.html">Examples of Library Usage</a></h4>
|
||||
|
||||
<blockquote><a href="ug_examples_init.html">General Usage</a>
|
||||
<br><a href="ug_examples_lb.html">Load-Balancing</a>
|
||||
<br><a href="ug_examples_mig.html">Migration</a>
|
||||
<br><a href="ug_examples_query.html">Query Functions</a></blockquote>
|
||||
|
||||
|
||||
<h4>
|
||||
<a href="ug_release.html">Zoltan Release Notes</a></h4>
|
||||
|
||||
<h4>
|
||||
<a href="ug_backward.html">Backward Compatibility with Earlier Versions of Zoltan</a></h4>
|
||||
|
||||
<h4>
|
||||
<a href="ug_refs.html">References</a></h4>
|
||||
|
||||
<h4>
|
||||
<a href="ug_index.html">Index of Interface and Query Functions</a></h4>
|
||||
|
||||
<hr WIDTH="100%">
|
||||
Copyright (c) 2000-2012, Sandia National Laboratories. <br>
|
||||
|
||||
<hr WIDTH="100%">[<a href="../Zoltan.html">Zoltan Home Page</a> |
|
||||
<a href="ug_intro.html">Next:
|
||||
Introduction</a>] <!---------MAIN CONTENT AREA ENDS HERE---------><!-- CHANGE CONTACT + E-MAIL, NOTE "SUBJECT" IN E-MAIL CODE --></td>
|
||||
</tr>
|
||||
</table>
|
||||
<!--Image maps below-->
|
||||
<map name="shortMap">
|
||||
<area shape="rect" coords="2,2,108,14"href="https://www.sandia.gov/about/index.html"></area>
|
||||
<area shape="rect" coords="2,19,108,31"href="https://www.sandia.gov/mission/ste/index.html"></area>
|
||||
<area shape="rect" coords="2,36,108,48"href="https://www.sandia.gov/mission/index.html"></area>
|
||||
<area shape="rect" coords="2,53,108,65"href="https://www.sandia.gov/contact-us/index.html"></area>
|
||||
<area shape="rect" coords="2,70,108,82"href="https://www.sandia.gov/news/index.html"></area>
|
||||
<area shape="rect" coords="2,87,108,99"href="https://www.sandia.gov/search/index.html"></area>
|
||||
<area shape="rect" coords="2,104,108,116"href="https://www.sandia.gov/Main.html"></area>
|
||||
</map>
|
||||
<!----------------THIS IS A CHANGE AREA---------------->
|
||||
<!----NAME AND DATE OF LAST REVISION SHOULD BE HERE---->
|
||||
<!---------------END OF THIS CHANGE AREA--------------->
|
||||
</body>
|
||||
</html>
|
327
thirdParty/Zoltan/docs/ug_html/ug_alg.html
vendored
Normal file
@ -0,0 +1,327 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.76 [en] (X11; U; Linux 2.4.2-2smp i686) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
|
||||
<title>Zoltan User's Guide: Load-Balancing Algorithms and Parameters</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="ug.html">Zoltan User's Guide</a>
|
||||
| <a href="ug_alg_simple.html">Next</a> | <a href="ug_param.html">Previous</a></i></b></div>
|
||||
<!---------------------------------------------------------------------------->
|
||||
<h2>
|
||||
<a NAME="Algorithms"></a>Load-Balancing Algorithms and Parameters</h2>
|
||||
The following dynamic load-balancing algorithms are currently included
|
||||
in the Zoltan library:
|
||||
<blockquote>
|
||||
<br><a href="ug_alg_simple.html">Simple Partitioners for Testing</a>
|
||||
<blockquote>
|
||||
<a href="ug_alg_block.html">Block Partitioning (BLOCK)</a>
|
||||
<br><a href="ug_alg_cyclic.html">Cyclic Partitioning (CYCLIC)</a>
|
||||
<br><a href="ug_alg_random.html">Random Partitioning (RANDOM)</a>
|
||||
</blockquote>
|
||||
<a href="ug_alg_geom.html">Geometric (Coordinate-based) Partitioners</a>
|
||||
<blockquote>
|
||||
<a href="ug_alg_rcb.html">Recursive Coordinate Bisection (RCB)</a>
|
||||
<br><a href="ug_alg_rib.html">Recursive Inertial Bisection (RIB)</a>
|
||||
<br><a href="ug_alg_hsfc.html">Hilbert Space-Filling Curve Partitioning (HSFC)</a>
|
||||
<br><a href="ug_alg_reftree.html">Refinement Tree Based Partitioning (REFTREE)</a>
|
||||
<!----------
|
||||
<br><a href="ug_alg_oct.html">Octree/Space-Filling Curve (SFC) Partitioning (OCT)</a>
|
||||
----------->
|
||||
</blockquote>
|
||||
<a href="ug_alg_hypergraph.html">Hypergraph Partitioning, Repartitioning and Refinement (HYPERGRAPH)</a>
|
||||
<blockquote>
|
||||
<a href="ug_alg_phg.html">PHG</a>
|
||||
<br><a href="ug_alg_patoh.html">PaToH</a>
|
||||
</blockquote>
|
||||
<a href="ug_alg_graph.html">Graph Partitioning and Repartitioning (GRAPH)</a>
|
||||
<blockquote>
|
||||
<a href="ug_alg_phg.html">PHG</a>
|
||||
<br><a href="ug_alg_parmetis.html">ParMETIS</a>
|
||||
<br><a href="ug_alg_ptscotch.html">Scotch</a>
|
||||
</blockquote>
|
||||
<a href="ug_alg_hier.html">Hybrid Hierarchical Partitioning (HIER)</a>
|
||||
|
||||
</blockquote>
|
||||
The parenthetical string is the parameter value for <i><a href="#LB_METHOD">LB_METHOD</a></i>
|
||||
parameter; the parameter is set through a call to <b><a href="ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>.
|
||||
<p>For further analysis and discussion of some of the algorithms, see [<a href="ug_refs.html#hendrickson-devine">Hendrickson
|
||||
and Devine</a>].
|
||||
<p><!---------------------------------------------------------------------------->
|
||||
<h3>
|
||||
<a NAME="LB Parameters"></a>
|
||||
<hr><b>Load-Balancing Parameters</b></h3>
|
||||
While the overall behavior of Zoltan is controlled by <a href="ug_param.html">general
|
||||
Zoltan parameters</a>, the behavior of each load-balancing method is controlled
|
||||
by parameters specific to partitioning which are also set by calls to <b><a href="ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>.
|
||||
Many of these parameters are specific to individual partitioning algorithms,
|
||||
and are listed in the descriptions of the individual algorithms.
|
||||
However, several have meaning across multiple partitioning algorithms.
|
||||
These load-balancing parameters are described below. Unless indicated otherwise,
|
||||
these parameters apply to both <b><a href="ug_interface_lb.html#Zoltan_LB_Partition">Zoltan_LB_Partition</a></b>
|
||||
and
|
||||
<b><a href="ug_interface_lb.html#Zoltan_LB_Balance">Zoltan_LB_Balance</a></b>.
|
||||
<br>
|
||||
<table WIDTH="100%" NOSAVE >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP><b>Parameters:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><a NAME="LB_METHOD"></a> <i>LB_METHOD</i></td>
|
||||
|
||||
<td>The load-balancing algorithm used by Zoltan is specified by this parameter.
|
||||
Valid values are
|
||||
<blockquote>
|
||||
BLOCK (for <a href="ug_alg_block.html">block partitioning</a>),
|
||||
<br>RANDOM (for <a href="ug_alg_random.html">random partitioning</a>),
|
||||
<br>RCB (for <a href="ug_alg_rcb.html">recursive coordinate bisection</a>),
|
||||
<br>RIB (for <a href="ug_alg_rib.html">recursive inertial bisection</a>),
|
||||
<br>HSFC (for <a href="ug_alg_hsfc.html">Hilbert space-filling curve
|
||||
partitioning</a>),
|
||||
<br>REFTREE (for <a href="ug_alg_reftree.html">refinement tree based
|
||||
partitioning</a>)
|
||||
<br>GRAPH (to choose from collection of methods for <a href=ug_alg_graph.html>graphs</a>),
|
||||
<br>HYPERGRAPH (to choose from a collection of methods for <a href=ug_alg_hypergraph.html>hypergraphs</a>),
|
||||
<!--------------
|
||||
<br>OCTPART (for <a href="ug_alg_oct.html">octree partitioning</a>),
|
||||
---------------->
|
||||
<br>HIER (for hybrid <a href="ug_alg_hier.html">hierarchical partitioning</a>)
|
||||
<br>NONE (for no load balancing).</blockquote>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><span style="font-style: italic;"> <a name="LB_APPROACH"></a>LB_APPROACH</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;">The desired load balancing
|
||||
approach.
|
||||
Only <i>LB_METHOD</i> = <a href="ug_alg_hypergraph.html">HYPERGRAPH</a> or
|
||||
<a href="ug_alg_graph.html">GRAPH</a>
|
||||
uses the <i>LB_APPROACH</i> parameter. Valid values are
|
||||
<blockquote>
|
||||
PARTITION (Partition "from scratch," not taking
|
||||
into account the current data distribution; this option is recommended
|
||||
for static load balancing.)<br>
|
||||
REPARTITION (Partition but take into account current data
|
||||
distribution to keep data migration low; this option is recommended for
|
||||
dynamic load balancing.)<br>
|
||||
REFINE (Quickly improve the current data
|
||||
distribution.)<br>
|
||||
</blockquote>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><a NAME="NUM_GLOBAL_PARTS"></a> <i>NUM_GLOBAL_PARTS</i></td>
|
||||
|
||||
<td>The total number of parts to be generated by a call to <b><a href="ug_interface_lb.html#Zoltan_LB_Partition">Zoltan_LB_Partition</a></b>.
|
||||
Integer values greater than zero are accepted. Not valid for
|
||||
<b><a href="ug_interface_lb.html#Zoltan_LB_Balance">Zoltan_LB_Balance</a></b>. </td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><a NAME="NUM_LOCAL_PARTS"></a> <i>NUM_LOCAL_PARTS</i></td>
|
||||
|
||||
<td>The number of parts to be generated on this processor by a call
|
||||
to <b><a href="ug_interface_lb.html#Zoltan_LB_Partition">Zoltan_LB_Partition</a></b>.
|
||||
Integer values greater than or equal to zero are accepted. Not valid for <b><a href="ug_interface_lb.html#Zoltan_LB_Balance">Zoltan_LB_Balance</a></b>.
|
||||
If any processor sets this parameter, NUM_LOCAL_PARTS is assumed to be
|
||||
zero on processors not setting this parameter.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><a NAME="RETURN_LISTS"></a> <i>RETURN_LISTS</i></td>
|
||||
|
||||
<td>The lists returned by calls to
|
||||
<b><a href="ug_interface_lb.html#Zoltan_LB_Partition">Zoltan_LB_Partition</a></b>
|
||||
or
|
||||
<b><a href="ug_interface_lb.html#Zoltan_LB_Balance">Zoltan_LB_Balance</a></b>. Valid values are
|
||||
<blockquote>
|
||||
<br>"IMPORT", to return only information about objects to
|
||||
be imported to a processor
|
||||
<br>"EXPORT", to return only information about
|
||||
objects to be exported from a processor
|
||||
<br>"ALL", or "IMPORT AND EXPORT" (or any string with both "IMPORT"
|
||||
and "EXPORT" in it) to return both import and export information
|
||||
<br> "PARTS" (or "PART ASSIGNMENT" or any string with "PART" in it)
|
||||
to return the new process and part
|
||||
assignment of every local object, including those not being
|
||||
exported.
|
||||
<br>"NONE", to return neither import nor export information
|
||||
</blockquote>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><a NAME="REMAP"></a> <i>REMAP</i></td>
|
||||
|
||||
<td>Within
|
||||
<b><a href="ug_interface_lb.html#Zoltan_LB_Partition">Zoltan_LB_Partition</a></b>
|
||||
or
|
||||
<b><a href="ug_interface_lb.html#Zoltan_LB_Balance">Zoltan_LB_Balance</a></b>,
|
||||
renumber parts to maximize overlap between the old decomposition and
|
||||
the new decomposition (to reduce data movement from old to new decompositions).
|
||||
Valid values are "0" (no remapping) or "1" (remapping). Part assignments from
|
||||
<a href="ug_query_lb.html#ZOLTAN_PART_MULTI_FN">ZOLTAN_PART_MULTI_FN</a> or
|
||||
<a href="ug_query_lb.html#ZOLTAN_PART_FN">ZOLTAN_PART_FN</a> query functions
|
||||
can be used in remapping if provided; otherwise, processor numbers are used
|
||||
as part numbers. Requests for remapping
|
||||
are ignored when, in the new decomposition, a part is spread across
|
||||
multiple processors or part sizes are specified using <a href="ug_interface_lb.html#Zoltan_LB_Set_Part_Sizes"><b>Zoltan_LB_Set_Part_Sizes</b>.</a></td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><a NAME="IMBALANCE_TOL"></a> <i>IMBALANCE_TOL</i></td>
|
||||
|
||||
<td>The amount of load imbalance the partitioning algorithm should deem
|
||||
acceptable. The load on each processor is computed as the sum of the weights
|
||||
of objects it is assigned. The imbalance is then computed as the maximum
|
||||
load divided by the average load. An value for <i>IMBALANCE_TOL</i> of
|
||||
1.2 indicates that 20% imbalance is OK; that is, the maximum over the average
|
||||
shouldn't exceed 1.2. </td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><a NAME="MIGRATE_ONLY_PROC_CHANGES"></a> <i>MIGRATE_ONLY_PROC_CHANGES</i></td>
|
||||
|
||||
<td>If this value is set to TRUE (non-zero), Zoltan's migration functions will
|
||||
migrate only objects moving to new processors. They will not migrate objects
|
||||
for which only the part number has changed; the objects' processor numbers
|
||||
must change as well. If this value is set to FALSE (zero), Zoltan's migration
|
||||
functions will migrate all objects with new part or processor assignments.
|
||||
</td>
|
||||
</tr>
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><a NAME="AUTO_MIGRATE"></a> <i>AUTO_MIGRATE</i></td>
|
||||
|
||||
<td>If this value is set to TRUE (non-zero), Zoltan will automatically
|
||||
perform the data migration during calls to <b><a href="ug_interface_lb.html#Zoltan_LB_Partition">Zoltan_LB_Partition</a></b>
|
||||
or
|
||||
<b><a href="ug_interface_lb.html#Zoltan_LB_Balance">Zoltan_LB_Balance</a></b>.
|
||||
A full discussion of automatic migration can be found in the description
|
||||
of the <a href="ug_interface_mig.html">migration interface functions</a>. </td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP><a NAME="Default_Parameter_Values"></a><b>Default Values:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td></td>
|
||||
|
||||
<td><i>LB_METHOD</i> = RCB</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td></td>
|
||||
|
||||
<td><i>LB_APPROACH</i> = REPARTITION</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td></td>
|
||||
|
||||
<td><i>NUM_GLOBAL_PARTS</i> = Number of processors specified in
|
||||
<b><a href="ug_interface_init.html#Zoltan_Create">Zoltan_Create</a></b>.</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td></td>
|
||||
|
||||
<td><i>NUM_LOCAL_PARTS</i> = 1</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td></td>
|
||||
|
||||
<td><i>RETURN_LISTS</i> = ALL</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td></td>
|
||||
|
||||
<td><i>REMAP</i> = 1</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td></td>
|
||||
|
||||
<td><i>IMBALANCE_TOL</i> = 1.1</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td></td>
|
||||
|
||||
<td><i>MIGRATE_ONLY_PROC_CHANGES</i> = 1</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td></td>
|
||||
|
||||
<td><i>AUTO_MIGRATE</i> = FALSE</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p><!---------------------------------------------------------------------------->
|
||||
<hr WIDTH="100%">[<a href="ug.html">Table of Contents</a> | <a href="ug_alg_simple.html">Next:
|
||||
Simple Partitioners for Testing</a> | <a href="ug_param.html">Previous:
|
||||
Zoltan Parameters and Output Levels</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
108
thirdParty/Zoltan/docs/ug_html/ug_alg_block.html
vendored
Normal file
@ -0,0 +1,108 @@
|
||||
<!-------- @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="GENERATOR"
|
||||
content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<title>Zoltan User's Guide: BLOCK</title>
|
||||
</head>
|
||||
<body bgcolor="#ffffff">
|
||||
<div align="right"><b><i><a href="ug.html">Zoltan User's Guide</a>
|
||||
| <a href="ug_alg_cyclic.html">Next</a> | <a
|
||||
href="ug_alg_simple.html">Previous</a></i></b></div>
|
||||
<h2>
|
||||
<a name="BLOCK"></a>Block</h2>
|
||||
A simple partitioner based on block partitioning of the objects.
|
||||
It is mainly intended for testing. It uses neither geometry
|
||||
nor connectivity (graph/hypergraph), so it requires very few query
|
||||
functions.
|
||||
|
||||
The block strategy is as follows: Consider all objects (on all processors) as a linear sequence. Assign the first block of n/num_parts objects to the first part, the next block to the second, and so on. Block is smart enough to generalize this method to handle vertex weights and target part sizes. Only a single weight per object (Obj_Weight_Dim=1) is currently supported.
|
||||
<br>
|
||||
|
||||
<table width="100%" nosave="">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Method String:</b></td>
|
||||
<td><b>Block</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Parameters:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top"><b>Required Query Functions:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</a></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>
|
||||
|
||||
<HR WIDTH="100%">[<a href="ug.html">Table of Contents</a> |
|
||||
<a href="ug_alg_cyclic.html">Next: Cyclic</a>
|
||||
| <a href="ug_alg_simple.html">Previous: Simple Partitioners for Testing</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
106
thirdParty/Zoltan/docs/ug_html/ug_alg_cyclic.html
vendored
Normal file
@ -0,0 +1,106 @@
|
||||
<!-------- @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="GENERATOR"
|
||||
content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<title>Zoltan User's Guide: BLOCK</title>
|
||||
</head>
|
||||
<body bgcolor="#ffffff">
|
||||
<div align="right"><b><i><a href="ug.html">Zoltan User's Guide</a>
|
||||
| <a href="ug_alg_random.html">Next</a> | <a
|
||||
href="ug_alg_block.html">Previous</a></i></b></div>
|
||||
<h2>
|
||||
<a name="CYCLIC"></a>Cyclic</h2>
|
||||
A simple partitioner based on cyclic (round robin) partitioning of the objects.
|
||||
It uses neither geometry nor connectivity (graph/hypergraph), so it requires very few query functions. This method currently does not take into account target part sizes nor weights, so the parts may not be balanced in this case!
|
||||
<br>
|
||||
Note that the partitioning is cyclic with respect to the local order of objects, and NOT by the global ids.
|
||||
<br>
|
||||
|
||||
<table width="100%" nosave="">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Method String:</b></td>
|
||||
<td><b>Cyclic</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Parameters:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top"><b>Required Query Functions:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</a></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>
|
||||
|
||||
<HR WIDTH="100%">[<a href="ug.html">Table of Contents</a> |
|
||||
<a href="ug_alg_random.html">Next: Random</a>
|
||||
| <a href="ug_alg_block.html">Previous: Block Partitioner</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
105
thirdParty/Zoltan/docs/ug_html/ug_alg_geom.html
vendored
Normal file
@ -0,0 +1,105 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.76 [en] (X11; U; Linux 2.4.2-2smp i686) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<title>Zoltan User's Guide: Geometric (Coordinate-Based) Partitioners</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="ug.html">Zoltan User's Guide</a>
|
||||
| <a href="ug_alg_rcb.html">Next</a> | <a href="ug_alg_random.html">Previous</a></i></b></div>
|
||||
|
||||
<h2>
|
||||
<a name="GEOM"></a>Geometric (Coordinate-based) Partitioners</h2>
|
||||
|
||||
Geometric partitioners divide data into parts based on the physical
|
||||
coordinates of the data. Objects assigned to a single part tend to be
|
||||
physically close to each other in space. Such partitioners are very useful for
|
||||
applications that don't have explicit
|
||||
connectivity information (such as particle methods) or for which geometric
|
||||
locality is important (such as contact detection).
|
||||
They are also widely used in adaptive finite
|
||||
element methods because, in general, they execute very quickly and yield
|
||||
moderately good partition quality.
|
||||
|
||||
<p>
|
||||
The geometric methods are the easiest non-trivial partitioners to incorporate
|
||||
into applications, as they require only four callbacks: two returning
|
||||
<a href="ug_query_lb.html#General Functions">object information</a> and
|
||||
two returning <a href="ug_query_lb.html#Geometry-based Functions">coordinate
|
||||
information</a>.
|
||||
|
||||
<p>
|
||||
We group <a href="ug_alg_reftree.html">refinement-tree partitioning</a>
|
||||
for adaptive mesh refinement applications
|
||||
into the geometric partitioners because
|
||||
it uses geometric information to determine an initial ordering for coarse
|
||||
elements of adaptively refined meshes. The refinement-tree partitioner
|
||||
also requires <a href="ug_query_lb.html#Tree-based Functions">tree-based
|
||||
callbacks</a> with connectivity information between
|
||||
coarse and fine elements in refined meshes.
|
||||
|
||||
<blockquote>
|
||||
<a href="ug_alg_rcb.html">Recursive Coordinate Bisection</a> (RCB)
|
||||
<br><a href="ug_alg_rib.html">Recursive Inertial Bisection</a> (RIB)
|
||||
<br><a href="ug_alg_hsfc.html">Hilbert Space-Filling Curve Partitioning</a> (HSFC)
|
||||
<br><a href="ug_alg_reftree.html">Refinement Tree Based Partitioning</a> (Reftree)
|
||||
</blockquote>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
<hr WIDTH="100%">[<a href="ug.html">Table of Contents</a> | <a href="ug_alg_rcb.html">Next:
|
||||
Recursive Coordinate Bisection</a> | <a href="ug_alg_random.html">Previous:
|
||||
Random Partitioning</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
106
thirdParty/Zoltan/docs/ug_html/ug_alg_graph.html
vendored
Normal file
@ -0,0 +1,106 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.76 [en] (X11; U; Linux 2.4.2-2smp i686) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<title>Zoltan User's Guide: Graph Algorithms</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="ug.html">Zoltan User's Guide</a>
|
||||
| <a href="ug_graph_vs_hg.html">Next</a> | <a href="ug_alg_patoh.html">Previous</a></i></b></div>
|
||||
|
||||
Note: See also <a href="ug_alg_hypergraph.html">hypergraph partitioning</a>. <p>
|
||||
|
||||
<h2>
|
||||
<a NAME="Graph"></a>Graph partitioning</h2>
|
||||
|
||||
<p>Zoltan performs graph partitioning when the <i>LB_METHOD</i>
|
||||
parameter is set to GRAPH.
|
||||
Zoltan provides three packages capable of partitioning a graph. The
|
||||
package is chosen by setting the GRAPH_PACKAGE parameter.
|
||||
Two packages (ParMetis and Scotch) are external packages and not
|
||||
part of Zoltan but accessible via Zoltan. The last package is
|
||||
PHG, Zoltan's native hypergraph partitioner. PHG will treat
|
||||
the graph as a regular hypergraph with edge size two.
|
||||
Since PHG was designed for general hypergraphs, it is usually
|
||||
slower than graph partitioners but often produces better quality.
|
||||
|
||||
<br>
|
||||
<table WIDTH="100%" NOSAVE >
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Method String:</b></td>
|
||||
|
||||
<td><b>GRAPH</b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><b>Parameters:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><i> GRAPH_PACKAGE</i></td>
|
||||
|
||||
<td>The software package to use in partitioning the graph.
|
||||
<br><i><a href=ug_alg_phg.html>PHG</a> (default)</i>
|
||||
<br><i><a href=ug_alg_parmetis.html>ParMETIS</a></i>
|
||||
<br><i><a href=ug_alg_ptscotch.html>Scotch/PT-Scotch</a></i>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
<hr WIDTH="100%">[<a href="ug.html">Table of Contents</a> | <a href="ug_graph_vs_hg.html">Next:
|
||||
Graph vs. Hypergraph Partitioning</a> | <a href="ug_alg_patoh.html">Previous:
|
||||
PaToH Hypergraph Partitioning</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
474
thirdParty/Zoltan/docs/ug_html/ug_alg_hier.html
vendored
Normal file
@ -0,0 +1,474 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<TITLE>Zoltan User's Guide: Hierarchical Partitioning</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="ug.html">Zoltan User's Guide</a> | <a href="ug_order.html">Next</a> | <a href="ug_alg_ptscotch.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<H2>
|
||||
<A NAME="Hier"></A>Hierarchical Partitioning (HIER)</H2>
|
||||
|
||||
Hierarchical partitioning refers to a sequence of partitionings,
|
||||
where each level in the sequence refines the partitions computed in
|
||||
the prevous level. Zoltan provides two ways to perform hierarchical
|
||||
partitioning, one targeted to heterogeneous distributed systems, and
|
||||
one targeted to machines with multiple multicore processors.
|
||||
<p>
|
||||
Partitioning to the hierarchy of a distributed system is described
|
||||
<a href="#HierDist">below</a>. Employing callbacks to the user at
|
||||
each level, Zoltan will balance the problem across platforms of
|
||||
varying capabilities while minimizing communication
|
||||
along slower links.
|
||||
<p>
|
||||
Partitioning an application to run on a multicore machine, where the
|
||||
multicore nodes are expected to be homogeneous in architecture, is
|
||||
described in the <a href="#HierMC"> next </a> section. Using a parameter
|
||||
supplied by the application which describes node topology, Zoltan will partition
|
||||
the problem to balance computation while minimizing inter-node communication,
|
||||
and communication between on-node structures.
|
||||
|
||||
<H3>
|
||||
<A NAME="HierMC"></A>Hierarchical Partitioning for multicore machines</H2>
|
||||
|
||||
With this method, Zoltan computes partitions that balance computation and
|
||||
minimize communication costs on multicore architectures.
|
||||
|
||||
<p>
|
||||
Some limitations of this method to note are that Zoltan assumes:
|
||||
<ul>
|
||||
<li>Each node (processor) of the multicore machine has the same architecture.
|
||||
<li>The MPI process ranks are consecutive on the multicore nodes.
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
In particular, if your parameters imply there are 4 MPI processes on each multicore node, Zoltan will assume that processes 0, 1, 2 and 3 are on the same node. Your system administrator should be able to show you how to ensure that your processes are loaded in this order.
|
||||
<p>
|
||||
The results shown below emphasize that the benefit to be gained from levels of
|
||||
hierarchical partitioning is very dependent on the commmunication patterns
|
||||
of the problem.
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<table border=2 >
|
||||
<tr>
|
||||
<td>
|
||||
<img width=90% src=Structural_MATVEC_Avg_Time.jpg alt="matvec timings"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan=2>These results show the runtime for matrix vector multiplication
|
||||
for some matrices from the <a href=https://www.cise.ufl.edu/research/sparse/matrices/>University of Florida</a> matrix collection.
|
||||
The tests were run on four nodes of the
|
||||
<a href=https://www.nersc.gov/users/computational-systems/hopper/>Hopper</a>
|
||||
machine
|
||||
at <a href=https://www.nersc.gov>NERSC</a>, a machine composed of dual-socket, dual-die nodes, with each die having 6 cores.
|
||||
The graphs were first partitioned once across all 96 processes with
|
||||
<a href=https://www.labri.fr/perso/pelegrin/scotch/>PTScotch</a>. Then, using
|
||||
hierarchical partitioning with <I>TOPOLOGY="24"</I>, they were partitioned across the nodes first, then the cores. Then with <I>TOPOLOGY="2,12"</I> they were partitioned across the nodes, then across the sockets, then into 12 parts. Finally, with <I>TOPOLOGY="2,2,6"</I> they were partitioned across the nodes, then the sockets, then the dies, and finally partitioned into 6 parts. (Runtime is normalized to the flat partitioning case.)
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<BR>
|
||||
<TABLE WIDTH="100%" NOSAVE >
|
||||
<TR>
|
||||
<TD VALIGN=TOP><B>Method String:</B></TD>
|
||||
<TD><B>HIER</B></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD><B>Parameters:</B></TD>
|
||||
<TD></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP><I> HIER_ASSIST</I></TD>
|
||||
<TD>Setting this parameter to 1 indicates that the application wishes Zoltan
|
||||
to perform hierarchcial partitioning for homogeneous multicore nodes, without requiring the application to supply query functions guiding the partitioning.
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP> <I>TOPOLOGY</I></TD>
|
||||
<TD>This comma-separated list of integers describes the topology of the multicore node. For example:
|
||||
<BR>"2,8" may refer to a dual-socket processor where each socket has 8 cores.
|
||||
<BR>"2,4,6" may refer to a dual-socket, 4-die, 6-core node
|
||||
<BR>"16" would refer to a 16-core node
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP><I> HIER_DEBUG_LEVEL</I></TD>
|
||||
<TD>
|
||||
0 = no debugging output
|
||||
<BR>1 = show hierarchy and MPI ranks for each part at each level
|
||||
<BR>2 = in addition, all processes print status information at each level
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP><B>Default:</B></TD>
|
||||
<TD></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
<TD><I>HIER_ASSIST</I> = 1 if <I>TOPOLOGY</I> is defined, 0 otherwise</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD></TD>
|
||||
<TD><I>TOPOLOGY</I> has no default value.</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD></TD>
|
||||
<TD><I>HIER_DEBUG_LEVEL</I> = 0</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP><B>Required Query Functions:</B></TD>
|
||||
<TD>There are no query functions required specifically for hierarchical
|
||||
partitioning to multicore nodes. If the application supplies
|
||||
<a href=ug_alg_geom.html>geometric query functions</a> then Zoltan will use
|
||||
<a href=ug_alg_rib.html>RIB</a> partitioning at each level, using whatever
|
||||
relevant parameters the application has set. If the application supplies
|
||||
<a href=ug_alg_graph.html>graph query functions</a>, then Zoltan will perform
|
||||
<a href=ug_alg_graph.html>graph partitioning</a> at each level, again using whatever
|
||||
relevant graph partitioning parameters the application has set.
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
|
||||
<H3>
|
||||
<A NAME="HierDist"></A>Hierarchical Partitioning for distributed computing</H2>
|
||||
|
||||
|
||||
Hierarchical partitioning allows the creation of hybrid partitions,
|
||||
computed using combinations of other Zoltan procedures.
|
||||
For hierarchical and heterogeneous systems, different choices may be
|
||||
appropriate in different parts of the parallel environment. There are
|
||||
tradeoffs in execution time and partition quality (<I>e.g.</I>, surface
|
||||
indices/communication volume, interprocess connectivity, strictness of load
|
||||
balance) and some may be more important than others
|
||||
in some circumstances. For example, consider a cluster of symmetric
|
||||
multiprocessor (SMP) nodes connected by Ethernet. A more costly graph
|
||||
partitioning can be done to partition among the nodes, to minimize
|
||||
communication across the slow network interface, possibly at the
|
||||
expense of some computational imbalance. Then, a fast geometric
|
||||
algorithm can be used to partition independently within each node.<P>
|
||||
|
||||
Zoltan's hierarchical balancing, implemented by Jim Teresco (Williams
|
||||
College) during a 2003-04 visit to Sandia, automates the creation of
|
||||
hierarchical partitions [<U><A HREF="ug_refs.html#para04">Teresco,
|
||||
<I>et al.</I></A></U>]. It can be used directly by an application or
|
||||
be guided by the tree representation of the computational environment
|
||||
created and maintained by the <A
|
||||
HREF="https://www.cs.williams.edu/drum/">Dynamic Resource Utilization
|
||||
Model (DRUM)</A> [<U><A HREF="ug_refs.html#adapt03">Devine, <I>et
|
||||
al.</I> </A>, <A HREF="ug_refs.html#cluster04">Faik, <I>et
|
||||
al.</I></A>, <A HREF="ug_refs.html#cise05">Teresco, <I>et
|
||||
al.</I></A></U>].
|
||||
<!-- DRUM is a software system that supports automatic
|
||||
resource-aware partitioning and dynamic load balancing for
|
||||
heterogeneous, non-dedicated, and hierarchical computing environments.
|
||||
DRUM dynamically models the computing environment using a tree
|
||||
structure that encapsulates the capabilities and performance of
|
||||
communication and processing resources. The tree is populated with
|
||||
performance data obtained from <I>a priori</I> benchmarks and dynamic
|
||||
monitoring agents that run concurrently with the application. It is
|
||||
then used to guide partition-weighted and hierarchical partitioning
|
||||
and dynamic load balancing. Partition-weighted balancing is available
|
||||
through <A HREF="ug_drum.html">Zoltan's DRUM interface</A>. --><P>
|
||||
|
||||
The hierarchical balancing implementation utilizes a lightweight
|
||||
intermediate structure and a set of callback functions that permit an
|
||||
automated and efficient hierarchical balancing which can use any of
|
||||
the procedures available within Zoltan without modification and in any
|
||||
combination. Hierachical balancing is invoked by an application the
|
||||
same way as other Zoltan procedures and interfaces with
|
||||
applications through callback functions. A hierarchical balancing
|
||||
step begins by building an intermediate structure using these
|
||||
callbacks. This structure is an augmented version of the graph
|
||||
structure that Zoltan builds to make use of the ParMetis and
|
||||
Jostle libraries. The hierarchical balancing
|
||||
procedure then provides its own callback functions to allow existing
|
||||
Zoltan procedures to be used to query and update the intermediate
|
||||
structure at each level of a hierarchical balancing. After all levels
|
||||
of the hierarchical balancing have been completed, Zoltan's usual
|
||||
migration arrays are constructed and returned to the application.
|
||||
Thus, only lightweight objects are migrated internally between levels,
|
||||
not the (larger and more costly) application data.<P>
|
||||
|
||||
Hierarchical partitioning requires three callback functions to specify
|
||||
the number of levels (<B><A
|
||||
HREF="ug_query_lb.html#ZOLTAN_HIER_NUM_LEVELS_FN">ZOLTAN_HIER_NUM_LEVELS_FN</A></B>),
|
||||
which parts each process should compute at each level (<B><A
|
||||
HREF="ug_query_lb.html#ZOLTAN_HIER_PART_FN">ZOLTAN_HIER_PART_FN</A></B>),
|
||||
and which method and parameters to be used at each level (<B><A
|
||||
HREF="ug_query_lb.html#ZOLTAN_HIER_METHOD_FN">ZOLTAN_HIER_METHOD_FN</A></B>).
|
||||
These are in addition to the callbacks needed to specify objects,
|
||||
coordinates, and graph edges. This fairly cumbersome interface can be
|
||||
avoided by using the separately available <A
|
||||
HREF="https://www.cs.williams.edu/~terescoj/research/zoltanParams/">zoltanParams</A>
|
||||
library. This allows a file-based description to replace these
|
||||
callbacks. A more direct interface with DRUM's hierarchical machine
|
||||
model is also planned, allowing hierarchical balancing parameters to
|
||||
be set by a graphical configuration tool.<P>
|
||||
|
||||
We use a simple example to illustrate the use of the callback
|
||||
mechanism to specify hierarchical a hierarchical partitioning. In the
|
||||
figure <a href="#HierFigure">below</a>, a hierarchical computing
|
||||
environment and a desired hierarchical partitioning is shown.
|
||||
<p>
|
||||
<center>
|
||||
<a NAME="HierFigure"></a>
|
||||
|
||||
<img SRC="figures/hierexample.gif" />
|
||||
</center>
|
||||
<p>
|
||||
|
||||
Assume we start one process for each processor, with the processes of
|
||||
ranks 0-3 assigned to Node 0, 4-7 to Node 1, 8-11 to Node 2, and 12-15
|
||||
to Node 3. When hierarchical partitioning is invoked, the following
|
||||
callbacks will be made, and the following actions should be taken by
|
||||
the callbacks on each node.
|
||||
|
||||
<OL>
|
||||
|
||||
<LI>The <B><A
|
||||
HREF="ug_query_lb.html#ZOLTAN_HIER_NUM_LEVELS_FN">ZOLTAN_HIER_NUM_LEVELS_FN</A></B>
|
||||
callback is called. All processes should return 2, the number of
|
||||
levels in the hierarchy.
|
||||
|
||||
<LI>The <B><A
|
||||
HREF="ug_query_lb.html#ZOLTAN_HIER_PART_FN">ZOLTAN_HIER_PART_FN</A></B>
|
||||
callback is called, with a <B>level</B> parameter equal to 0. This
|
||||
means the callback should return, on each process, the part
|
||||
number to be computed at level 0 by that process. Since in our
|
||||
example, the 16 processes are computing a four-way partition at level
|
||||
0, processes with ranks 0-3 should return 0, ranks 4-7 should return
|
||||
1, 8-11 should return 2, and 12-15 should return 3.
|
||||
|
||||
<LI>The <B><A
|
||||
HREF="ug_query_lb.html#ZOLTAN_HIER_METHOD_FN">ZOLTAN_HIER_METHOD_FN</A></B>
|
||||
callback is called, with a <B>level</B> parameter equal to 0, and the
|
||||
Zoltan_Struct that has been allocated internally by the hierarchical
|
||||
partitioning procedure is passed as <B>zz</B>. The callback should
|
||||
use Zoltan_Set_Param to specify an LB_METHOD and any other parameters
|
||||
that should be done by the four-way partition across the 16 processes
|
||||
at level 0. In this case, two calls might be appropriate:
|
||||
|
||||
<PRE>
|
||||
Zoltan_Set_Param(zz, "LB_METHOD", "PARMETIS");
|
||||
Zoltan_Set_Param(zz, "PARMETIS_METHOD", "PARTKWAY");
|
||||
</PRE>
|
||||
|
||||
At this point, Zoltan's hierarchical balancing procedure can proceed
|
||||
with the level 0 partition, using ParMetis' PARTKWAY method to
|
||||
produce a four-way partition across the 16 processes, with part 0
|
||||
distributed among the processes with ranks 0-3, part 1
|
||||
distributed among 4-7, part 2 distributed among 8-11, and
|
||||
part 3 distributed among 12-15.
|
||||
|
||||
|
||||
<LI>The <B><A
|
||||
HREF="ug_query_lb.html#ZOLTAN_HIER_PART_FN">ZOLTAN_HIER_PART_FN</A></B>
|
||||
callback is called again, this time with <B>level</B> equal to 1. At
|
||||
level 1, each group of four processes on the same node is responsible for
|
||||
computing its own four-way partition. To specify this, processes with
|
||||
ranks 0, 4, 8, and 12 should return 0, ranks 1, 5, 9, and 13 should
|
||||
return 1, ranks 2, 6, 10, and 14 should return 2, and ranks 3, 7, 11,
|
||||
and 15 should return 3. Note that we are specifying four separate four-way
|
||||
partitions at this level, so each group of four processes on the same
|
||||
node will have one process computing each part 0, 1, 2, and 3,
|
||||
for that group.
|
||||
|
||||
<LI>The <B><A
|
||||
HREF="ug_query_lb.html#ZOLTAN_HIER_METHOD_FN">ZOLTAN_HIER_METHOD_FN</A></B>
|
||||
callback is called again, with <B>level</B> equal to 1, and another
|
||||
internally-allocated Zoltan_Struct passed as <B>zz</B>. Here, we want
|
||||
all processes to be computing a partition using recursive inertial
|
||||
bisection. The following call would be appropriate inside the
|
||||
callback:
|
||||
|
||||
<PRE>
|
||||
Zoltan_Set_Param(zz, "LB_METHOD", "RIB");
|
||||
</PRE>
|
||||
|
||||
Additional Zoltan_Set_Param calls would be used to specify any
|
||||
additional procedures. Note that in this case, we are computing four
|
||||
separate partitions but all with the same LB_METHOD. It would be
|
||||
allowed to specify different LB_METHODs for each group, but all
|
||||
processes cooperating on a partition must agree on their LB_METHOD
|
||||
and other parameters (just like any other Zoltan partitioning).
|
||||
<P>
|
||||
|
||||
At this point, Zoltan's hierarchical balancing procedure can proceed
|
||||
with the level 1 partition, using four independent recursive inertial
|
||||
bisections produce the four four-way partitions across the processes on
|
||||
each node. Since this is the final level, the 16 resulting parts
|
||||
are returned by the hierarchical balancing procedure to the calling
|
||||
application.
|
||||
|
||||
</OL>
|
||||
|
||||
<BR>
|
||||
<TABLE WIDTH="100%" NOSAVE >
|
||||
<TR>
|
||||
<TD VALIGN=TOP><B>Method String:</B></TD>
|
||||
|
||||
<TD><B>HIER</B></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD><B>Parameters:</B></TD>
|
||||
|
||||
<TD></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP><I> HIER_CHECKS</I></TD>
|
||||
|
||||
<TD>If set to 1, forces "sanity checks" to be performed on the
|
||||
intermediate structure when it is first created, and after the
|
||||
partitioning at each level.</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP> <I>HIER_DEBUG_LEVEL</I></TD>
|
||||
|
||||
<TD>Amount of output the hierarchical partitioning procedures should
|
||||
produce.
|
||||
<BR>0 = no statistics; 1 = hierarchical balancing lists; 2 = all
|
||||
debugging information.</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP><B>Default:</B></TD>
|
||||
|
||||
<TD></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD><I>HIER_CHECKS</I> = 0</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD><I>HIER_DEBUG_LEVEL</I> = 1</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP><B>Required Query Functions:</B></TD>
|
||||
|
||||
<TD></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD><B><A HREF="ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</A></B></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD><B><A HREF="ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</A></B>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
<TD><B><A
|
||||
HREF="ug_query_lb.html#ZOLTAN_HIER_NUM_LEVELS_FN">ZOLTAN_HIER_NUM_LEVELS_FN</A></B>,
|
||||
<B><A
|
||||
HREF="ug_query_lb.html#ZOLTAN_HIER_PART_FN">ZOLTAN_HIER_PART_FN</A></B>,
|
||||
and <B><A
|
||||
HREF="ug_query_lb.html#ZOLTAN_HIER_METHOD_FN">ZOLTAN_HIER_METHOD_FN</A></B>.
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<tr>
|
||||
<td valign=top>Only if one of the methods used at some level of hierarchical
|
||||
partitioning requires geometric information:</td>
|
||||
|
||||
<td valign=top><b><a href="ug_query_lb.html#ZOLTAN_NUM_GEOM_FN">ZOLTAN_NUM_GEOM_FN</a></b><br>
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_GEOM_MULTI_FN">ZOLTAN_GEOM_MULTI_FN</a></b>
|
||||
or <b><a href="ug_query_lb.html#ZOLTAN_GEOM_FN">ZOLTAN_GEOM_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td>Only if one of the methods used at some level of hierarchical
|
||||
partitioning requires graph information:</td>
|
||||
|
||||
<td NOSAVE>
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_NUM_EDGES_MULTI_FN">ZOLTAN_NUM_EDGES_MULTI_FN</a></b> or
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_NUM_EDGES_FN">ZOLTAN_NUM_EDGES_FN</a></b>
|
||||
<br>
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_EDGE_LIST_MULTI_FN">ZOLTAN_EDGE_LIST_MULTI_FN</a></b> or
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_EDGE_LIST_FN">ZOLTAN_EDGE_LIST_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</TABLE>
|
||||
|
||||
|
||||
<P>
|
||||
<HR WIDTH="100%">[<A HREF="ug.html">Table of Contents</A> |
|
||||
<A HREF="ug_order.html">Next: Ordering </A>
|
||||
| <A HREF="ug_alg_ptscotch.html">Previous: PT-Scotch</A> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</BODY>
|
||||
</HTML>
|
228
thirdParty/Zoltan/docs/ug_html/ug_alg_hsfc.html
vendored
Normal file
@ -0,0 +1,228 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<title>Zoltan User's Guide: HSFC</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="ug.html">Zoltan User's Guide</a> | <a href="ug_alg_reftree.html">Next</a> | <a href="ug_alg_rib.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<h2>
|
||||
<a NAME="HSFC"></a>Hilbert Space Filling Curve (HSFC)</h2>
|
||||
The Inverse Hilbert Space-Filling Curve functions map a point in one, two or three dimensions
|
||||
into the interval [0,1]. The Hilbert functions that map [0, 1] to normal spatial
|
||||
coordinates are also provided. (The one-dimensional inverse Hilbert curve is defined here
|
||||
as the identity function, f(x)=x for all x.)
|
||||
<p>
|
||||
The HSFC partitioning algorithm seeks to divide [0,1] into P intervals each containing
|
||||
the same weight of objects associated to these intervals by their inverse Hilbert
|
||||
coordinates. N bins are created (where N > P) to partition [0,1]. The weights in
|
||||
each bin are summed across all processors.
|
||||
A greedy algorithm sums the bins (from left to right) placing a cut when the desired weight
|
||||
for current part interval is achieved.
|
||||
This process is repeated as needed to improve partitioning tolerance by
|
||||
a technique that maintains the same total number of bins but refines the bins previously
|
||||
containing a cut.
|
||||
<p>
|
||||
HSFC returns an warning if the final imbalance exceeds the user specified tolerance.
|
||||
<p>
|
||||
This code implements both the point assign and box assign functionality. The point
|
||||
assign determines an appropriate part (associated with a specific group of processors)
|
||||
for a new point. The box assign determines the list of processors
|
||||
whose associated subdomains intersect the given box. In order to
|
||||
use either of these routines, the user parameter KEEP_CUTS must be turned on.
|
||||
Both point assign and box assign now work for points or boxes anywhere in space even if
|
||||
they are exterior to the original bounding box. If a part is empty (due to the
|
||||
part being assigned zero work), it is not included in the list of parts
|
||||
returned by box assign. Note: the original box assign algorithm was not rigorous and
|
||||
may have missed parts. This version is both rigorous and fast.
|
||||
<p>
|
||||
The Zoltan implementation of HSFC has one parameter that can be modified
|
||||
by the <b><a href="ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
|
||||
function.
|
||||
<p>
|
||||
This partitioning algorithm is loosely based on the 2D & 3D Hilbert tables used in the Octree
|
||||
partitioner and on the BSFC partitioning implementation by Andrew C. Bauer, Department
|
||||
of Engineering, State University of New York at Buffalo, as his summer project at SNL
|
||||
in 2001. The box assign algorithm is loosely based on the papers by Lawder referenced both
|
||||
in the developers guide and the code itself. NOTE: This code can be trivially extended to
|
||||
any space filling curve by providing the tables implementing the curve's state transition
|
||||
diagram. The only dependance on the curve is through the tables and the box assign
|
||||
algorithm will work for all space filling curves (if we have their tables.)
|
||||
<p>
|
||||
Please refer to the Zoltan Developers Guide,
|
||||
<b><a href="../dev_html/dev_hsfc.html">Appendix: Hilbert Space Filling Curve (HSFC)</a></b>
|
||||
for more detailed information about these algorithms.
|
||||
<br>
|
||||
<br>
|
||||
<table WIDTH="100%" NOSAVE >
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Method String:</b></td>
|
||||
|
||||
<td><b>HSFC</b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><b>Parameters:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP NOSAVE> <i> KEEP_CUTS</i></td>
|
||||
|
||||
<td>Information about cuts and bounding box is necessary
|
||||
if the application wants to add more objects to the decomposition via calls
|
||||
to <b><a href="ug_interface_augment.html#Zoltan_LB_Point_PP_Assign">Zoltan_LB_Point_PP_Assign</a></b>
|
||||
or to <b><a href="ug_interface_augment.html#Zoltan_LB_Box_PP_Assign">Zoltan_LB_Box_PP_Assign</a></b>.
|
||||
<br>0 = don't keep cuts; 1 = keep cuts.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP NOSAVE> <i> REDUCE_DIMENSIONS</i></td>
|
||||
<td>
|
||||
When a 3 dimensional geometry is almost flat, it may make more
|
||||
sense to treat it as a 2 dimensional geometry when applying the HSFC
|
||||
algorithm. (Coordinate values in the omitted direction are ignored for the purposes of partitioning.)
|
||||
If this parameter is set to <B>1</B>, a 3 dimensional
|
||||
geometry will be treated as 2 dimensional if is very flat,
|
||||
or 1 dimensional if it very thin. And a 2 dimensional geometry will
|
||||
be treated as 1 dimensional if it is very thin.
|
||||
Turning this parameter on removes the possibility that disconnected
|
||||
parts will appear on the surface of a flat 3 dimensional object.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td VALIGN=TOP NOSAVE> <i> DEGENERATE_RATIO</i></td>
|
||||
<td>
|
||||
If the <B>REDUCE_DIMENSIONS</B> parameter is set, then this parameter
|
||||
determines when a geometry is considered to be flat.
|
||||
A bounding box which is oriented to the geometry is constructed, and
|
||||
the lengths of its sides are tested against a ratio of 1 : <B>DEGENERATE_RATIO</B>.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Default:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><i>KEEP_CUTS</i> = 0</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><i>REDUCE_DIMENSIONS</i> = 0</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><i>DEGENERATE_RATIO</i> = 10</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Required Query Functions:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</a></b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td>
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_NUM_GEOM_FN">ZOLTAN_NUM_GEOM_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td>
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_GEOM_MULTI_FN">ZOLTAN_GEOM_MULTI_FN</a></b>
|
||||
or <b><a href="ug_query_lb.html#ZOLTAN_GEOM_FN">ZOLTAN_GEOM_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
<hr WIDTH="100%">[<a href="ug.html">Table of Contents</a> |
|
||||
<a href="ug_alg_reftree.html">Next: Refinement Tree Partitioning</a>
|
||||
| <a href="ug_alg_rib.html">Previous: Recursive Inertial Bisection</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
155
thirdParty/Zoltan/docs/ug_html/ug_alg_hypergraph.html
vendored
Normal file
@ -0,0 +1,155 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.76 [en] (X11; U; Linux 2.4.2-2smp i686) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<title>Zoltan User's Guide: Hypergraph Algorithms</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="ug.html">Zoltan User's Guide</a>
|
||||
| <a href="ug_alg_phg.html">Next</a> | <a href="ug_alg_reftree.html">Previous</a></i></b></div>
|
||||
|
||||
<h2>
|
||||
<a NAME="Hypergraph"></a>Hypergraph partitioning</h2>
|
||||
|
||||
|
||||
Hypergraph partitioning is a useful partitioning and
|
||||
load balancing method when connectivity data is available. It can be
|
||||
viewed as a more sophisticated alternative to
|
||||
the traditional graph partitioning.
|
||||
<p>A hypergraph consists of vertices and hyperedges. A hyperedge
|
||||
connects
|
||||
one or more vertices.
|
||||
A graph can be cast as a hypergraph in one of two ways: either every
|
||||
pair of neighboring vertices form a hyperedge, or a vertex and all
|
||||
its neighbors form a hyperedge.
|
||||
The hypergraph model is well
|
||||
suited to parallel computing, where vertices correspond to data objects
|
||||
and hyperedges represent the communication requirements. The basic
|
||||
partitioning problem is to partition the vertices into <i>k</i>
|
||||
approximately equal sets such that the number of cut hyperedges is
|
||||
minimized. Most partitioners (including Zoltan-PHG) allows a more
|
||||
general
|
||||
model where both vertices and hyperedges can be assigned weights.
|
||||
It has been
|
||||
shown that the hypergraph model gives a more accurate representation
|
||||
of communication cost (volume) than the graph model. In particular,
|
||||
for sparse matrix-vector multiplication, the hypergraph model
|
||||
<strong>exactly</strong> represents communication volume. Sparse
|
||||
matrices can be partitioned either along rows or columns;
|
||||
in the row-net model the columns are vertices and each row corresponds
|
||||
to an hyperedge, while in the column-net model the roles of vertices
|
||||
and hyperedges are reversed. </p>
|
||||
<p>Zoltan contains a native parallel hypergraph partitioner, called PHG
|
||||
(Parallel HyperGraph partitioner). In addition, Zoltan provides
|
||||
access to <a href="https://bmi.osu.edu/%7Eumit/software.htm">PaToH</a>,
|
||||
a serial hypergraph partitioner.
|
||||
Note that PaToH is not part of Zoltan and should be obtained
|
||||
separately from the <a href="https://bmi.osu.edu/%7Eumit/software.htm">
|
||||
PaToH web site</a>.
|
||||
Zoltan-PHG is a fully parallel multilevel hypergraph partitioner. For
|
||||
further technical description, see <a
|
||||
href="ug_refs.html#hypergraph-ipdps06">[Devine et al, 2006]</a>.<br>
|
||||
</p>
|
||||
<p>
|
||||
A new feature available in Zoltan 3.0 is the ability to assign selected
|
||||
objects (vertices) to a particular part ("fixed vertices").
|
||||
When objects are fixed,
|
||||
Zoltan will not migrate them out of the user assigned part.
|
||||
See the descriptions of the
|
||||
<i><a href="ug_query_lb.html#ZOLTAN_NUM_FIXED_OBJ_FN">ZOLTAN_NUM_FIXED_OBJ_FN</a></i>
|
||||
and
|
||||
<i><a href="ug_query_lb.html#ZOLTAN_FIXED_OBJ_LIST_FN">ZOLTAN_FIXED_OBJ_LIST_FN</a></i>
|
||||
query functions for a discussion of how you can define these two
|
||||
functions to fix objects to parts. Both PHG and PaToH support this
|
||||
feature.
|
||||
|
||||
<p>
|
||||
For applications that already use Zoltan to do graph partitioning,
|
||||
it is easy to upgrade to hypergraph partitioning. For many applications,
|
||||
the hypergraph model is superior to the graph model, but in some cases
|
||||
the graph model should be preferred. PHG can also be used as a pure
|
||||
graph partitioner. See the section
|
||||
<a href="ug_graph_vs_hg.html">graph vs. hypergraph</a> partitioning
|
||||
for further details. </p>
|
||||
|
||||
|
||||
<br>
|
||||
<table WIDTH="100%" NOSAVE >
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Method String:</b></td>
|
||||
|
||||
<td><b>HYPERGRAPH</b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><b>Parameters:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><i> HYPERGRAPH_PACKAGE</i></td>
|
||||
|
||||
<td>The software package to use in partitioning the hypergraph.
|
||||
<br><i><a href=ug_alg_phg.html>PHG (Zoltan, the default)</a></i>
|
||||
<br><i><a href=ug_alg_patoh.html>PATOH</a></i>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<p>
|
||||
<hr WIDTH="100%">[<a href="ug.html">Table of Contents</a> | <a href="ug_alg_phg.html">Next:
|
||||
PHG</a> | <a href="ug_alg_reftree.html">Previous:
|
||||
Refinement Tree Partitioning</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
207
thirdParty/Zoltan/docs/ug_html/ug_alg_jostle.html
vendored
Normal file
@ -0,0 +1,207 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.6 sun4m) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<title>Zoltan User's Guide: Jostle Interface</title>
|
||||
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="ug.html">Zoltan User's Guide</a>
|
||||
| <a href="ug_alg_hier.html">Next</a> | <a href="ug_alg_parmetis.html">Previous</a></i></b></div>
|
||||
|
||||
<h2>
|
||||
<a NAME="Jostle"></a>Graph partitioning: Jostle</h2>
|
||||
<a href="https://staffweb.cms.gre.ac.uk/~c.walshaw/jostle/">Jostle</a> is a library for graph
|
||||
(mesh) partitioning and load balancing developed at the University of Greenwich,
|
||||
London, UK, by Chris Walshaw [<a href="ug_refs.html#jostle">Jostle</a>,
|
||||
<a href="ug_refs.html#walshaw">Walshaw</a>].
|
||||
The parallel version of Jostle is sometimes called pjostle. In the Zoltan
|
||||
context, the name Jostle always refers to the parallel version of the library.
|
||||
The main algorithm used in Jostle is based on multilevel graph partitioning,
|
||||
and a diffusion-type method is available for repartitioning. Hence the
|
||||
Jostle library is very similar to ParMETIS. See the <a href="ug_alg_parmetis.html">ParMETIS</a>
|
||||
section for a brief description of graph partitioning as a model for load
|
||||
balancing.
|
||||
<p>At present, only the most common Jostle options are supported by Zoltan.
|
||||
These are briefly described below. For further details, see the documentation
|
||||
available from the <a href="https://staffweb.cms.gre.ac.uk/~c.walshaw/jostle/">Jostle home page</a>.
|
||||
Other options may be added to Zoltan upon request.
|
||||
<p>Note that Jostle is not distributed with Zoltan. If you wish to use
|
||||
Jostle within Zoltan, you must first obtain a license for Parallel Jostle
|
||||
and install it on your system. The license is currently free for academic
|
||||
use. Zoltan has been tested only with parallel Jostle version
|
||||
1.2.* and may be incompatible with other versions.
|
||||
Zoltan offers only limited support for Jostle and this may be
|
||||
discontinued in the future.
|
||||
<br>
|
||||
<table WIDTH="100%" NOSAVE >
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Value of LB_METHOD:</b></td>
|
||||
<td><b>GRAPH</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Value of GRAPH_PACKAGE:</b></td>
|
||||
<td><b>Jostle</b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><b>Parameters:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>JOSTLE_OUTPUT_LEVEL</i></td>
|
||||
|
||||
<td>Amount of output Jostle should produce. (integer)</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>JOSTLE_THRESHOLD</i></td>
|
||||
|
||||
<td>Threshold at which the graph contraction phase is stopped. (integer)</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>JOSTLE_GATHER_THRESHOLD</i></td>
|
||||
|
||||
<td>Duplicate coarse graph on all processors when there are fewer than
|
||||
this number of nodes. (integer)</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>JOSTLE_MATCHING</i></td>
|
||||
|
||||
<td>Matching algorithm for graph contraction. (Valid values are "local"
|
||||
and "global".)</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td> <i>JOSTLE_REDUCTION</i></td>
|
||||
|
||||
<td NOSAVE>When reduction is turned off, Jostle performs a diffusion-type
|
||||
algorithm instead of multilevel graph partitioning. (Valid values are "on"
|
||||
and "off".)</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>JOSTLE_CONNECT</i></td>
|
||||
|
||||
<td>Make a disconnected graph connected before partitioning. (Valid values
|
||||
are "on" and "off".)</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td> <i>CHECK_GRAPH</i></td>
|
||||
|
||||
<td NOSAVE>Level of error checking for graph input: 0 = no checking, 1
|
||||
= on-processor checking, 2 = full checking. (CHECK_GRAPH==2 is very slow and should
|
||||
be used only during debugging).</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td> <i>SCATTER_GRAPH</i></td>
|
||||
|
||||
<td NOSAVE>Scatter graph data by distributing contiguous chunks of objects
|
||||
(vertices) of roughly equal size to each processor before calling
|
||||
the partitioner. 0 = don't scatter; 1 = scatter only if all objects are
|
||||
on a single processor; 2 = scatter if at least one processor owns no objects;
|
||||
3 = always scatter. </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Default values:</b></td>
|
||||
|
||||
<td>See the <a href="https://staffweb.cms.gre.ac.uk/~c.walshaw/jostle/">Jostle</a> documentation.
|
||||
See our <a href="ug_alg_parmetis.html">ParMETIS section </a>for the last
|
||||
two parameters.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Required Query Functions:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</a></b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td></td>
|
||||
|
||||
<td NOSAVE>
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_NUM_EDGES_MULTI_FN">ZOLTAN_NUM_EDGES_MULTI_FN</a></b> or
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_NUM_EDGES_FN">ZOLTAN_NUM_EDGES_FN</a></b>
|
||||
<br>
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_EDGE_LIST_MULTI_FN">ZOLTAN_EDGE_LIST_MULTI_FN</a></b> or
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_EDGE_LIST_FN">ZOLTAN_EDGE_LIST_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
<hr WIDTH="100%">[<a href="ug.html">Table of Contents</a> | <a href="ug_alg_hier.html">Next:
|
||||
Hybrid Hierarchical Partitioning</a> | <a href="ug_alg_parmetis.html">Previous:
|
||||
ParMETIS</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
221
thirdParty/Zoltan/docs/ug_html/ug_alg_oct.html
vendored
Normal file
@ -0,0 +1,221 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; U; SunOS 5.6 sun4m) [Netscape]">
|
||||
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<TITLE>Zoltan User's Guide: Octree Partitioning</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="ug.html">Zoltan User's Guide</a> | <a href="ug_order.html">Next</a> | <a href="ug_alg_patoh.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<H2>
|
||||
<A NAME="Octree"></A>Octree Partitioning (OCTPART)</H2>
|
||||
The Octree Partitioning algorithm is based upon work in load balancing
|
||||
for parallel mesh generation at Rensselaer Polytechnic Institute [<A HREF="ug_refs.html#flaherty">Flaherty,
|
||||
Loy et al.</A>]. It was implemented in Zoltan by Luis Gervasio, Department
|
||||
of Computer Science, Rensselaer Polytechnic Institute, as his summer project
|
||||
in 1998 [<A HREF="ug_refs.html#gervasio">Gervasio</A>]. An octree is a spatial
|
||||
decomposition of the computational domain in which the root of the tree,
|
||||
representing the entire domain, is recursively divided by two in each coordinate
|
||||
direction (producing eight or four "child" octants in 3D or 2D, respectively)
|
||||
until each subregion holds at most an application-specified number of objects.
|
||||
These subregions are represented by the leaves of the octree. The octree
|
||||
data structure is widely used in mesh generation and adaptive mesh refinement
|
||||
[<U><A HREF="ug_refs.html#baehmann">Baehmann et al.</A></U>, <U><A HREF="ug_refs.html#shephard">Shephard
|
||||
and Georges</A></U>]. The octree resulting from such a spatial decomposition
|
||||
of the domain can be used to partition an application's work [<A HREF="ug_refs.html#edwards">Edwards</A>,
|
||||
<A HREF="ug_refs.html#pilkington">Pilkington and Baden</A>, <A HREF="ug_refs.html#warren">Warren
|
||||
and Salmon</A>]. To partition an octree, a traversal of the tree is used
|
||||
to define a global ordering on the leaves of the octree. This global ordering
|
||||
is often referred to as a Space-Filling Curve (SFC). The leaves of the
|
||||
octree can be easily assigned to processors in a manner which equally distributes
|
||||
work by assigning slices of the ordered list to processors. Different tree-traversal
|
||||
algorithms produce different global orderings or SFCs, with some SFCs having
|
||||
better connectivity and partition quality properties than others. Currently,
|
||||
Morton Indexing (i.e., Z-curve), Grey Code, and Hilbert SFCs are supported.
|
||||
Morton Indexing and Grey Code SFCs are the simplest (and currently, the
|
||||
fastest) of the SFC algorithms, but they produce lower-quality partitions
|
||||
than the Hilbert SFC.
|
||||
<BR>
|
||||
<TABLE WIDTH="100%" NOSAVE >
|
||||
<TR>
|
||||
<TD VALIGN=TOP><B>Method String:</B></TD>
|
||||
|
||||
<TD><B>OCTPART</B></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD><B>Parameters:</B></TD>
|
||||
|
||||
<TD></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP> <I>OCT_DIM</I></TD>
|
||||
|
||||
<TD>Specifies whether the 2D or 3D Octree algorithms should be used. The
|
||||
3D algorithms can be used for 2D problems, but much memory will be wasted
|
||||
to allow for a non-existent third dimension. Similarly, a 2D algorithm
|
||||
can be used for 3D surface meshes provided that the surface can be projected
|
||||
to the <I>xy</I>-plane without overlapping points.
|
||||
<BR>2 = use 2D algorithm; 3 = use 3D algorithm.</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP><I> OCT_METHOD</I></TD>
|
||||
|
||||
<TD>The SFC to be used.
|
||||
<BR>0 = Morton Indexing; 1 = Grey Code; 2 = Hilbert.</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP> <I>OCT_MINOBJECTS</I></TD>
|
||||
|
||||
<TD>The minimum number of objects to allow in a leaf octant of the octree.
|
||||
These objects will be assigned as a group to a processor, so this parameter
|
||||
helps define the granularity of the load-balancing problem. Values greater than
|
||||
or equal to one are allowable.</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN=TOP> <I>OCT_MAXOBJECTS</I></TD>
|
||||
|
||||
<TD>The maximum number of objects to allow in a leaf octant of the octree.
|
||||
These objects will be assigned as a group to a processor, so this parameter
|
||||
helps define the granularity of the load-balancing problem. Values greater than
|
||||
or equal to one are allowable.</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP> <I>OCT_OUTPUT_LEVEL</I></TD>
|
||||
|
||||
<TD>Amount of output the load-balancing algorithm should produce.
|
||||
<BR>0 = no statistics; 1 = statistics summary; 2 = debugging information; 3 = data for generating plots.</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP><B>Default:</B></TD>
|
||||
|
||||
<TD></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD><I>OCT_DIM</I> = 3</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD><I>OCT_METHOD</I> = 2</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD><I>OCT_MINOBJECTS</I> = 10</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD><I>OCT_MAXOBJECTS</I> = 40</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD><I>OCT_OUTPUT_LEVEL</I> = 0</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP><B>Required Query Functions:</B></TD>
|
||||
|
||||
<TD></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD><B><A HREF="ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</A></B></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD><B><A HREF="ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</A></B>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD><B><A HREF="ug_query_lb.html#ZOLTAN_NUM_GEOM_FN">ZOLTAN_NUM_GEOM_FN</A></B></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD>
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_GEOM_MULTI_FN">ZOLTAN_GEOM_MULTI_FN</a></b>
|
||||
or <b><a href="ug_query_lb.html#ZOLTAN_GEOM_FN">ZOLTAN_GEOM_FN</a></b>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
|
||||
<P>
|
||||
<HR WIDTH="100%">[<A HREF="ug.html">Table of Contents</A> |
|
||||
<A HREF="ug_order.html">Next: Ordering </A>
|
||||
| <A HREF="ug_alg_patoh.html">Previous: ParKway</A> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</BODY>
|
||||
</HTML>
|
87
thirdParty/Zoltan/docs/ug_html/ug_alg_parkway.html
vendored
Normal file
@ -0,0 +1,87 @@
|
||||
<!-------- @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="GENERATOR"
|
||||
content="Mozilla/4.76 [en] (X11; U; Linux 2.4.2-2smp i686) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<title>Zoltan User's Guide: ParKway</title>
|
||||
</head>
|
||||
<body bgcolor="#ffffff">
|
||||
<div align="right"><b><i><a href="ug.html">Zoltan User's Guide</a>
|
||||
| <a href="ug_alg_oct.html">Next</a> | <a
|
||||
href="ug_alg_patoh.html">Previous</a></i></b></div>
|
||||
<h2>
|
||||
<a name="Parkway"></a>ParKway</h2>
|
||||
|
||||
<p>
|
||||
This is what ParKwaydoes and why you should use it.
|
||||
</p>
|
||||
|
||||
<br>
|
||||
<table WIDTH="100%" NOSAVE >
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Value of LB_METHOD:</b></td>
|
||||
<td><b>HYPERGRAPH</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Value of HYPERGRAPH_PACKAGE:</b></td>
|
||||
<td><b>PARKWAY</b></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr width="100%">[<a href="ug.html">Table of Contents</a> | <a
|
||||
href="ug_alg_oct.html">Next:
|
||||
Octree</a> | <a href="ug_alg_patoh.html">Previous:
|
||||
PaToH</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
438
thirdParty/Zoltan/docs/ug_html/ug_alg_parmetis.html
vendored
Normal file
@ -0,0 +1,438 @@
|
||||
<!-------- @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="GENERATOR"
|
||||
content="Mozilla/4.76 [en] (X11; U; Linux 2.4.2-2smp i686) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<title>Zoltan User's Guide: ParMETIS Interface</title>
|
||||
</head>
|
||||
<body bgcolor="#ffffff">
|
||||
<div align="right"><b><i><a href="ug.html">Zoltan User's Guide</a>
|
||||
| <a href="ug_alg_ptscotch.html">Next</a> | <a
|
||||
href="ug_graph_vs_hg.html">Previous</a></i></b></div>
|
||||
<h2>
|
||||
<a name="ParMETIS"></a>ParMETIS - Parallel Graph Partitioning</h2>
|
||||
<a href="https://www-users.cs.umn.edu/%7Ekarypis/metis/parmetis/">ParMETIS</a>
|
||||
is a parallel library for graph partitioning (for static load
|
||||
balancing)
|
||||
and repartitioning (for dynamic load balancing) developed at the
|
||||
University
|
||||
of Minnesota by Karypis, Schloegel and Kumar [<a
|
||||
href="ug_refs.html#parmetis">Karypis
|
||||
and Kumar</a>]. Note that ParMetis must be obtained separately and has a different license than Zoltan (see page 31 of <a
|
||||
href="https://glaros.dtc.umn.edu/gkhome/fetch/sw/parmetis/manual.pdf">
|
||||
this manual</a>). ParMETIS is strictly speaking not a method but
|
||||
rather a collection of methods. In the Zoltan context, ParMETIS is a
|
||||
method
|
||||
with many sub-methods. Zoltan provides an interface to all the ParMETIS
|
||||
(sub-)methods. The user selects which ParMETIS method to use
|
||||
through
|
||||
the parameter PARMETIS_METHOD. Most of the ParMETIS methods are based
|
||||
on
|
||||
either multilevel Kernighan-Lin partitioning or a diffusion algorithm.
|
||||
The names of the ParMETIS methods used by Zoltan are identical to those
|
||||
in the ParMETIS library. For further information about the various <a
|
||||
href="https://www-users.cs.umn.edu/%7Ekarypis/metis/parmetis/">ParMETIS</a>
|
||||
methods and parameters, please consult the <a
|
||||
href="https://www-users.cs.umn.edu/%7Ekarypis/metis/parmetis/">ParMETIS</a>
|
||||
User's Guide.
|
||||
<p>Graph partitioning is a useful abstraction for load balancing. The
|
||||
main
|
||||
idea is to represent the computational application as a weighted graph.
|
||||
The nodes or vertices in the graph correspond to objects in
|
||||
Zoltan.
|
||||
Each object may have a weight that normally represents the amount of
|
||||
computation.
|
||||
The edges or arcs in the graph usually correspond to communication
|
||||
costs.
|
||||
In graph partitioning, the problem is to find a partition of the
|
||||
graph
|
||||
(that is, each vertex is assigned to one out of <i>k</i>
|
||||
possible
|
||||
sets called parts) that minimizes the cut size (weight) subject to
|
||||
the parts having approximately equal size (weight). In
|
||||
repartitioning,
|
||||
it is assumed that a partition already exists. The problem is to
|
||||
find
|
||||
a good partition that is also "similar" in some sense to the
|
||||
existing
|
||||
partition. This keeps the migration cost low. All the problems
|
||||
described
|
||||
above are NP-hard so no efficient exact algorithm is known, but
|
||||
heuristics work well in practice.<br>
|
||||
</p>
|
||||
<p>We give only a brief summary of the various ParMETIS methods here;
|
||||
for
|
||||
more details see the <a
|
||||
href="https://www-users.cs.umn.edu/%7Ekarypis/metis/parmetis/">ParMETIS</a>
|
||||
documentation. The methods fall into three categories:
|
||||
</p>
|
||||
<ol>
|
||||
<li>
|
||||
Part* - Perform graph partitioning without consideration of the initial
|
||||
distribution. (LB_APPROACH=partition)<br>
|
||||
</li>
|
||||
<li>
|
||||
AdaptiveRepart - Incremental
|
||||
algorithms with small migration cost. (LB_APPROACH=repartition)</li>
|
||||
<li>
|
||||
Refine* - Refines a given partition (balance). Can be applied
|
||||
multiple times to reduce the communication cost (cut weight) if
|
||||
desired. (LB_APPROACH=refine)</li>
|
||||
</ol>
|
||||
As a rule of thumb, use one of the Part* methods if you have a poor
|
||||
initial
|
||||
balance and you are willing to spend some time doing migration. One
|
||||
such
|
||||
case is static load balancing; that is, you need to balance only once.
|
||||
Use AdaptiveRepart or the Repart* methods when you have a reasonably
|
||||
good
|
||||
load balance that you wish to update incrementally. These methods are
|
||||
well
|
||||
suited for dynamic load balancing (for example, adaptive
|
||||
mesh
|
||||
refinement). A reasonable strategy is to call PartKway once to obtain a
|
||||
good initial balance and later update this balance using
|
||||
AdaptiveRepart.
|
||||
|
||||
<p>
|
||||
Zoltan supports the multiconstraint partitioning
|
||||
feature of ParMETIS through multiple object weights (see <i><a
|
||||
href="ug_param.html#General_Parameters">OBJ_WEIGHT_DIM</a></i>).
|
||||
</p>
|
||||
<p>The graph given to Zoltan/ParMETIS must be symmetric. Any self edges
|
||||
(loops) will be ignored. Multiple edges between a pair of vertices is
|
||||
not allowed. All weights must be non-negative. The graph does not have to
|
||||
be connected.
|
||||
</p>
|
||||
<p>Zoltan is currently compatible with ParMETIS version 3.1 and 4.0.x.
|
||||
The ParMETIS source code can be obtained from
|
||||
the <a href="https://glaros.dtc.umn.edu/gkhome/views/metis/parmetis">
|
||||
ParMETIS home page</a>. ParMETIS has a separate license:
|
||||
<i>'PARMETIS can be freely used for educational and research purposes by non-profit institutions and US government agencies only. Other organizations are allowed to
|
||||
use PARMETIS only for evaluation purposes, and any further uses will require prior approval from <a href="https://www.license.umn.edu/Products/ParMETIS---Mesh-Graph-Partitioning-Algorithm__Z09041.aspx">the technology transfer office at the University of Minnesota</a>'
|
||||
</i> <br>
|
||||
If you do not wish to install ParMETIS, it
|
||||
is possible to compile Zoltan without any references to ParMETIS;
|
||||
(when you 'make' Zoltan, comment out the PARMETIS_LIBPATH variable in
|
||||
the
|
||||
configuration file <i><a href="ug_usage.html#Building%20the%20Library">Utilities/Config/Config.<platform></a></i>).
|
||||
</p>
|
||||
<br>
|
||||
|
||||
<table nosave="" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Value of LB_METHOD:</b></td>
|
||||
<td><b>GRAPH</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><b>Value of GRAPH_PACKAGE:</b></td>
|
||||
<td><b>Parmetis</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Parameters:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><i> LB_APPROACH<br>
|
||||
</i></td>
|
||||
<td>The load balancing approach:. <br>
|
||||
<i>PARTITION</i> - partition from scratch, not taking
|
||||
the current data distribution into account<br>
|
||||
<i>REPARTITION</i> - partition but try to stay close to the
|
||||
current partition/distribution
|
||||
<br>
|
||||
<i>REFINE</i> - refine the current partition/distribution;
|
||||
assumes only small changes
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top"><i> PARMETIS_METHOD</i></td>
|
||||
<td>The specific ParMETIS method to be used (see below).
|
||||
Note: See also <a href="ug_alg.html#LB_APPROACH">LB_APPROACH</a>,
|
||||
which is a simpler way to specify the overall load balance approach.
|
||||
Only use <i>PARMETIS_METHOD</i> if you really need a specific
|
||||
implementation.<br>
|
||||
<i>PartKway</i> - multilevel Kernighan-Lin partitioning
|
||||
<br>
|
||||
<i>PartGeom</i> - space filling curves (coordinate based)
|
||||
<br>
|
||||
<i>PartGeomKway</i> - hybrid method based on PartKway and
|
||||
PartGeom
|
||||
(needs both graph data and coordinates)
|
||||
<br>
|
||||
<i>AdaptiveRepart - </i>adaptive repartitioning (only in
|
||||
ParMETIS 3.0
|
||||
and higher)
|
||||
<br>
|
||||
<i>RefineKway</i> - refine the current partition (balance)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td>The method names are case insensitive.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"> <i>PARMETIS_OUTPUT_LEVEL</i></td>
|
||||
<td>Amount of output the load-balancing algorithm should
|
||||
produce.
|
||||
<br>
|
||||
0 = no output, 1 = print timing info. Turning on more bits displays
|
||||
more information (for example, 3=1+2, 5=1+4, 7=1+2+4).</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> <i>PARMETIS_COARSE_ALG</i></td>
|
||||
<td>Coarse algorithm for PartKway. 1 = serial, 2 = parallel.
|
||||
(ParMETIS
|
||||
2 only)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> <i>PARMETIS_SEED</i></td>
|
||||
<td>Random seed for ParMETIS.</td>
|
||||
</tr>
|
||||
<tr nosave="" valign="top">
|
||||
<td> <i>PARMETIS_ITR</i></td>
|
||||
<td nosave="">Ratio of interprocessor communication time to
|
||||
redistribution
|
||||
time. A high value will emphasize reducing the edge cut, while a small
|
||||
value will try to keep the change in the new partition (distribution)
|
||||
small.
|
||||
This parameter is used only by AdaptiveRepart. A value of between 100
|
||||
and
|
||||
1000 is good for most problems.</td>
|
||||
</tr>
|
||||
<tr nosave="" valign="top">
|
||||
<td> <i>CHECK_GRAPH</i></td>
|
||||
<td nosave="">Level of error checking for graph input: 0 = no
|
||||
checking, 1
|
||||
= on-processor checking, 2 = full checking. (CHECK_GRAPH==2 is very
|
||||
slow
|
||||
and should be used only during debugging).</td>
|
||||
</tr>
|
||||
<tr nosave="" valign="top">
|
||||
<td> <i>SCATTER_GRAPH</i></td>
|
||||
<td nosave="">Scatter graph data by distributing contiguous
|
||||
chunks of objects
|
||||
(vertices) of roughly equal size to each processor before calling the
|
||||
partitioner.
|
||||
0 = don't scatter;
|
||||
1 = scatter only if all objects are on a single processor;
|
||||
2 = scatter if at least one processor owns no objects;
|
||||
3 = always scatter. </td>
|
||||
</tr>
|
||||
<tr nosave="" valign="top">
|
||||
<td> <i>GRAPH_SYMMETRIZE</i></td>
|
||||
<td nosave="">How to symmetrize the graph:
|
||||
NONE = graph is symmetric and no symmetrization is needed <br/>
|
||||
TRANSPOSE = if M is adjacency matrix of the input graph, output will be the graph representation of M+M<sup>T</sup> <br/>
|
||||
BIPARTITE = graph is symmetrized in a bipartite way : [[ 0 M ][M<sup>t</sup> 0]]
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr nosave="" valign="top">
|
||||
<td> <i>GRAPH_SYM_WEIGHT</i></td>
|
||||
<td nosave="">How edge weights are handled during symmetrization:
|
||||
ADD = weights of each arc are added <br/>
|
||||
MAX = only the heaviest arc weight is kept <br/>
|
||||
<p>See more informations about graph build options on this <a href="ug_graph_build.html">page</a></p>
|
||||
|
||||
<!-- ERROR = fail if complementary arcs don't have the same weight. -->
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!-- <tr nosave="" valign="top"> -->
|
||||
<!-- <td> <i>GRAPH_BIPARTITE_TYPE</i></td> -->
|
||||
<!-- <td nosave=""> In the case of a bipartite symmetrization, -->
|
||||
<!-- NONE = graph is symmetric and no symmetrization is needed <br/> -->
|
||||
<!-- TRANSPOSE = if M is adjacency matrix of the input graph, output will be the graph representation of M+M<sup>T</sup> <br/> -->
|
||||
<!-- BIPARTITE = graph is symmetrized in a bipartite way : [[ 0 M ][M<sup>t</sup> 0]] -->
|
||||
<!-- </td> -->
|
||||
<!-- </tr> -->
|
||||
|
||||
<tr>
|
||||
<td valign="top"><b>Default values:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>LB_APPROACH</i> = Repartition</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>PARMETIS_METHOD</i> = AdaptiveRepart</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>PARMETIS_OUTPUT_LEVEL</i> = 0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>PARMETIS_COARSE_ALG </i>= 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>PARMETIS_SEED </i>= 15</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>PARMETIS_ITR </i>= 100</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>USE_OBJ_SIZE </i>= 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>CHECK_GRAPH</i> = 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>SCATTER_GRAPH </i>= 1</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>GRAPH_SYMMETRIZE </i>= NONE</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>GRAPH_SYM_WEIGHT </i>= ADD</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td valign="top"><b>Required Query Functions:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>For all submethods:</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</a></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Only PartGeom & PartGeomKway:</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_NUM_GEOM_FN">ZOLTAN_NUM_GEOM_FN</a></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td>
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_GEOM_MULTI_FN">ZOLTAN_GEOM_MULTI_FN</a></b>
|
||||
or <b><a href="ug_query_lb.html#ZOLTAN_GEOM_FN">ZOLTAN_GEOM_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr nosave="" valign="top">
|
||||
<td>All but PartGeom:</td>
|
||||
<td nosave="">
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_NUM_EDGES_MULTI_FN">ZOLTAN_NUM_EDGES_MULTI_FN</a></b>
|
||||
or
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_NUM_EDGES_FN">ZOLTAN_NUM_EDGES_FN</a></b>
|
||||
<br>
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_EDGE_LIST_MULTI_FN">ZOLTAN_EDGE_LIST_MULTI_FN</a></b>
|
||||
or
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_EDGE_LIST_FN">ZOLTAN_EDGE_LIST_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><b>Optional Query Functions:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td>
|
||||
<b><a href="ug_query_mig.html#ZOLTAN_OBJ_SIZE_MULTI_FN">ZOLTAN_OBJ_SIZE_MULTI_FN</a></b>
|
||||
or
|
||||
<b><a href="ug_query_mig.html#ZOLTAN_OBJ_SIZE_FN">ZOLTAN_OBJ_SIZE_FN</a></b> for <i>PARMETIS_METHOD</i>=<i>AdaptiveRepart</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td>
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_PART_MULTI_FN">ZOLTAN_PART_MULTI_FN</a></b>
|
||||
or
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_PART_FN">ZOLTAN_PART_FN</a></b> for part remapping in ParMETIS.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</p>
|
||||
<hr width="100%">[<a href="ug.html">Table of Contents</a> | <a
|
||||
href="ug_alg_ptscotch.html">Next:
|
||||
PT-Scotch</a> | <a href="ug_graph_vs_hg.html">Previous:
|
||||
Graph vs. Hypergraph Partitioning</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
225
thirdParty/Zoltan/docs/ug_html/ug_alg_patoh.html
vendored
Normal file
@ -0,0 +1,225 @@
|
||||
<!-------- @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="GENERATOR"
|
||||
content="Mozilla/4.76 [en] (X11; U; Linux 2.4.2-2smp i686) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<title>Zoltan User's Guide: PaToH</title>
|
||||
</head>
|
||||
<body bgcolor="#ffffff">
|
||||
<div align="right"><b><i><a href="ug.html">Zoltan User's Guide</a>
|
||||
| <a href="ug_alg_graph.html">Next</a> | <a
|
||||
href="ug_alg_phg.html">Previous</a></i></b></div>
|
||||
<h2>
|
||||
<a name="PaToH"></a>PaToH</h2>
|
||||
|
||||
<a href="https://bmi.osu.edu/%7Eumit/software.htm">PaToH</a>
|
||||
is a serial hypergraph partitioning package. It is not distributed
|
||||
with Zoltan and must be obtained separately. (You will also need to
|
||||
modify your Zoltan configuration file after installation.)
|
||||
PaToH binary distribution is available free of charge for
|
||||
non-commercial, research use by individuals, academic or research
|
||||
institutions and corporations. Commercial use of PaToH software
|
||||
requires commercial license. Please direct commercial-use license
|
||||
inquiries to catalyurek.1@osu.edu.
|
||||
<p>
|
||||
Since PaToH is serial, it can be used in Zoltan only on a single
|
||||
processor. PaToH is faster than Zoltan PHG in serial mode, and
|
||||
often produces (slightly) better partition quality.
|
||||
<p>
|
||||
|
||||
<table nosave="" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Value of LB_METHOD:</b></td>
|
||||
<td><b>HYPERGRAPH</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Value of HYPERGRAPH_PACKAGE:</b></td>
|
||||
<td><b>PATOH</b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><b>Parameters:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td ><i> PATOH_ALLOC_POOL0</i></td>
|
||||
<td>
|
||||
<br><i>non-zero</i>  (the value of the MemMul_CellNet PATOH parameter)
|
||||
<br><i>0</i>  (the default)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td ><i> PATOH_ALLOC_POOL1</i></td>
|
||||
<td>
|
||||
<br><i>non-zero</i>  (the value of the MemMul_Pins PATOH parameter)
|
||||
<br><i>0</i>  (the default)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td ><i> USE_TIMERS</i></td>
|
||||
<td>
|
||||
<br><i>1</i>  (time operations and print results)
|
||||
<br><i>0</i>  (don't time, the default)
|
||||
</td>
|
||||
</tr>
|
||||
<tr nosave="" valign="top">
|
||||
<td> <span style="font-style: italic;">PHG_EDGE_SIZE_THRESHOLD</span><br>
|
||||
</td>
|
||||
<td nosave="">Value 0.0 through 1.0, if number of vertices in hyperedge divided by total vertices in hypergraph exceeds this fraction, the hyperedge will be omitted.<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> <span
|
||||
style="font-style: italic;">ADD_OBJ_WEIGHT</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;">Add implicit vertex (object)
|
||||
weight. Multi-weight partitioning is not yet supported, so currently either
|
||||
the user-defined weight or the implicit weight will be used.
|
||||
Valid values:<br>
|
||||
<i>none</i> (the default if <a href=ug_param.html#General_Parameters>OBJ_WEIGHT_DIM</a> > 0)<br>
|
||||
<i>unit</i> or <i>vertices</i> (each vertex has weight 1.0,
|
||||
default if <a href=ug_param.html#General_Parameters>OBJ_WEIGHT_DIM</a>
|
||||
is zero)<br>
|
||||
<i>pins</i> or <i>nonzeros</i> or <i>vertex degree</i> (vertex weight
|
||||
equals number hyperedges containing it)<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> <span
|
||||
style="font-style: italic;">CHECK_HYPERGRAPH</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;">Check that the query functions
|
||||
return valid input data; 0 or 1. (This slows performance; intended for debugging.)<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Default Values:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><i>PATOH_ALLOC_POOL0</i> = 0 </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><i>PATOH_ALLOC_POOL1</i> = 0 </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><i>USE_TIMERS</i> = 0 </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><i>PHG_EDGE_SIZE_THRESHOLD</i> = 0.25 </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><i>ADD_OBJ_WEIGHT</i> = none </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><i>CHECK_HYPERGRAPH</i> = 0 </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><b>Required Query Functions:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</a></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr nosave="" valign="top">
|
||||
<td><br>
|
||||
</td>
|
||||
<td nosave=""> <b><a href="ug_query_lb.html#ZOLTAN_HG_SIZE_CS_FN">ZOLTAN_HG_SIZE_CS_FN</a></b>
|
||||
<br>
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_HG_CS_FN">ZOLTAN_HG_CS_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><b>Optional Query Functions:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_HG_SIZE_EDGE_WTS_FN">ZOLTAN_HG_SIZE_EDGE_WTS_FN</a></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_HG_EDGE_WTS_FN">ZOLTAN_HG_EDGE_WTS_FN</a></b></td>
|
||||
</tr>
|
||||
|
||||
|
||||
</body>
|
||||
</table>
|
||||
|
||||
<hr width="100%">[<a href="ug.html">Table of Contents</a> | <a
|
||||
href="ug_alg_graph.html">Next:
|
||||
Graph Partitioning</a> | <a href="ug_alg_phg.html">Previous:
|
||||
PHG</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
485
thirdParty/Zoltan/docs/ug_html/ug_alg_phg.html
vendored
Normal file
@ -0,0 +1,485 @@
|
||||
<!-------- @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="GENERATOR"
|
||||
content="Mozilla/4.76 [en] (X11; U; Linux 2.4.2-2smp i686) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<title>Zoltan User's Guide: Hypergraph Partitioning</title>
|
||||
</head>
|
||||
<body bgcolor="#ffffff">
|
||||
<div align="right"><b><i><a href="ug.html">Zoltan User's Guide</a>
|
||||
| <a href="ug_alg_patoh.html">Next</a> | <a
|
||||
href="ug_alg_hypergraph.html">Previous</a></i></b></div>
|
||||
<h2 =""><a name="PHG"></a>PHG - Parallel Hypergraph and Graph Partitioning with
|
||||
Zoltan</h2>
|
||||
This is the built-in parallel hypergraph partitioner in Zoltan.
|
||||
<p>
|
||||
<table nosave="" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Value of LB_METHOD:</b></td>
|
||||
<td><b>HYPERGRAPH</b> (for <a href="ug_alg_hypergraph.html">hypergraph</a> partitioning) or <br>
|
||||
<b>GRAPH</b> (for <a href="ug_alg_graph.html">graph</a> partitioning)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><b>Value of HYPERGRAPH_PACKAGE:</b></td>
|
||||
<td><b>PHG</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Parameters:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><i> LB_APPROACH<br>
|
||||
</i></td>
|
||||
<td>The load balancing approach:. <br>
|
||||
<i>REPARTITION</i> - partition but try to stay close to the
|
||||
current partition/distribution
|
||||
<br>
|
||||
<i>REFINE</i> - refine the current partition/distribution;
|
||||
assumes only small changes
|
||||
<br>
|
||||
<i>PARTITION</i> - partition from scratch, not taking
|
||||
the current data distribution into account<br>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> <span
|
||||
style="font-style: italic;">PHG_REPART_MULTIPLIER</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"> For repartitioning, this
|
||||
parameter determines the trade-off between application communication
|
||||
(as represented by cut edges) and data migration related to
|
||||
rebalancing. PHG attempts to minimize the function
|
||||
(PHG_REPART_MULTIPLIER* edge_cut + migration volume). The migration
|
||||
volume is measured using the <a href="ug_query_mig.html#ZOLTAN_OBJ_SIZE_MULTI_FN">ZOLTAN_OBJ_SIZE_MULTI_FN</a> or <a href="ug_query_mig.html#ZOLTAN_OBJ_SIZE_FN">ZOLTAN_OBJ_SIZE_FN</a> query functions. Make sure the
|
||||
units for edges and object sizes are the same.<br>
|
||||
Simply put, to emphasize communication within the application, use a
|
||||
large value for PHG_REPART_MULTIPLIER. Typically this should be
|
||||
proportional to the number of iterations between load-balancing calls. </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><i> PHG_MULTILEVEL<br>
|
||||
</i></td>
|
||||
<td>This parameter specifies whether a multilevel method
|
||||
should be used (1) or not (0). Multilevel methods produce higher quality but
|
||||
require more execution time and memory.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> <a
|
||||
name="PHG_EDGE_WEIGHT_OPERATION"></a><span style="font-style: italic;">PHG_EDGE_WEIGHT_OPERATION</span>
|
||||
</td>
|
||||
<td style="vertical-align: top;">Operation to be applied to edge
|
||||
weights supplied by different processes for the same hyperedge:<br>
|
||||
<i>ADD</i> - the hyperedge weight will be the sum of the supplied
|
||||
weights<br>
|
||||
<i>MAX</i> - the hyperedge weight will be the maximum of the
|
||||
supplied weights<br>
|
||||
<i>ERROR</i> - if the hyperedge weights are not equal, Zoltan
|
||||
will flag an error, otherwise the hyperedge weight will be the value
|
||||
returned by the processes<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> <span
|
||||
style="font-style: italic;">ADD_OBJ_WEIGHT</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"> Add another object (vertex)
|
||||
weight. Currently multi-weight partitioning is not supported, but this
|
||||
parameter may also be used for implicit vertex weights. Valid values
|
||||
are: <br>
|
||||
<i>NONE</i> <br>
|
||||
<i>UNIT</i> or <i>VERTICES</i> (each vertex has weight 1.0) <br>
|
||||
<i>PINS</i> or <i>NONZEROS</i> or <i>vertex degree</i> (vertex
|
||||
weight equals number of hyperedges containing it, i.e., the degree)<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> <span
|
||||
style="font-style: italic;">PHG_CUT_OBJECTIVE</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"> Selects the partitioning
|
||||
objective, <i>CONNECTIVITY</i> or <i>HYPEREDGES</i>. While hyperedges
|
||||
simply counts the number of hyperedges cut, the connectivity metric
|
||||
weights each cut edge by the number of participating parts minus one
|
||||
(aka the λ-1 cut metric). The connectivity metric better represents
|
||||
communication volume for most applications. The hyperedge metric is
|
||||
useful for certain applications, e.g., minimizing matrix border size in
|
||||
block matrix decompositions. <br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><span style="font-style: italic;">
|
||||
PHG_OUTPUT_LEVEL</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;">Level of verbosity; 0 is silent.<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> <span
|
||||
style="font-style: italic;">CHECK_HYPERGRAPH</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;">Check that the query functions
|
||||
return valid input data; 0 or 1. (This slows performance; intended for
|
||||
debugging.)<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><i> PHG_COARSENING_METHOD</i></td>
|
||||
<td>Low-level parameter: The method to use in the matching/coarsening phase:<br>
|
||||
<span style="font-style: italic;">AGG</span> - agglomerative inner product
|
||||
matching (a.k.a. agglomerative heavy connectivity matching); gives high quality.<br>
|
||||
<span style="font-style: italic;">IPM</span> - inner product
|
||||
matching (a.k.a. heavy connectivity matching); gives high quality.<br>
|
||||
<span style="font-style: italic;">L-IPM </span>- local IPM
|
||||
on each processor. Faster but usually gives poorer quality. <br>
|
||||
<span style="font-style: italic;">A-IPM</span> - alternate
|
||||
between IPM and L-IPM. (A compromise between speed and quality.)<br>
|
||||
<span style="font-style: italic;">none - </span>no
|
||||
coarsening<i><br>
|
||||
</i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"> <i>PHG_COARSEPARTITION_METHOD</i></td>
|
||||
<td>Low-level parameter: Method to partition the coarsest (smallest) hypergraph;
|
||||
typically done in serial:<br>
|
||||
<span style="font-style: italic;">RANDOM</span> - random<br>
|
||||
<span style="font-style: italic;">LINEAR</span> - linear
|
||||
assignment of the vertices (ordered by the user query function)<br>
|
||||
<span style="font-style: italic;">GREEDY</span> - greedy method
|
||||
based on minimizing cuts<br>
|
||||
<span style="font-style: italic;">AUTO</span> -
|
||||
automatically select from the above methods (in parallel, the processes
|
||||
will do different methods)<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> <span
|
||||
style="font-style: italic;">PHG_REFINEMENT_METHOD</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;">Low-level parameter: Refinement algorithm:<br>
|
||||
<span style="font-style: italic;">FM</span> - approximate
|
||||
Fiduccia-Mattheyses (FM)<br>
|
||||
<span style="font-style: italic;">NO</span> - no refinement<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign=top> <i>PHG_REFINEMENT_QUALITY</i></td>
|
||||
<td>Low-level parameter: Knob to control the trade-off between run time and quality. 1
|
||||
is the recommended (default) setting, >1 gives more refinement
|
||||
(higher quality partitions but longer run time), while <1 gives less
|
||||
refinement (and
|
||||
poorer quality).<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> <span
|
||||
style="font-style: italic;">PHG_RANDOMIZE_INPUT</span><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;">Low-level parameter: Randomize layout of vertices and
|
||||
hyperedges in internal parallel 2D layout? <br>
|
||||
Setting this parameter to 1 often reduces Zoltan-PHG execution time.<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr nosave="" valign="top">
|
||||
<td> <span style="font-style: italic;">PHG_EDGE_SIZE_THRESHOLD</span><br>
|
||||
</td>
|
||||
<td nosave="">Low-level parameter: Value 0.0 through 1.0, if number of vertices in
|
||||
hyperedge divided by total vertices in hypergraph exceeds this
|
||||
fraction, the hyperedge will be omitted.<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr nosave="" valign="top">
|
||||
<td> <span style="font-style: italic;">PHG_PROCESSOR_REDUCTION_LIMIT</span><br>
|
||||
</td>
|
||||
<td nosave="">Low-level parameter: In V-cycle, redistribute coarsened hypergraph to
|
||||
this
|
||||
fraction of processors when number of pins in coarsened hypergraph is
|
||||
less than
|
||||
this fraction of original number of pins. Original number of pins is
|
||||
redefined
|
||||
after each processor redistribution.<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><b>Default values:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>LB_APPROACH = REPARTITION<br>
|
||||
</i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"><span style="font-style: italic;">PHG_REPART_MULTIPLIER=100</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"><span style="font-style: italic;">PHG_MULTILEVEL=1 if LB_APPROACH = partition or repartition; 0 otherwise.</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><span style="font-style: italic;">PHG_EDGE_WEIGHT_OPERATION=max</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"><span style="font-style: italic;">ADD_OBJ_WEIGHT=none</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"><span style="font-style: italic;">PHG_CUT_OBJECTIVE=connectivity</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"><span style="font-style: italic;">CHECK_HYPERGRAPH=0</span><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><span style="font-style: italic;">PHG_OUTPUT_LEVEL=0</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>PHG_COARSENING_METHOD=agg</i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"><i>PHG_COARSEPARTITION_METHOD=auto</i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"><span style="font-style: italic;">PHG_REFINEMENT_METHOD=fm</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"><i>PHG_REFINEMENT_QUALITY=1</i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"><span style="font-style: italic;">PHG_RANDOMIZE_INPUT=0</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"><span style="font-style: italic;">PHG_EDGE_SIZE_THRESHOLD=0.25</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top;"><span style="font-style: italic;">PHG_PROCESSOR_REDUCTION_LIMIT=0.5</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><b>Required Query Functions for <i>LB_METHOD = HYPERGRAPH</i>:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</a></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr nosave="" valign="top">
|
||||
<td><br>
|
||||
</td>
|
||||
<td nosave=""> <b><a href="ug_query_lb.html#ZOLTAN_HG_SIZE_CS_FN">ZOLTAN_HG_SIZE_CS_FN</a></b>
|
||||
<br>
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_HG_CS_FN">ZOLTAN_HG_CS_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><b>Optional Query Functions for <i>LB_METHOD = HYPERGRAPH</i>:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td>
|
||||
<b><a href="ug_query_mig.html#ZOLTAN_OBJ_SIZE_MULTI_FN">ZOLTAN_OBJ_SIZE_MULTI_FN</a></b>
|
||||
or
|
||||
<b><a href="ug_query_mig.html#ZOLTAN_OBJ_SIZE_FN">ZOLTAN_OBJ_SIZE_FN</a></b> for <i>LB_APPROACH</i>=<i>Repartition</i>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td>
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_PART_MULTI_FN">ZOLTAN_PART_MULTI_FN</a></b>
|
||||
or
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_PART_FN">ZOLTAN_PART_FN</a></b> for <i>LB_APPROACH</i>=<i>Repartition</i> and for <a href="ug_alg.html#REMAP"><i>REMAP</i></a>=1.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_HG_SIZE_EDGE_WTS_FN">ZOLTAN_HG_SIZE_EDGE_WTS_FN</a></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_HG_EDGE_WTS_FN">ZOLTAN_HG_EDGE_WTS_FN</a></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_NUM_FIXED_OBJ_FN">ZOLTAN_NUM_FIXED_OBJ_FN</a></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_FIXED_OBJ_LIST_FN">ZOLTAN_FIXED_OBJ_LIST_FN</a></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign=top><b>Note for<br><i>LB_METHOD = HYPERGRAPH:</i></b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td>
|
||||
It is possible to provide the graph query functions instead of the
|
||||
hypergraph queries, though this is not recommended. If only graph query
|
||||
functions are registered, Zoltan will automatically create a hypergraph
|
||||
from the graph, but this is not equivalent to graph partitioning.
|
||||
In particular, the edge weights will not be accurate.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><b>Required Query Functions for <i>LB_METHOD = GRAPH</i>:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</a></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr nosave="" valign="top">
|
||||
<td><br>
|
||||
</td>
|
||||
<td nosave="">
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_NUM_EDGES_MULTI_FN">ZOLTAN_NUM_EDGES_MULTI_FN</a></b>
|
||||
or
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_NUM_EDGES_FN">ZOLTAN_NUM_EDGES_FN</a></b>
|
||||
<br>
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_EDGE_LIST_MULTI_FN">ZOLTAN_EDGE_LIST_MULTI_FN</a></b>
|
||||
or
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_EDGE_LIST_FN">ZOLTAN_EDGE_LIST_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><b>Optional Query Functions for <i>LB_METHOD = GRAPH</i>:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td>
|
||||
<b><a href="ug_query_mig.html#ZOLTAN_OBJ_SIZE_MULTI_FN">ZOLTAN_OBJ_SIZE_MULTI_FN</a></b>
|
||||
or
|
||||
<b><a href="ug_query_mig.html#ZOLTAN_OBJ_SIZE_FN">ZOLTAN_OBJ_SIZE_FN</a></b> for <i>LB_APPROACH</i>=<i>Repartition</i>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td>
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_PART_MULTI_FN">ZOLTAN_PART_MULTI_FN</a></b>
|
||||
or
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_PART_FN">ZOLTAN_PART_FN</a></b> for <i>LB_APPROACH</i>=<i>Repartition</i> and for <a href="ug_alg.html#REMAP"><i>REMAP</i></a>=1.
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>
|
||||
</p>
|
||||
<hr width="100%">[<a href="ug.html">Table of Contents</a> | <a
|
||||
href="ug_alg_patoh.html">Next:
|
||||
PaToH</a> | <a href="ug_alg_hypergraph.html">Previous:
|
||||
Hypergraph Partitioning</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
258
thirdParty/Zoltan/docs/ug_html/ug_alg_ptscotch.html
vendored
Normal file
@ -0,0 +1,258 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.6 sun4m) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<title>Zoltan User's Guide: Scotch Interface</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="ug.html">Zoltan User's Guide</a>
|
||||
| <a href="ug_alg_hier.html">Next</a> | <a href="ug_alg_parmetis.html">Previous</a></i></b></div>
|
||||
|
||||
<h2>
|
||||
<a NAME="PT-Scotch"></a>Graph partitioning: Scotch/PT-Scotch</h2>
|
||||
|
||||
<p>
|
||||
For more information about graph partitioning, see <a href="ug_alg_parmetis.html">ParMetis</a>.
|
||||
</p>
|
||||
<p>
|
||||
Scotch is a library for ordering and partitioning, developed at LaBRI in Bordeaux, France. PT-Scotch is the parallel module in Scotch. (We use the name PT-Scotch when it applies only to parallel version, Scotch when it concerns at least the serial version.) Scotch is a third-party library in Zoltan and should be obtained separately from the <a href="https://www.labri.fr/perso/pelegrin/scotch/">Scotch web site</a>. Currently, Zoltan supports version 5.1 of Scotch, compiled with the support of PT-Scotch and <i>int</i> coding for vertices, not <i>long</i> (on architectures where <i>sizeof(int) != sizeof(long)</i>).
|
||||
<p>
|
||||
If the parameter <a href="#SCOTCH_TYPE">SCOTCH_TYPE</a> is set to LOCAL and the number of processors
|
||||
is 1 (e.g., mpirun -np 1), the sequential version of Scotch is called.
|
||||
</p>
|
||||
<p>
|
||||
Both the serial (Scotch) and the parallel (PT-Scotch) compute k-way partitioning by doing recursive bisection.
|
||||
</p>
|
||||
<p>
|
||||
Scotch must be used in the context LB_APPROACH=partition, to balance poorly distributed data. Unlike ParMetis, Scotch doesn't support the multiconstraint partitioning feature. However, for single constraint partitioning it seems to produce better results than ParMetis although it requires less memory.
|
||||
</p>
|
||||
|
||||
|
||||
<table WIDTH="100%" NOSAVE >
|
||||
<tr>
|
||||
<td valign="top"><b>Value of LB_METHOD:</b></td>
|
||||
<td><b>GRAPH</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><b>Value of GRAPH_PACKAGE:</b></td>
|
||||
<td><b>Scotch</b></td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td><b>Parameters:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top"><i> LB_APPROACH<br>
|
||||
</i></td>
|
||||
<td>The load balancing approach:. <br>
|
||||
<i>PARTITION</i> - partition from scratch, not taking
|
||||
the current data distribution into account<br>
|
||||
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>SCOTCH_METHOD</i></td>
|
||||
<td>For now, always set to RBISECT</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>SCOTCH_STRAT</i></td>
|
||||
<td>The Scotch strategy string; see the Scotch documentation.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>SCOTCH_STRAT_FILE</i></td>
|
||||
<td>A file that contains an arbitrary long Scotch strategy string; see the Scotch documentation.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <a NAME="SCOTCH_TYPE"></a><i>SCOTCH_TYPE</i></td>
|
||||
<td>Whether or not the parallel library is used. The default value is
|
||||
<i>GLOBAL</i> and if not set to <i>LOCAL</i>, the parallel graph
|
||||
partitioning is used.</td>
|
||||
</tr>
|
||||
|
||||
<tr nosave="" valign="top">
|
||||
<td> <i>CHECK_GRAPH</i></td>
|
||||
<td nosave="">Level of error checking for graph input: 0 = no
|
||||
checking, 1
|
||||
= on-processor checking, 2 = full checking. (CHECK_GRAPH==2 is very
|
||||
slow
|
||||
and should be used only during debugging).</td>
|
||||
</tr>
|
||||
<tr nosave="" valign="top">
|
||||
<td> <i>SCATTER_GRAPH</i></td>
|
||||
<td nosave="">Scatter graph data by distributing contiguous
|
||||
chunks of objects
|
||||
(vertices) of roughly equal size to each processor before calling the
|
||||
partitioner.
|
||||
0 = don't scatter;
|
||||
1 = scatter only if all objects are on a single processor;
|
||||
2 = scatter if at least one processor owns no objects;
|
||||
3 = always scatter. </td>
|
||||
</tr>
|
||||
|
||||
<tr nosave="" valign="top">
|
||||
<td> <i>GRAPH_SYMMETRIZE</i></td>
|
||||
<td nosave="">How to symmetrize the graph:
|
||||
NONE = graph is symmetric and no symmetrization is needed <br/>
|
||||
TRANSPOSE = if M is adjacency matrix of the input graph, output will be the graph representation of M+M<sup>T</sup> <br/>
|
||||
BIPARTITE = graph is symmetrized in a bipartite way : [[ 0 M ][M<sup>t</sup> 0]]
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr nosave="" valign="top">
|
||||
<td> <i>GRAPH_SYM_WEIGHT</i></td>
|
||||
<td nosave="">How edge weights are handled during symmetrization:
|
||||
ADD = weights of each arc are added <br/>
|
||||
MAX = only the heaviest arc weight is kept <br/>
|
||||
<!-- ERROR = fail if complementary arcs don't have the same weight. -->
|
||||
<p>See more informations about graph build options on this <a href="ug_graph_build.html">page</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td valign="top"><b>Default values:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>LB_APPROACH</i> = Partition</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>SCOTCH_METHOD</i> = RBISECT</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>SCOTCH_STRAT</i> = "" (default Scotch strategy)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>SCOTCH_STRAT_FILE</i> = "" (default Scotch strategy)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>CHECK_GRAPH</i> = 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>SCATTER_GRAPH </i>= 1</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>GRAPH_SYMMETRIZE </i>= NONE</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>GRAPH_SYM_WEIGHT </i>= ADD</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Required Query Functions:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</a></b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
|
||||
<td></td>
|
||||
<td NOSAVE>
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_NUM_EDGES_MULTI_FN">ZOLTAN_NUM_EDGES_MULTI_F
|
||||
N</a></b> or
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_NUM_EDGES_FN">ZOLTAN_NUM_EDGES_FN</a></b>
|
||||
<br>
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_EDGE_LIST_MULTI_FN">ZOLTAN_EDGE_LIST_MULTI_F
|
||||
N</a></b> or
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_EDGE_LIST_FN">ZOLTAN_EDGE_LIST_FN</a></b>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
|
||||
<p>
|
||||
<hr WIDTH="100%">[<a href="ug.html">Table of Contents</a> | <a href="ug_alg_hier.html">Next:
|
||||
Hybrid Hierarchical Partitioning</a> | <a href="ug_alg_parmetis.html">Previous:
|
||||
ParMETIS</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
127
thirdParty/Zoltan/docs/ug_html/ug_alg_random.html
vendored
Normal file
@ -0,0 +1,127 @@
|
||||
<!-------- @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="GENERATOR"
|
||||
content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<title>Zoltan User's Guide: RANDOM</title>
|
||||
</head>
|
||||
<body bgcolor="#ffffff">
|
||||
<div align="right"><b><i><a href="ug.html">User's Guide</a>
|
||||
| <a href="ug_alg_geom.html">Next</a> | <a
|
||||
href="ug_alg_cyclic.html">Previous</a></i></b></div>
|
||||
<h2>
|
||||
<a name="RANDOM"></a>Random</h2>
|
||||
Random is not really a load-balancing algorithm,
|
||||
and should be used only for testing!
|
||||
It takes each object and randomly assigns it to a new part.
|
||||
Via a parameter, one can alternatively choose to randomly perturb
|
||||
only a fraction of the objects. The random method does not use weights
|
||||
and does not attempt to achieve load balance.
|
||||
<br>
|
||||
|
||||
<table width="100%" nosave="">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Method String:</b></td>
|
||||
<td><b>Random</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Parameters:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"> <i>RANDOM_MOVE_FRACTION</i></td>
|
||||
<td>The fraction of objects to randomly move.<br>
|
||||
1.0 = move all; 0.0 = move nothing</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Default:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><i>RANDOM_MOVE_FRACTION</i> = 1.0</td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<td valign="top"><b>Required Query Functions:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</a></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>
|
||||
|
||||
<HR WIDTH="100%">[<a href="ug.html">Table of Contents</a> |
|
||||
<a href="ug_alg_geom.html">Next: Geometric (Coordinate-Based) Partitioners</a>
|
||||
| <a href="ug_alg_cyclic.html">Previous: Cyclic</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
489
thirdParty/Zoltan/docs/ug_html/ug_alg_rcb.html
vendored
Normal file
@ -0,0 +1,489 @@
|
||||
<!-------- @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="GENERATOR"
|
||||
content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<title>Zoltan User's Guide: RCB</title>
|
||||
</head>
|
||||
<body bgcolor="#ffffff">
|
||||
<div align="right"><b><i><a href="ug.html">Zoltan User's Guide</a>
|
||||
| <a href="ug_alg_rib.html">Next</a> | <a
|
||||
href="ug_alg_geom.html">Previous</a></i></b></div>
|
||||
<h2>
|
||||
<a name="RCB"></a>Recursive Coordinate Bisection (RCB)</h2>
|
||||
An implementation of Recursive Coordinate Bisection (RCB) due to Steve
|
||||
Plimpton of Sandia National Laboratories is included in Zoltan.
|
||||
RCB was first proposed as a static load-balancing algorithm by
|
||||
<a href="ug_refs.html#berger">Berger
|
||||
and Bokhari</a>, but is attractive as a dynamic load-balancing
|
||||
algorithm
|
||||
because it implicitly produces incremental partitions. In RCB, the
|
||||
computational
|
||||
domain is first divided into two regions by a cutting plane orthogonal
|
||||
to one of the coordinate axes so that half the work load is in each of
|
||||
the sub-regions. The splitting direction is determined by computing in
|
||||
which coordinate direction the set of objects is most elongated, based
|
||||
upon the geometric locations of the objects. The sub-regions are then
|
||||
further
|
||||
divided by recursive application of the same splitting algorithm until
|
||||
the number of sub-regions equals the number of processors. Although this
|
||||
algorithm was first devised to cut into a number of sets which is a power
|
||||
of two, the set sizes in a particular cut needn't be equal. By adjusting
|
||||
the part sizes appropriately, any number of equally-sized sets can
|
||||
be created. If the parallel machine has processors with different
|
||||
speeds,
|
||||
sets with nonuniform sizes can also be easily generated. The Zoltan
|
||||
implementation
|
||||
of RCB has several parameters which can be modified by the <b><a
|
||||
href="ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
|
||||
function. A recent feature is that RCB allows multiple weights; that
|
||||
is, one can balance with respect to several load criteria
|
||||
simultaneously.
|
||||
Note that there is no guarantee that a desired load balance tolerance
|
||||
can be achieved using RCB, especially in the multiconstraint case.<br>
|
||||
<p>
|
||||
Information about the sub-regions generated by RCB can be obtained by an
|
||||
application through calls to
|
||||
<a href="#Zoltan_RCB_Box"><b>Zoltan_RCB_Box</b></a>. This function is not
|
||||
required to perform load balancing; it only provides auxiliary information
|
||||
to an application.
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<table width="100%" nosave="">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top"><b>Method String:</b></td>
|
||||
<td><b>RCB</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Parameters:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"> <i>RCB_OVERALLOC</i></td>
|
||||
<td>The amount by which to over-allocate temporary storage arrays
|
||||
for objects
|
||||
within the RCB algorithm when additional storage is due to changes in
|
||||
processor
|
||||
assignments. <br>
|
||||
1.0 = no extra storage allocated; 1.5 = 50% extra storage; etc.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><i> RCB_REUSE</i></td>
|
||||
<td>Flag to indicate whether to use previous cuts as initial
|
||||
guesses for
|
||||
the current RCB invocation. <br>
|
||||
0 = don't use previous cuts; 1 = use previous cuts.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" nosave=""> <i> RCB_OUTPUT_LEVEL</i></td>
|
||||
<td>Flag controlling the amount of timing and diagnostic output
|
||||
the routine
|
||||
produces. <br>
|
||||
0 = no output; 1 = print summary; 2 = print data for each processor.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" nosave=""> <i> CHECK_GEOM</i></td>
|
||||
<td>Flag controlling the invocation of input and output error
|
||||
checking. <br>
|
||||
0 = don't do checking; 1 = do checking.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" nosave=""> <i> KEEP_CUTS</i></td>
|
||||
<td>Should information about the cuts determining the RCB
|
||||
decomposition
|
||||
be retained? It costs a bit of time to do so, but this information is
|
||||
necessary
|
||||
if application wants to add more objects to the decomposition via calls
|
||||
to <b><a href="ug_interface_augment.html#Zoltan_LB_Point_PP_Assign">Zoltan_LB_Point_PP_Assign</a></b>
|
||||
or to <b><a href="ug_interface_augment.html#Zoltan_LB_Box_PP_Assign">Zoltan_LB_Box_PP_Assign</a></b>.
|
||||
<br>
|
||||
0 = don't keep cuts; 1 = keep cuts.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td VALIGN=TOP NOSAVE> <a name="AVERAGE_CUTS"></a><i> AVERAGE_CUTS</i></td>
|
||||
|
||||
<td>When set to one, coordinates of RCB cutting planes are computed to be the
|
||||
average of the coordinates of the closest object on each side of the cut.
|
||||
Otherwise, coordinates of cutting planes may equal those of one of the
|
||||
closest objects.
|
||||
<br>0 = don't average cuts; 1 = average cuts.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top" nosave=""> <i> RCB_LOCK_DIRECTIONS</i></td>
|
||||
<td>Flag that determines whether the order of the directions of
|
||||
the cuts is kept
|
||||
constant after they are determined the first time RCB is called. <br>
|
||||
0 = don't lock directions; 1 = lock directions.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" nosave=""> <i> RCB_SET_DIRECTIONS</i></td>
|
||||
<td>If this flag is set, the order of cuts is changed so that all
|
||||
of the cuts
|
||||
in any direction are done as a group. The number of cuts in each
|
||||
direction is
|
||||
determined and then the value of the parameter is used to determine the
|
||||
order
|
||||
that those cuts are made in. When 1D and 2D problems are partitioned,
|
||||
the
|
||||
directions corresponding to unused dimensions are ignored. <br>
|
||||
0 = don't order cuts; 1 = xyz; 2 = xzy; 3 = yzx; 4 = yxz; 5 = zxy; 6 =
|
||||
zyx;</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" nosave=""> <i> RCB_RECTILINEAR_BLOCKS</i></td>
|
||||
<td>Flag controlling the shape of the resulting regions. If this
|
||||
option is
|
||||
specified, then when a cut is made, all of the dots located on the cut
|
||||
are
|
||||
moved to the same side of the cut. The resulting regions are then
|
||||
rectilinear. When these dots are treated as a group, then the resulting
|
||||
load balance may not be as good as when the group of dots is split by
|
||||
the
|
||||
cut. <br>
|
||||
0 = move dots individually; 1 = move dots in groups.<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td VALIGN=TOP NOSAVE> <i> REDUCE_DIMENSIONS</i></td>
|
||||
<td>
|
||||
When a 3 dimensional geometry is almost flat, it may make more
|
||||
sense to treat it as a 2 dimensional geometry when applying the RCB
|
||||
algorithm. In this case, a 2 dimensional RCB calculation is applied to a plane
|
||||
that corresponds with the geometry. (This results in cuts that, while
|
||||
still orthogonal, may no longer be axis aligned.)
|
||||
If this parameter is set to <B>1</B>, a 3 dimensional
|
||||
geometry will be treated as 2 dimensional if it is very flat,
|
||||
or 1 dimensional if it is very thin. A 2 dimensional geometry will
|
||||
be treated as 1 dimensional if it is very thin.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td VALIGN=TOP NOSAVE> <i> DEGENERATE_RATIO</i></td>
|
||||
<td>
|
||||
If the <B>REDUCE_DIMENSIONS</B> parameter is set, then this parameter
|
||||
determines when a geometry is considered to be degenerate.
|
||||
A bounding box which is oriented to the geometry is constructed, and
|
||||
the lengths of its sides are tested against a ratio of 1 : <B>DEGENERATE_RATIO</B>.
|
||||
</td>
|
||||
</tr>
|
||||
<td VALIGN=TOP NOSAVE> <i> RCB_RECOMPUTE_BOX</i></td>
|
||||
|
||||
<td>Flag indicating whether the bounding box of set of parts is
|
||||
recomputed at each level of recursion. By default, the longest direction
|
||||
of the bounding box is cut during bisection. Recomputing the bounding
|
||||
box at each level of recursion can produce more effective cut directions
|
||||
for unusually shaped geometries; the computation does, however, take
|
||||
additional time and communication, and may cause cut directions to
|
||||
vary from one invocation of RCB to the next.
|
||||
<br>0 = don't recompute the bounding box; 1 = recompute the box.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top"><i> OBJ_WEIGHTS_COMPARABLE</i><br>
|
||||
</td>
|
||||
<td valign="top">In the multiconstraint case, are
|
||||
the object weights comparable? Do they have the same units and is the
|
||||
scaling meaningful? For example, if the jth weight corresponds to the
|
||||
expected time in phase j (measured in seconds), set this parameter to
|
||||
1. (0 = incomparable, 1 = comparable)<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><i> RCB_MULTICRITERIA_NORM<br>
|
||||
</td>
|
||||
<td valign="top">Norm used in multicriteria
|
||||
algorithm; this determines how to balance the different weight
|
||||
constraints. Valid values are 1,2, and 3. Roughly, if the weights
|
||||
correspond to different phases, then the value 1 (1-norm) tries to
|
||||
minimize the total time (sum over all phases) while the value 3
|
||||
(max-norm) attempts to minimize the worst imbalance in any phase. The
|
||||
2-norm does something in between. Try a different value if you're
|
||||
not happy with the balance. <br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><i> RCB_MAX_ASPECT_RATIO</i><br>
|
||||
</td>
|
||||
<td valign="top">Maximum allowed ratio between
|
||||
the largest and smallest side of a subdomain. Must be > 1. <br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><b>Default:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>RCB_OVERALLOC</i> = 1.2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>RCB_REUSE</i> = 0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>RCB_OUTPUT_LEVEL</i> = 0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>CHECK_GEOM</i> = 1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>KEEP_CUTS</i> = 0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><i>AVERAGE_CUTS</i> = 0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>RCB_LOCK_DIRECTIONS</i> = 0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>REDUCE_DIMENSIONS</i> = 0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>DEGENERATE_RATIO</i> = 10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>RCB_SET_DIRECTIONS</i> = 0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><i>RCB_RECTILINEAR_BLOCKS</i> = 0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><i>RCB_RECOMPUTE_BOX</i> = 0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
<td valign="top"><i>OBJ_WEIGHTS_COMPARABLE</i> = 0<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
<td valign="top"><i>RCB_MULTICRITERIA_NORM</i> = 1<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
<td valign="top"><i>RCB_MAX_ASPECT_RATIO</i> = 10<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><b>Required Query Functions:</b></td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</a></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_NUM_GEOM_FN">ZOLTAN_NUM_GEOM_FN</a></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td> <b><a href="ug_query_lb.html#ZOLTAN_GEOM_MULTI_FN">ZOLTAN_GEOM_MULTI_FN</a></b>
|
||||
or <b><a href="ug_query_lb.html#ZOLTAN_GEOM_FN">ZOLTAN_GEOM_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>
|
||||
<HR WIDTH="100%">
|
||||
<A NAME="Zoltan_RCB_Box"></A>
|
||||
<HR WIDTH="100%">
|
||||
<TABLE WIDTH="100%" NOSAVE >
|
||||
<TR NOSAVE>
|
||||
<TD VALIGN=TOP NOSAVE>C:</TD>
|
||||
|
||||
<TD WIDTH="85%">
|
||||
int <B>Zoltan_RCB_Box</B> (
|
||||
<br> struct <B>Zoltan_Struct</B> *<I> zz</I>,
|
||||
<br> int <I>part</I>,
|
||||
<br> int <I>*ndim</I>,
|
||||
<br> double <I>*xmin</I>,
|
||||
<br> double <I>*ymin</I>,
|
||||
<br> double <I>*zmin</I>,
|
||||
<br> double <I>*xmax</I>,
|
||||
<br> double <I>*ymax</I>,
|
||||
<br> double <I>*zmax</I>);
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR NOSAVE>
|
||||
<TD VALIGN=TOP WIDTH="15%" NOSAVE>FORTRAN:</TD>
|
||||
|
||||
<TD> FUNCTION <B>Zoltan_RCB_Box</B>(<I>zz, part,ndim, xmin, ymin, zmin,
|
||||
xmax, ymax, zmax</I>)
|
||||
<BR> INTEGER(Zoltan_INT) :: Zoltan_RCB_Box
|
||||
<BR> TYPE(Zoltan_Struct), INTENT(IN) :: zz
|
||||
<BR> INTEGER(Zoltan_INT), INTENT(IN) :: part
|
||||
<BR> INTEGER(Zoltan_INT), INTENT(OUT) :: ndim
|
||||
<BR> REAL(Zoltan_DOUBLE), INTENT(OUT) :: xmin, ymin, zmin, xmax, ymax, zmax
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<HR WIDTH="100%">
|
||||
In many settings, it is useful to know a part's bounding box
|
||||
generated by RCB. This bounding box describes the region of space
|
||||
assigned to a given part.
|
||||
Given an RCB decomposition of space and a part number,
|
||||
<B>Zoltan_RCB_Box</b> returns the lower
|
||||
and upper corners of the region of space assigned to the part.
|
||||
To use this routine, the parameter <B>KEEP_CUTS</B>
|
||||
must be set to TRUE when the decomposition is generated. This parameter
|
||||
will cause the sequence of geometric cuts to be saved, which
|
||||
is necessary for <B>Zoltan_RCB_Box</B> to do its job.
|
||||
<BR>
|
||||
|
||||
<TABLE WIDTH="100%" >
|
||||
<TR>
|
||||
<TD VALIGN=TOP WIDTH="20%"><B>Arguments:</B></TD>
|
||||
<td WIDTH="80%"></td>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD><I> zz</I></TD>
|
||||
|
||||
<TD>Pointer to the Zoltan structure created by <B><A HREF="ug_interface_init.htm
|
||||
l#Zoltan_Create">Zoltan_Create</A></B>.</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD><I> part</I></TD>
|
||||
|
||||
<TD>Part number of part for which the bounding box should be returned.
|
||||
</td>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD><I> ndim</I></TD>
|
||||
|
||||
<TD>Upon return, the number of dimensions in the partitioned geometry.
|
||||
</td>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP><I> xmin, ymin, zmin</I></TD>
|
||||
|
||||
<TD>Upon return, the coordinates of the lower extent of bounding box
|
||||
for the part.
|
||||
If the geometry is two-dimensional, <i>zmin</i> is -DBL_MAX.
|
||||
If the geometry is one-dimensional, <i>ymin</i> is -DBL_MAX.
|
||||
</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN=TOP><I> xmax, ymax, zmax</I></TD>
|
||||
|
||||
<TD>Upon return, the coordinates of the upper extent of bounding box
|
||||
for the part.
|
||||
If the geometry is two-dimensional, <i>zmax</i> is DBL_MAX.
|
||||
If the geometry is one-dimensional, <i>ymax</i> is DBL_MAX.
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD><B>Returned Value:</B></TD>
|
||||
|
||||
<TD></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP> int</TD>
|
||||
|
||||
<TD><A HREF="ug_interface.html#Error Codes">Error code</A>.</TD>
|
||||
</TR>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
|
||||
<hr WIDTH="100%">[<a href="ug.html">Table of Contents</a> |
|
||||
<a href="ug_alg_rib.html">Next: Recursive Inertial Bisection (RIB)</a>
|
||||
| <a href="ug_alg_geom.html">Previous: Geometric (Coordinate-based) Partitioners</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
272
thirdParty/Zoltan/docs/ug_html/ug_alg_reftree.html
vendored
Normal file
@ -0,0 +1,272 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; U; SunOS 5.6 sun4m) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<TITLE>Zoltan User's Guide: Refinement Tree Based Partition</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="ug.html">Zoltan User's Guide</a> | <a href="ug_alg_hypergraph.html">Next</a> | <a href="ug_alg_hsfc.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<H2>
|
||||
<A NAME="REFTREE"></A>Refinement Tree Partitioning (REFTREE)</H2>
|
||||
The refinement tree based partitioning method is due to William Mitchell
|
||||
of the National Institute of Standards and Technology
|
||||
[<A HREF="ug_refs.html#reftree">Mitchell</A>].
|
||||
It is closely related to the Octree and Space-Filling Curve methods,
|
||||
except it uses the tree that represents the adaptive refinement process
|
||||
that created the grid. This tree is constructed through the tree-based
|
||||
query functions.
|
||||
|
||||
<P>Each node of the refinement tree corresponds to an element that
|
||||
occurred during the grid refinement process. The first level of the tree
|
||||
(the children of the root of the tree) corresponds to the initial coarse
|
||||
grid, one tree node per initial element. It is assumed that the initial
|
||||
coarse grid does not change through the execution of the program, except
|
||||
that the local IDs, assignment of elements to processors, and weights
|
||||
can change. If any other aspect of the coarse grid changes, then the
|
||||
Zoltan structure should be destroyed and recreated.
|
||||
The children of a node in the
|
||||
tree correspond to the elements that were created when the corresponding
|
||||
element was refined. The children are ordered such that a traversal of
|
||||
the tree creates a space-filling curve within each initial element.
|
||||
If the initial elements can be ordered with a contiguous path through them,
|
||||
then the traversal creates a space-filling curve through all the elements.
|
||||
Each element has a designated "in" vertex and "out" vertex, with the out
|
||||
vertex of one element being the same as the in vertex of the next element
|
||||
in the path, in other words the path goes through a vertex to move from
|
||||
one element to the next (and does not go out the same vertex it came in).
|
||||
|
||||
<P>The user may allow Zoltan to determine the order of the coarse grid
|
||||
elements, or may specify the order, which might be faster or produce a
|
||||
better path. If Zoltan determines the order, the user can select between
|
||||
an order that will produce connected parts, an order based on a Hilbert
|
||||
Space Filling Curve, or an order based on a Sierpinski Space Filling Curve.
|
||||
See the parameter REFTREE_INITPATH below. If the user provides the order, then
|
||||
the in/out vertices must also be supplied. Similarly, the
|
||||
user may specify the order and in/out vertices of the child elements, or
|
||||
allow Zoltan to determine them. If the user knows how to provide a good
|
||||
ordering for the children, this may be significantly faster than the default
|
||||
general algorithm. However, accelerated forms of the ordering algorithm
|
||||
are provided for certain types of refinement schemes and should be used in
|
||||
those cases.
|
||||
See <B><A HREF="ug_query_lb.html#ZOLTAN_CHILD_LIST_FN">ZOLTAN_CHILD_LIST_FN</A></B>.
|
||||
If the user always specifies the order, then the vertices and in/out vertices
|
||||
are not used and do not have to be provided.
|
||||
|
||||
<P>Weights are assigned to the nodes of the tree. These weights need not be
|
||||
only on the leaves (the elements of the final grid), but can also be on
|
||||
interior nodes (for example, to represent work on coarse grids of a multigrid
|
||||
algorithm). The default weights are 1.0 at the leaves and 0.0 at the
|
||||
interior nodes, which produces a partition based on the number of elements
|
||||
in each part.
|
||||
An initial tree traversal is used to sum the weights, and a second traversal
|
||||
to cut the space-filling curve into appropriately-sized pieces and assign
|
||||
elements to parts. The number of parts is not necessarily equal
|
||||
to the number of processors.
|
||||
|
||||
<P> The following limitations should be removed in the future.
|
||||
<LI>For multicomponent weights, only the first component is used.
|
||||
<LI>Heterogeneous architectures are not supported, in the sense that the
|
||||
computational load is equally divided over the processors. A vector of
|
||||
relative part sizes is used to determine the weight assigned to each
|
||||
part, but they are currently all equal. In the future they should
|
||||
be input to reflect heterogeneity.
|
||||
|
||||
<p>
|
||||
Another limitation is that refinement tree partitioning has not been modified to work with
|
||||
64-bit global IDs. If 64-bit IDs are selected at configure time with either the
|
||||
<A HREF="ug_usage.html#Autotools">autotools</A> build or the
|
||||
<A HREF="ug_usage.html#CMake">CMake</A> build, the method will fail.
|
||||
<BR>
|
||||
<BR>
|
||||
<TABLE WIDTH="100%" NOSAVE >
|
||||
<TR>
|
||||
<TD VALIGN=TOP><B>Method String:</B></TD>
|
||||
|
||||
<TD><B>REFTREE</B></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD><B>Parameters:</B></TD>
|
||||
|
||||
<TD></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP> <I>REFTREE_HASH_SIZE</I></TD>
|
||||
|
||||
<TD> The size of the hash table to map from global IDs to refinement tree
|
||||
nodes. Larger values require more memory but may reduce search time.</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP><B>Default:</B></TD>
|
||||
|
||||
<TD></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD><I>REFTREE_HASH_SIZE</I> = 16384</TD>
|
||||
</TR>
|
||||
|
||||
<TD></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP> <I>REFTREE_INITPATH</I></TD>
|
||||
|
||||
<TD>
|
||||
Determines the method for finding an order of the elements in the initial
|
||||
grid. </BR>
|
||||
"SIERPINSKI" uses a Sierpinski Space Filling Curve and is most appropriate
|
||||
for grids consisting of triangles. It is currently limited to 2D. </BR>
|
||||
"HILBERT" uses a Hilbert Space Filling Curve and is most appropriate for grids
|
||||
consisting of quadralaterals or hexahedra. </BR>
|
||||
"CONNECTED" attempts to produce connected parts (guaranteed for triangles
|
||||
and tetrahedra), however they tend to be stringy, i.e., less compact than the
|
||||
SFC methods. It is most appropriate when connected parts are required. </BR>
|
||||
An invalid character string will invoke the default method.
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD VALIGN=TOP><B>Default:</B></TD>
|
||||
|
||||
<TD></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD><I>REFTREE_INITPATH</I> = "SIERPINSKI" if the grid contains only triangles</BR>
|
||||
<I>REFTREE_INITPATH</I> = "HILBERT" otherwise
|
||||
</BR></BR>
|
||||
<I>NOTE:</I> In Zoltan versions 1.53 and earlier the default was "CONNECTED".
|
||||
To reproduce old results, use <I>REFTREE_INITPATH</I> = "CONNECTED".
|
||||
</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN=TOP><B>Required Query Functions:</B></TD>
|
||||
|
||||
<TD></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD><B><A HREF="ug_query_lb.html#ZOLTAN_NUM_COARSE_OBJ_FN">ZOLTAN_NUM_COARSE_OBJ_FN</A></B></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD><B><A HREF="ug_query_lb.html#ZOLTAN_COARSE_OBJ_LIST_FN">ZOLTAN_COARSE_OBJ_LIST_FN</A></B>
|
||||
or <B><A HREF="ug_query_lb.html#ZOLTAN_FIRST_COARSE_OBJ_FN">ZOLTAN_FIRST_COARSE_OBJ_FN</A></B>/<B><A HREF="ug_query_lb.html#ZOLTAN_NEXT_COARSE_OBJ_FN">ZOLTAN_NEXT_COARSE_OBJ_FN</A></B>
|
||||
pair
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD><B><A HREF="ug_query_lb.html#ZOLTAN_NUM_CHILD_FN">ZOLTAN_NUM_CHILD_FN</A></B></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD><B><A HREF="ug_query_lb.html#ZOLTAN_CHILD_LIST_FN">ZOLTAN_CHILD_LIST_FN</A></B></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD><B><A HREF="ug_query_lb.html#ZOLTAN_CHILD_WEIGHT_FN">ZOLTAN_CHILD_WEIGHT_FN</A></B></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD>The following functions are needed only if the order of the initial
|
||||
elements will be determined by a space filling curve method:</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD><B><A HREF="ug_query_lb.html#ZOLTAN_NUM_GEOM_FN">ZOLTAN_NUM_GEOM_FN</A></B></TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD></TD>
|
||||
|
||||
<TD>
|
||||
<B><A HREF="ug_query_lb.html#ZOLTAN_GEOM_MULTI_FN">ZOLTAN_GEOM_MULTI_FN</A></B><B>
|
||||
or
|
||||
<B><A HREF="ug_query_lb.html#ZOLTAN_GEOM_FN">ZOLTAN_GEOM_FN</A></B>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
</TABLE>
|
||||
|
||||
|
||||
<P>
|
||||
<HR WIDTH="100%">[<A HREF="ug.html">Table of Contents</A> |
|
||||
<A HREF="ug_alg_hypergraph.html">Next: Hypergraph Partitioning</A>
|
||||
| <A HREF="ug_alg_hsfc.html">Previous: Hilbert Space-Filling
|
||||
Curve Partitioning</A> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</BODY>
|
||||
</HTML>
|
258
thirdParty/Zoltan/docs/ug_html/ug_alg_rib.html
vendored
Normal file
@ -0,0 +1,258 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<title>Zoltan User's Guide: RIB</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="ug.html">Zoltan User's Guide</a> | <a href="ug_alg_hsfc.html">Next</a> | <a href="ug_alg_rcb.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<h2>
|
||||
<a NAME="RIB"></a>Recursive Inertial Bisection (RIB)</h2>
|
||||
An implementation of Recursive Inertial Bisection (RIB) is included in
|
||||
Zoltan. RIB was proposed as a load-balancing algorithm by
|
||||
<a href="ug_refs.html#williams">Williams</a> and later studied
|
||||
by <a href="ug_refs.html#taylor">Taylor and Nour-Omid</a>, but its
|
||||
origin is unclear. RIB is similar to RCB in that it divides the domain based on
|
||||
the location of the objects being partitioned by use of cutting planes.
|
||||
In RIB, the computational domain is first divided into two regions by a
|
||||
cutting plane orthogonal to the longest direction of the domain so that half
|
||||
the work load is in each of the sub-regions. The sub-regions are then further
|
||||
divided by recursive application of the same splitting algorithm until
|
||||
the number of sub-regions equals the number of processors. Although this
|
||||
algorithm was first devised to cut into a number of sets which is a power
|
||||
of two, the set sizes in a particular cut needn't be equal. By adjusting
|
||||
the part sizes appropriately, any number of equally-sized sets can
|
||||
be created. If the parallel machine has processors with different speeds,
|
||||
sets with nonuniform sizes can also be easily generated. The Zoltan implementation
|
||||
of RIB has several parameters which can be modified by the <b><a href="ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
|
||||
function.
|
||||
<p>
|
||||
RIB currently does not support multiple vertex weights. For such cases, use RCB instead.
|
||||
</p>
|
||||
<br>
|
||||
<table WIDTH="100%" NOSAVE >
|
||||
<tr>
|
||||
<td VALIGN=TOP WIDTH="20%"><b>Method String:</b></td>
|
||||
|
||||
<td><b>RIB</b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><b>Parameters:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> <i>RIB_OVERALLOC</i></td>
|
||||
|
||||
<td>The amount by which to over-allocate temporary storage arrays for objects
|
||||
within the RIB algorithm when additional storage is due to changes in processor
|
||||
assignments.
|
||||
<br>1.0 = no extra storage allocated; 1.5 = 50% extra storage; etc.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP NOSAVE> <i> RIB_OUTPUT_LEVEL</i></td>
|
||||
|
||||
<td>Flag controlling the amount of timing and diagnostic output the routine
|
||||
produces.
|
||||
<br>0 = no output; 1 = print summary; 2 = print data for each processor.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP NOSAVE> <i> CHECK_GEOM</i></td>
|
||||
|
||||
<td>Flag controlling the invocation of input and output error checking.
|
||||
<br>0 = don't do checking; 1 = do checking.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP NOSAVE> <i> KEEP_CUTS</i></td>
|
||||
|
||||
<td>Should information about the cuts determining the RIB decomposition
|
||||
be retained? It costs a bit of time to do so, but this information is necessary
|
||||
if application wants to add more objects to the decomposition via calls
|
||||
to <b><a href="ug_interface_augment.html#Zoltan_LB_Point_PP_Assign">Zoltan_LB_Point_PP_Assign</a></b>
|
||||
or to <b><a href="ug_interface_augment.html#Zoltan_LB_Box_PP_Assign">Zoltan_LB_Box_PP_Assign</a></b>.
|
||||
<br>0 = don't keep cuts; 1 = keep cuts.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP NOSAVE> <i> AVERAGE_CUTS</i></td>
|
||||
|
||||
<td>When set to one, coordinates of RIB cutting planes are computed to be the
|
||||
average of the coordinates of the closest object on each side of the cut.
|
||||
Otherwise, coordinates of cutting planes may equal those of one of the
|
||||
closest objects.
|
||||
<br>0 = don't average cuts; 1 = average cuts.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP NOSAVE> <i> REDUCE_DIMENSIONS</i></td>
|
||||
<td>
|
||||
When a 3 dimensional geometry is almost flat, it may make more
|
||||
sense to treat it as a 2 dimensional geometry when applying the RIB
|
||||
algorithm. (Coordinate values in the omitted direction are ignored
|
||||
for the purposes of partitioning.)
|
||||
If this parameter is set to <B>1</B>, a 3 dimensional
|
||||
geometry will be treated as 2 dimensional if it is very flat,
|
||||
or 1 dimensional if it is very thin. A 2 dimensional geometry will
|
||||
be treated as 1 dimensional if it is very thin.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td VALIGN=TOP NOSAVE> <i> DEGENERATE_RATIO</i></td>
|
||||
<td>
|
||||
If the <B>REDUCE_DIMENSIONS</B> parameter is set, then this parameter
|
||||
determines when a geometry is considered to be degenerate.
|
||||
A bounding box which is oriented to the geometry is constructed, and
|
||||
the lengths of its sides are tested against a ratio of 1 : <B>DEGENERATE_RATIO</B>.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Default:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><i>RIB_OVERALLOC</i> = 1.2</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><i>RIB_OUTPUT_LEVEL</i> = 0</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><i>CHECK_GEOM</i> = 1</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><i>KEEP_CUTS</i> = 0</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><i>AVERAGE_CUTS</i> = 0</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><i>REDUCE_DIMENSIONS</i> = 0</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><i>DEGENERATE_RATIO</i> = 10</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Required Query Functions:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</a></b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_NUM_GEOM_FN">ZOLTAN_NUM_GEOM_FN</a></b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td>
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_GEOM_MULTI_FN">ZOLTAN_GEOM_MULTI_FN</a></b>
|
||||
or <b><a href="ug_query_lb.html#ZOLTAN_GEOM_FN">ZOLTAN_GEOM_FN</a></b>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
<hr WIDTH="100%">[<a href="ug.html">Table of Contents</a> |
|
||||
<a href="ug_alg_hsfc.html">Next:
|
||||
Hilbert Space-Filling Curve Partitioning</a> | <a href="ug_alg_rcb.html">Previous:
|
||||
Recursive Coordinate Bisection (RCB)</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
81
thirdParty/Zoltan/docs/ug_html/ug_alg_simple.html
vendored
Normal file
@ -0,0 +1,81 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.76 [en] (X11; U; Linux 2.4.2-2smp i686) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<title>Zoltan User's Guide: Simple Partitioners for Testing</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="ug.html">Zoltan User's Guide</a>
|
||||
| <a href="ug_alg_block.html">Next</a> | <a href="ug_alg.html">Previous</a></i></b></div>
|
||||
|
||||
<h2>
|
||||
<a name="SIMPLE"></a>Simple Partitioners for Testing</h2>
|
||||
|
||||
Zoltan includes two very simple partitioners for testing initial
|
||||
implementations of Zoltan in applications. These partitioners are
|
||||
intended only for testing and to serve as examples.
|
||||
They use neither geometry nor connectivity (graph/hypergraph), so they
|
||||
require very few query functions (only two!).
|
||||
|
||||
<blockquote>
|
||||
<a href="ug_alg_block.html">Block partitioning</a> (BLOCK)
|
||||
<br><a href="ug_alg_random.html">Random partitioning</a> (RANDOM)
|
||||
</blockquote>
|
||||
|
||||
|
||||
<p>
|
||||
<hr WIDTH="100%">[<a href="ug.html">Table of Contents</a> | <a href="ug_alg_block.html">Next:
|
||||
Block Partitioning</a> | <a href="ug_alg.html">Previous:
|
||||
Load-Balancing Algorithms and Parameters</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
692
thirdParty/Zoltan/docs/ug_html/ug_backward.html
vendored
Normal file
@ -0,0 +1,692 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.6 sun4m) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<title>Zoltan User's Guide: Backward Compatilibity</title>
|
||||
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="ug.html">Zoltan User's Guide</a> | <a href="ug_refs.html">Next</a> | <a href="ug_release.html">Previous</a></i></b></div>
|
||||
<!---------------------------------------------------------------------------->
|
||||
<h2>
|
||||
Backward Compatibility with Previous Versions of Zoltan
|
||||
</h2>
|
||||
|
||||
As new features have been added to Zoltan, backward compatibility with previous
|
||||
versions of Zoltan has been maintained. Thus, users of previous versions of
|
||||
Zoltan can upgrade to a new version <b> without changing their application
|
||||
source code</b>.
|
||||
Modifications to application source code are needed <b>only</b> if the
|
||||
applications use new Zoltan functionality.
|
||||
<p>
|
||||
Enhancements to the Zoltan interface are described below.
|
||||
<blockquote>
|
||||
<a href="#Backward v3.8">Versions 3.8 and higher</a>
|
||||
<br><a href="#Backward v3.6">Versions 3.6 and higher</a>
|
||||
<br><a href="#Backward v3.2">Versions 3.2 and higher</a>
|
||||
<br><a href="#Backward v3.1">Versions 3.1 and higher</a>
|
||||
<br><a href="#Backward v3.0">Versions 3.0 and higher</a>
|
||||
<br><a href="#Backward v1.5">Versions 1.5 and higher</a>
|
||||
<br><a href="#Backward v1.3">Versions 1.3 and higher</a>
|
||||
</blockquote>
|
||||
|
||||
<!---------------------------------------------------------------------------->
|
||||
|
||||
<h2><a name="Backward v3.8"></a>
|
||||
<hr>Backward Compatibility: Versions 3.8 and higher
|
||||
</h2>
|
||||
<ul>
|
||||
<li>
|
||||
Zoltan is now released under Trilinos' BSD license.
|
||||
</li>
|
||||
<li>
|
||||
All deprecated features in <a href="#Backward v3.6">version 3.6</a>
|
||||
are now removed from Zoltan. See notes <a href="#Backward v3.6">below</a>.
|
||||
</li>
|
||||
</ul>
|
||||
<!---------------------------------------------------------------------------->
|
||||
|
||||
<h2><a name="Backward v3.6"></a>
|
||||
<hr>Backward Compatibility: Versions 3.6 and higher
|
||||
</h2>
|
||||
<ul>
|
||||
<li>
|
||||
Interfaces to Zoltan defined in lbi_const.h are now deprecated. Users should
|
||||
upgrade to interfaces in zoltan.h. File lbi_const.h should not be included
|
||||
in user files; rather, file zoltan.h should be included. File lbi_const.h will
|
||||
not be distributed in future versions of Zoltan.
|
||||
</li>
|
||||
<li>
|
||||
The OCTPART/OCTREE partitioning method is deprecated and will not be supported
|
||||
in future versions of Zoltan. This method is now disabled by default in the
|
||||
CMake build system; it can be enabled with CMake configuration flag
|
||||
-DZoltan_ENABLE_OCT:BOOL=ON. Users should switch to Zoltan method HSFC
|
||||
(Hilbert Space-Filling Curve partitioning), which should provide very similar
|
||||
decompositions, or consider RCB partitioning.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<!---------------------------------------------------------------------------->
|
||||
|
||||
<h2><a name="Backward v3.2"></a>
|
||||
<hr>Backward Compatibility: Versions 3.2 and higher
|
||||
</h2>
|
||||
Interfaces to
|
||||
<a href="ug_interface_color.html">Zoltan_Color</a>,
|
||||
<a href="ug_interface_order.html">Zoltan_Order</a> and
|
||||
<a href="ug_interface_lb.html#Zoltan_LB_Eval">Zoltan_LB_Eval</a> have changed.
|
||||
<p>
|
||||
The Zoltan native build environment, while still distributed, will no
|
||||
longer be supported. Users should use the
|
||||
<a href="ug_usage.html#Building the Library">autotools or CMake</a> systems.
|
||||
Builds of the Zoltan F90 interface are supported in both autotools and
|
||||
CMake.
|
||||
|
||||
|
||||
<!---------------------------------------------------------------------------->
|
||||
|
||||
<h2><a name="Backward v3.1"></a>
|
||||
<hr>Backward Compatibility: Versions 3.1 and higher
|
||||
</h2>
|
||||
|
||||
Terminology referring to partitions and parts was clarified.
|
||||
A "partition" describes the entire layout of the data across
|
||||
processes. A "part" is a subset of the data assigned to a
|
||||
single process. A partition is made up of many parts; the set
|
||||
of all the parts is a partition.
|
||||
<p>
|
||||
We applied this naming convention more consistently throughout Zoltan.
|
||||
Old parameters NUM_GLOBAL_PARTITIONS and NUM_LOCAL_PARTITIONS have been
|
||||
more accurately renamed <a href="ug_alg.html#NUM_GLOBAL_PARTS">NUM_GLOBAL_PARTS</a> and
|
||||
<a href="ug_alg.html#NUM_LOCAL_PARTS">NUM_LOCAL_PARTS</a>. Old query functions
|
||||
ZOLTAN_PARTITIONS_MULTI_FN and ZOLTAN_PARTITION_FN have been more
|
||||
accurately renamed
|
||||
<a href="ug_query_lb.html#ZOLTAN_PART_MULTI_FN">ZOLTAN_PART_MULTI_FN</a>
|
||||
and
|
||||
<a href="ug_query_lb.html#ZOLTAN_PART_FN">ZOLTAN_PART_FN</a>.
|
||||
However, in both cases, the old naming convention still works in the
|
||||
Zoltan library.
|
||||
|
||||
<!---------------------------------------------------------------------------->
|
||||
|
||||
<h2><a name="Backward v3.0"></a>
|
||||
<hr>Backward Compatibility: Versions 3.0 and higher
|
||||
</h2>
|
||||
|
||||
A new naming convention was implemented to better categorize partitioning
|
||||
methods. For more details, see parameters
|
||||
<blockquote>
|
||||
<a href="ug_alg.html#LB_METHOD">LB_METHOD</a>, <br>
|
||||
<a href="ug_alg.html#LB_APPROACH">LB_APPROACH</a>, <br>
|
||||
<a href="ug_alg_graph.html">GRAPH_PACKAGE</a>, and <br>
|
||||
<a href="ug_alg_hypergraph.html">HYPERGRAPH_PACKAGE</a>.
|
||||
</blockquote>
|
||||
Former valid values of LB_METHOD should continue to work. In particular,
|
||||
values of LB_METHOD for geometric partitioners
|
||||
<a href="ug_alg_rcb.html">RCB</a>,
|
||||
<a href="ug_alg_rib.html">RIB</a>,
|
||||
<a href="ug_alg_hsfc.html">HSFC</a>, and
|
||||
<a href="ug_alg_reftree.html">REFTREE</a> are unchanged.
|
||||
|
||||
<p>
|
||||
The default graph partitioner has been changed from
|
||||
<a href="ug_alg_parmetis.html">ParMETIS</a> to
|
||||
<a href="ug_alg_phg.html">Zoltan PHG</a>. This change was made to
|
||||
provide graph partitioning capability without reliance on the third-party
|
||||
library ParMETIS.
|
||||
|
||||
<p>
|
||||
Because Zoltan is designed primarily for dynamic load balancing,
|
||||
The default partitioning approach
|
||||
<a href="ug_alg.html#LB_APPROACH">LB_APPROACH</a>
|
||||
is now "repartition." This change affects only Zoltan's hypergraph
|
||||
partitioner <a href="ug_alg_phg.html">PHG</a>.
|
||||
|
||||
<!---------------------------------------------------------------------------->
|
||||
|
||||
<h2><a name="Backward v1.5"></a>
|
||||
<hr>Backward Compatibility: Versions 1.5 and higher
|
||||
</h2>
|
||||
|
||||
The ability to generate more parts than processors was added to Zoltan
|
||||
in version 1.5. Thus, Zoltan's partitioning and migration routines were
|
||||
enhanced to return and use both part assignments and processor assignments.
|
||||
New interface and query functions were added to support this additional
|
||||
information. All former Zoltan <a href="ug_param.html">parameters</a>
|
||||
apply to the new functions as they did to the old; new parameters
|
||||
<a href="ug_alg.html#NUM_GLOBAL_PARTS"><i>NUM_GLOBAL_PARTS</i></a>
|
||||
and
|
||||
<a href="ug_alg.html#NUM_LOCAL_PARTS"><i>NUM_LOCAL_PARTS</i></a>
|
||||
apply only to the new functions.
|
||||
<p>
|
||||
The table below lists the Zoltan function that uses both part and
|
||||
processor information, along with the analogous function that returns only
|
||||
processor information. Applications requiring only one part per
|
||||
processor can use either version of the functions.
|
||||
<p>
|
||||
<table border="1" cellpadding="5">
|
||||
<tr>
|
||||
<td>
|
||||
<b>Function with Part and Processor info (v1.5 and higher)</b>
|
||||
</td>
|
||||
<td>
|
||||
<b>Function with only Processor info (v1.3 and higher)</b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="ug_interface_lb.html#Zoltan_LB_Partition">Zoltan_LB_Partition</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_interface_lb.html#Zoltan_LB_Balance">Zoltan_LB_Balance</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="ug_interface_augment.html#Zoltan_LB_Point_PP_Assign">Zoltan_LB_Point_PP_Assign</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_interface_augment.html#Zoltan_LB_Point_Assign">Zoltan_LB_Point_Assign</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="ug_interface_augment.html#Zoltan_LB_Box_PP_Assign">Zoltan_LB_Box_PP_Assign</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_interface_augment.html#Zoltan_LB_Box_Assign">Zoltan_LB_Box_Assign</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="ug_interface_mig.html#Zoltan_Invert_Lists">Zoltan_Invert_Lists</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_interface_mig.html#Zoltan_Compute_Destinations">Zoltan_Compute_Destinations</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_interface_mig.html#Zoltan_Help_Migrate">Zoltan_Help_Migrate</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="ug_query_mig.html#ZOLTAN_PRE_MIGRATE_PP_FN">ZOLTAN_PRE_MIGRATE_PP_FN</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_mig.html#ZOLTAN_PRE_MIGRATE_FN">ZOLTAN_PRE_MIGRATE_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="ug_query_mig.html#ZOLTAN_MID_MIGRATE_PP_FN">ZOLTAN_MID_MIGRATE_PP_FN</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_mig.html#ZOLTAN_MID_MIGRATE_FN">ZOLTAN_MID_MIGRATE_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="ug_query_mig.html#ZOLTAN_POST_MIGRATE_PP_FN">ZOLTAN_POST_MIGRATE_PP_FN</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_mig.html#ZOLTAN_POST_MIGRATE_FN">ZOLTAN_POST_MIGRATE_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>
|
||||
|
||||
To continue using the v1.3 partition functions, no changes to C or Fortran90
|
||||
applications are needed. Zoltan interfaces from versions earlier than 1.3
|
||||
are also still supported (see
|
||||
<a href="#Backward v1.3">below</a>),
|
||||
requiring no changes to application programs.
|
||||
<p>
|
||||
To use the new v1.5 partitioning functions:
|
||||
<ul>
|
||||
<li>
|
||||
C users must include file <i>zoltan.h</i> in their applications and edit
|
||||
their applications to use the appropriate new functions.
|
||||
</li>
|
||||
<li>
|
||||
Fortran90 users must put
|
||||
<a href="ug_fortran_api.html#fortran ug api query">user-defined data types</a>
|
||||
in <i>zoltan_user_data.f90</i> and edit their applications to
|
||||
use the appropriate new functions. The new partitioning functions do not
|
||||
work with user-defined data types in <i>lb_user_const.f90</i>.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<!---------------------------------------------------------------------------->
|
||||
|
||||
<h2><a name="Backward v1.3"></a>
|
||||
<hr>Backward Compatibility: Versions 1.3 and higher
|
||||
</h2>
|
||||
<p>
|
||||
Versions of Zoltan before version 1.3 used a different naming convention for
|
||||
the Zoltan interface and query functions. All functions in Zoltan v.1.3 and
|
||||
above
|
||||
are prefixed with <b>Zoltan_</b>; earlier versions were prefixed with
|
||||
<b>LB_</b>.
|
||||
|
||||
<p>
|
||||
<b>Zoltan versions 1.3 and above maintain backward compatibility with the
|
||||
earlier
|
||||
Zoltan interface.</b> Thus, applications that used earlier versions of Zoltan
|
||||
can continue using Zoltan <b>without changing their source code</b>.
|
||||
<p>
|
||||
Only two
|
||||
changes are needed to build the application with Zoltan v.1.3 and higher:
|
||||
<ul>
|
||||
<li>
|
||||
All Zoltan include files are now in directory <i>Zoltan/include</i>.
|
||||
Thus, application include paths must point to this directory.
|
||||
<br>(Previously, include files were in <i>Zoltan/lb</i>.)
|
||||
<li>
|
||||
Applications link with Zoltan now by specifying only <i>-lzoltan</i>.
|
||||
<br>(Previously, applications had to link with <i>-lzoltan -lzoltan_comm
|
||||
-lzoltan_mem</i>.)
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
While it is not necessary for application developers to modify their
|
||||
source code to use Zoltan v.1.3 and above, those who want to update their
|
||||
source code
|
||||
should do the following in their application source files:
|
||||
<ul>
|
||||
<li>
|
||||
Replace Zoltan calls and constants (<b>LB_*</b>) with new names. The new
|
||||
names can be found through the <a href="#Backward Index">index below</a>.
|
||||
<li>
|
||||
C programs: Include file <i>zoltan.h</i> instead of <i>lbi_const.h</i>.
|
||||
<li>
|
||||
F90 programs: Put <a href="ug_fortran_api.html#fortran ug api query">user-defined data types</a> in file <i>zoltan_user_data.f90</i> instead of <i>lb_user_const.f90</i>.
|
||||
</ul>
|
||||
|
||||
|
||||
<!---------------------------------------------------------------------------->
|
||||
<h4>
|
||||
<a NAME="Backward Index"></a>Backward Compatilibity Index for Interface and Query Functions
|
||||
</h4>
|
||||
|
||||
<table border="1" cellpadding="5">
|
||||
<tr>
|
||||
<td>
|
||||
<b>Name in Earlier Zoltan Versions</b>
|
||||
</td>
|
||||
<td>
|
||||
<b>Name in Zoltan Version 1.3 and higher</b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_BORDER_OBJ_LIST_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_lb.html#ZOLTAN_BORDER_OBJ_LIST_FN">ZOLTAN_BORDER_OBJ_LIST_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_Balance
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_interface_lb.html#Zoltan_LB_Balance">Zoltan_LB_Balance</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_Box_Assign
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_interface_augment.html#Zoltan_LB_Box_Assign">Zoltan_LB_Box_Assign</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_CHILD_LIST_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_lb.html#ZOLTAN_CHILD_LIST_FN">ZOLTAN_CHILD_LIST_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_CHILD_WEIGHT_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_lb.html#ZOLTAN_CHILD_WEIGHT_FN">ZOLTAN_CHILD_WEIGHT_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_COARSE_OBJ_LIST_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_lb.html#ZOLTAN_COARSE_OBJ_LIST_FN">ZOLTAN_COARSE_OBJ_LIST_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_Compute_Destinations
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_interface_mig.html#Zoltan_Compute_Destinations">Zoltan_Compute_Destinations</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_Create
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_interface_init.html#Zoltan_Create">Zoltan_Create</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_Destroy
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_interface_init.html#Zoltan_Destroy">Zoltan_Destroy</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_EDGE_LIST_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_lb.html#ZOLTAN_EDGE_LIST_FN">ZOLTAN_EDGE_LIST_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_Eval
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_interface_lb.html#Zoltan_LB_Eval">Zoltan_LB_Eval</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_FIRST_BORDER_OBJ_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_lb.html#ZOLTAN_FIRST_BORDER_OBJ_FN">ZOLTAN_FIRST_BORDER_OBJ_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_FIRST_COARSE_OBJ_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_lb.html#ZOLTAN_FIRST_COARSE_OBJ_FN">ZOLTAN_FIRST_COARSE_OBJ_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_FIRST_OBJ_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_lb.html#ZOLTAN_FIRST_OBJ_FN">ZOLTAN_FIRST_OBJ_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_Free_Data
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_interface_lb.html#Zoltan_LB_Free_Data">Zoltan_LB_Free_Data</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_GEOM_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_lb.html#ZOLTAN_GEOM_FN">ZOLTAN_GEOM_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_Help_Migrate
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_interface_mig.html#Zoltan_Help_Migrate">Zoltan_Help_Migrate</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_Initialize
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_interface_init.html#Zoltan_Initialize">Zoltan_Initialize</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_MID_MIGRATE_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_mig.html#ZOLTAN_MID_MIGRATE_FN">ZOLTAN_MID_MIGRATE_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_NEXT_BORDER_OBJ_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_lb.html#ZOLTAN_NEXT_BORDER_OBJ_FN">ZOLTAN_NEXT_BORDER_OBJ_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_NEXT_COARSE_OBJ_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_lb.html#ZOLTAN_NEXT_COARSE_OBJ_FN">ZOLTAN_NEXT_COARSE_OBJ_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_NEXT_OBJ_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_lb.html#ZOLTAN_NEXT_OBJ_FN">ZOLTAN_NEXT_OBJ_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_NUM_BORDER_OBJ_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_lb.html#ZOLTAN_NUM_BORDER_OBJ_FN">ZOLTAN_NUM_BORDER_OBJ_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_NUM_CHILD_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_lb.html#ZOLTAN_NUM_CHILD_FN">ZOLTAN_NUM_CHILD_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_NUM_COARSE_OBJ_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_lb.html#ZOLTAN_NUM_COARSE_OBJ_FN">ZOLTAN_NUM_COARSE_OBJ_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_NUM_EDGES_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_lb.html#ZOLTAN_NUM_EDGES_FN">ZOLTAN_NUM_EDGES_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_NUM_GEOM_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_lb.html#ZOLTAN_NUM_GEOM_FN">ZOLTAN_NUM_GEOM_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_NUM_OBJ_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_OBJ_LIST_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_OBJ_SIZE_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_mig.html#ZOLTAN_OBJ_SIZE_FN">ZOLTAN_OBJ_SIZE_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_PACK_OBJ_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_mig.html#ZOLTAN_PACK_OBJ_FN">ZOLTAN_PACK_OBJ_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_POST_MIGRATE_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_mig.html#ZOLTAN_POST_MIGRATE_FN">ZOLTAN_POST_MIGRATE_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_PRE_MIGRATE_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_mig.html#ZOLTAN_PRE_MIGRATE_FN">ZOLTAN_PRE_MIGRATE_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_Point_Assign
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_interface_augment.html#Zoltan_LB_Point_Assign">Zoltan_LB_Point_Assign</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_Set_Fn
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_Set_<<i>lb_fn_type</i>>_Fn
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_<<i>zoltan_fn_type</i>>_Fn</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_Set_Method
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a>
|
||||
with parameter <a href="ug_alg.html#LB_METHOD"><i>LB_METHOD</i></a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_Set_Param
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
LB_UNPACK_OBJ_FN
|
||||
</td>
|
||||
<td>
|
||||
<a href="ug_query_mig.html#ZOLTAN_UNPACK_OBJ_FN">ZOLTAN_UNPACK_OBJ_FN</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr WIDTH="100%">[<a href="ug.html">Table of Contents</a> | <a href="ug_refs.html">Next: References</a> | <a href="ug_release.html">Previous: Release Notes</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
252
thirdParty/Zoltan/docs/ug_html/ug_color.html
vendored
Normal file
@ -0,0 +1,252 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.76 [en] (X11; U; Linux 2.4.2-2smp i686) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<title>Zoltan User's Guide: Coloring Algorithms</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="ug.html">Zoltan User's Guide</a>
|
||||
| <a href="ug_color_parallel.html">Next</a> | <a href="ug_order_ptscotch.html">Previous</a></i></b></div>
|
||||
<!---------------------------------------------------------------------------->
|
||||
<h2>
|
||||
<a NAME="Coloring Algorithms"></a>Coloring Algorithms</h2>
|
||||
<p>The following coloring algorithms are currently included in the Zoltan
|
||||
library:
|
||||
<blockquote><a href="ug_color_parallel.html">Parallel Coloring
|
||||
</a></blockquote>
|
||||
They are accessed through calls to <b><a href="ug_interface_color.html#Zoltan_Color">Zoltan_Color</a></b>.
|
||||
<p><!---------------------------------------------------------------------------->
|
||||
<h3>
|
||||
<a NAME="Color Parameters"></a>
|
||||
<hr><b>Coloring Parameters</b></h3>
|
||||
While the overall behavior of Zoltan is controlled by <a href="ug_param.html">general
|
||||
Zoltan parameters</a>, the behavior of each coloring method is controlled
|
||||
by parameters specific to coloring which are also set by calls to <b><a href="ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>.
|
||||
These parameters are described below.
|
||||
<br>
|
||||
<table WIDTH="100%" NOSAVE >
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP><b>Parameters:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><a NAME="COLORING_PROBLEM"></a> <i>COLORING_PROBLEM</i></td>
|
||||
|
||||
<td>
|
||||
The specific coloring problem to be solved. Supported values include
|
||||
"DISTANCE-1" (the standard vertex coloring problem), "DISTANCE-2"
|
||||
(useful for Jacobian coloring) and "PARTIAL-DISTANCE-2".
|
||||
When called with "PARTIAL-DISTANCE-2", only the objects
|
||||
listed in <i>global_ids</i> (paramter of <b><a
|
||||
href="ug_interface_color.html#Zoltan_Color">Zoltan_Color</a></b>
|
||||
function) are colored. "BIPARTITE" is an alternative name for "PARTIAL-DISTANCE-2".
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><a NAME="SUPERSTEP_SIZE"></a> <i>SUPERSTEP_SIZE</i></td>
|
||||
|
||||
<td>Number of local objects to be colored on each processor before
|
||||
exchanging color information. SUPERSTEP_SIZE should be greater than 0.
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><a NAME="COMM_PATTERN"></a><i> COMM_PATTERN</i></td>
|
||||
|
||||
<td>Valid values are "S" (synchronous) and "A" (asynchronous). If
|
||||
synchronous communication is selected, processors are forced to wait
|
||||
for the color information from all other processors to be received
|
||||
before proceeding with coloring of the next SUPERSTEP_SIZE number of
|
||||
local objects. If asynchronous communication is selected, there is no
|
||||
such restriction.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><a NAME="VERTEX_VISIT_ORDER"></a><i> VERTEX_VISIT_ORDER</i></td>
|
||||
|
||||
<td>Valid values are "I" (internal first), "B" (boundary first) and
|
||||
"U" (unordered), "N" (natural), "L" (largest degree first), "S"
|
||||
(smallest degree last). If "I" is selected, each processor colors
|
||||
its internal objects before boundary objects. If "B" is selected,
|
||||
each processor colors its boundary objects first. If "U" is
|
||||
selected, there is no such distinction between internal and boundary
|
||||
objects. "N" is equivalent to "U". If "L" is selected, the objects
|
||||
are sorted according to their number of neighbors so that the object
|
||||
with larger number of neighbors are colored first. If "S" is
|
||||
selected, the order is dynamically constructed; the object with
|
||||
smallest number of neighbors will be colored last and is
|
||||
temporarily removed from the graph. This process repeats itself
|
||||
until all objects are ordered. </td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><a NAME="RECOLORING_NUM_OF_ITERATIONS"></a><i> RECOLORING_NUM_OF_ITERATIONS </i></td>
|
||||
|
||||
<td>Number of distance-1 recoloring iterations to be performed after first
|
||||
coloring phase. A value of zero disables recoloring.</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><a NAME="RECOLORING_TYPE"></a><i> RECOLORING_TYPE</i></td>
|
||||
|
||||
<td> Valid values are "SYNCHRONOUS" and "ASYNCHRONOUS". If
|
||||
"SYNCHRONOUS" is selected, each processor waits for its neighboors to
|
||||
finish processing one color before processing the next one. If
|
||||
"ASYNCHRONOUS" is selected, each processor itself recolors all of its
|
||||
vertices in specified order, independent from other processors. It is
|
||||
then necessary to detect and resolve conflicts. </td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><a NAME="RECOLORING_PERMUTATION"></a><i> RECOLORING_PERMUTATION</i></td>
|
||||
|
||||
<td>Valid values are "FORWARD", "REVERSE", "NONDECREASING" and
|
||||
"NONINCREASING". The "FORWARD" permutation orders the colors in
|
||||
increasing order of their color identifiers. The "REVERSE" permutation
|
||||
is the opposite one. The "NONDECREASING" orders the colors in
|
||||
non-decreasing order of the number of time the colors are used in the
|
||||
whole graph. In other words, the less used colors are colored
|
||||
first. "NONINCREASING" is the opposite of "NONDECREASING".
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!-- commenting this section
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><a NAME="COLORING_METHOD"></a><i> COLORING_METHOD</i></td>
|
||||
|
||||
<td>Currently only "F" (first-fit) is implemented. By using "F", the
|
||||
smallest available color that will not cause a conflict is assigned to
|
||||
the object that is being colored. </td>
|
||||
</tr>
|
||||
-->
|
||||
|
||||
<tr VALIGN=TOP NOSAVE>
|
||||
<td NOSAVE><a NAME="GRAPH_METHOD"></a><i> Options for graph build</i></td>
|
||||
|
||||
<td>See more informations about graph build options on this <a href="ug_graph_build.html">page</a></td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td VALIGN=TOP><a NAME="Default_Parameter_Values"></a><b>Default Values:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td></td>
|
||||
|
||||
<td><i>COLORING_PROBLEM</i> = DISTANCE-1</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td></td>
|
||||
|
||||
<td><i>SUPERSTEP_SIZE </i>= 100</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td></td>
|
||||
|
||||
<td><i>COMM_PATTERN </i>= S</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td></td>
|
||||
|
||||
<td><i>VERTEX_VISIT_ORDER</i> = I</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td></td>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td></td>
|
||||
|
||||
<td><i>RECOLORING_NUM_OF _ITERATIONS</i> = 0</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td></td>
|
||||
|
||||
<td><i>RECOLORING_TYPE</i> = SYNCHRONOUS</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<td></td>
|
||||
|
||||
<td><i>RECOLORING_PERMUTATION</i> = NONDECREASING</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
<!-- commenting
|
||||
<td><i>COLORING_METHOD</i> = F</td>
|
||||
-->
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p><!---------------------------------------------------------------------------->
|
||||
<hr WIDTH="100%">[<a href="ug.html">Table of Contents</a> | <a href="ug_color_parallel.html">Next:
|
||||
Parallel Coloring</a> | <a href="ug_order_parmetis.html">Previous:
|
||||
Nested Dissection by ParMETIS</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
192
thirdParty/Zoltan/docs/ug_html/ug_color_parallel.html
vendored
Normal file
@ -0,0 +1,192 @@
|
||||
<!-------- @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="GENERATOR" content="Mozilla/4.76 [en] (X11; U; Linux 2.4.2-2smp i686) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<title>Zoltan User's Guide: Parallel Coloring</title>
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF">
|
||||
|
||||
<div align=right><b><i><a href="ug.html">Zoltan User's Guide</a>
|
||||
| <a href="ug_util.html">Next</a> | <a href="ug_color.html">Previous</a></i></b></div>
|
||||
|
||||
<h2>
|
||||
<a NAME="Parallel Coloring"></a>Parallel Coloring</h2>
|
||||
The parallel coloring algorithm in Zoltan is based on the work of
|
||||
<a href="ug_refs.html#d1color">Boman et al.</a> for distance-1
|
||||
coloring and <a href="ug_refs.html#d2color">Bozdag et al.</a> for
|
||||
distance-2 coloring. It was implemented in Zoltan by Doruk Bozdag and
|
||||
Umit V. Catalyurek, Department of Biomedical Informatics, the Ohio State
|
||||
University. Distance-1 coloring algorithm is an iterative data
|
||||
parallel algorithm that proceeds in two-phased rounds. In the first
|
||||
phase, processors concurrently color the vertices assigned to
|
||||
them. Adjacent vertices colored in the same parallel step of this
|
||||
phase may result in inconsistencies. In the second phase, processors
|
||||
concurrently check the validity of the colors assigned to their
|
||||
respective vertices and identify a set of vertices that needs to be
|
||||
re-colored in the next round to resolve the detected
|
||||
inconsistencies. The algorithm terminates when every vertex has been
|
||||
colored correctly. To reduce communication frequency, the coloring
|
||||
phase is further decomposed into computation and communication
|
||||
sub-phases. In a communication sub-phase processors exchange recent
|
||||
color information. During a computation sub-phase, a number of
|
||||
vertices determined by the SUPERSTEP_SIZE parameter, rather than a
|
||||
single vertex, is colored based on currently available color
|
||||
information. With an appropriate choice of a value for SUPERSTEP_SIZE,
|
||||
the number of ensuing conflicts can be kept low while at the same time
|
||||
preventing the runtime from being dominated by the sending of a large
|
||||
number of small messages. The distance-2 graph coloring problem aims
|
||||
at partitioning the vertex set of a graph into the fewest sets
|
||||
consisting of vertices pairwise at distance greater than two from each
|
||||
other. The algorithm is an extension of the parallel distance-1
|
||||
coloring algorithm.
|
||||
|
||||
<br/><br/>
|
||||
|
||||
In distance-1 coloring, a
|
||||
post-processing to coloring, named as <em>recoloring</em>, is also implemented
|
||||
in Zoltan by Ahmet Erdem Sariyuce, Erik Saule and Umit V. Catalyurek,
|
||||
Department of Biomedical Informatics, the Ohio State University. Its
|
||||
details are presented in <a href="ug_refs.html#sariyuce">Sariyuce et
|
||||
al.<a/>. Recoloring is an iterative improvement algorithm first
|
||||
proposed in <a href="ug_refs.html#culberson">Culberson 92<a/> for
|
||||
sequential architecture. The algorithm uses an existing coloring of a
|
||||
graph to produce an new coloring. The vertices of the graph are
|
||||
sorted according to a given permutation of the colors so that vertices
|
||||
with the same color are recolored concurrently. There are two modes
|
||||
of the recoloring procedure that are controlled by
|
||||
RECOLORING_TYPE parameter. In asynchronous recoloring, the vertices
|
||||
are colored using the same algorithm used for the original coloring;
|
||||
the only difference is the ordering of the vertices, which is expected
|
||||
to present less conflicts (and therefore is faster and leads to fewer
|
||||
colors). In synchronous recoloring, each processor waits for its
|
||||
neighboors to finish coloring the vertices of a given color before
|
||||
starting to color the vertices of the next color. Using a simple first
|
||||
fit color allocation policy, the algorithm guarantees that no
|
||||
conflicts will be generated and that the number of colors will not
|
||||
increase. The order in which the colors are considers is given by the
|
||||
RECOLORING_PERMUTATION parameter. The forward order processes the
|
||||
colors in increasing value of the color identifier; while the reverse
|
||||
order processes them in the opposite order. The non-decreasing order
|
||||
processes the colors so that the most used color in the graph is
|
||||
colored last; while the non-increasing order is the opposite
|
||||
order. The number of times the recoloring procedure is applied is
|
||||
controlled by the RECOLORING_NUM_OF_ITERATIONS parameter (setting it
|
||||
to zero disables recoloring).
|
||||
|
||||
|
||||
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<table WIDTH="100%" NOSAVE >
|
||||
|
||||
<!--
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Color_Method String:</b></td>
|
||||
|
||||
<td><b> </b></td>
|
||||
</tr>
|
||||
-->
|
||||
|
||||
<tr>
|
||||
<td><b>Parameters:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP> See <a href="ug_color.html">Coloring Algorithms</a>.</td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td VALIGN=TOP><b>Required Query Functions:</b></td>
|
||||
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</a></b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
|
||||
<td><b><a href="ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</a></b>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr VALIGN=TOP>
|
||||
|
||||
<td></td>
|
||||
<td NOSAVE>
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_NUM_EDGES_MULTI_FN">ZOLTAN_NUM_EDGES_MULTI_F
|
||||
N</a></b> or
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_NUM_EDGES_FN">ZOLTAN_NUM_EDGES_FN</a></b>
|
||||
<br>
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_EDGE_LIST_MULTI_FN">ZOLTAN_EDGE_LIST_MULTI_F
|
||||
N</a></b> or
|
||||
<b><a href="ug_query_lb.html#ZOLTAN_EDGE_LIST_FN">ZOLTAN_EDGE_LIST_FN</a></b>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<p>
|
||||
<hr WIDTH="100%">[<a href="ug.html">Table of Contents</a> | <a href="ug_util.html">Next:
|
||||
Data Services and Utilities</a> | <a href="ug_color.html">Previous: Coloring Algorithms</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</body>
|
||||
</html>
|
183
thirdParty/Zoltan/docs/ug_html/ug_cpp.html
vendored
Normal file
@ -0,0 +1,183 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; U; SunOS 4.1.3_U1 sun4m) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
|
||||
<TITLE>Zoltan User's Guide: C++ Interface</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="ug.html">Zoltan User's Guide</a> | <a href="ug_fortran.html">Next</a> | <a href="ug_usage.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<H2>
|
||||
<A NAME="cpp ug"></A>C++ Interface</H2>
|
||||
The C++ interface to the Zoltan library is contained in the header files
|
||||
listed below.
|
||||
Each header file defines one class. Each class represents a Zoltan
|
||||
data structure and the functions that operate on that data structure.
|
||||
The class methods in the header files call functions in the Zoltan C library.
|
||||
So to use the C++ interface from your application, include
|
||||
the appropriate header file and link with the Zoltan C library.
|
||||
|
||||
<P><TABLE rules=cols,rows frame=box align=center cellpadding=5>
|
||||
<TR> <TH>header file</TH> <TH>class</TH></TR>
|
||||
<TR> <TD><I>include/zoltan_cpp.h</I></TD>
|
||||
<TD><B>Zoltan</B>, representing a
|
||||
<a href="ug_interface_init.html">load balancing</a> instance</TD>
|
||||
<TR> <TD><I>Utilities/Communication/zoltan_comm_cpp.h</I></TD>
|
||||
<TD><B>Zoltan_Comm</B>, representing an
|
||||
<a href="ug_util_comm.html">unstructured communication</a> instance </TD>
|
||||
</TR>
|
||||
<TR> <TD><I>Utilities/DDirectory/zoltan_dd_cpp.h</I></TD>
|
||||
<TD><B>Zoltan_DD</B>, representing a
|
||||
<a href="ug_util_dd.html">distributed directory</a> instance </TD>
|
||||
</TR>
|
||||
<TR> <TD><I>Utilities/Timer/zoltan_timer_cpp.h</I></TD>
|
||||
<TD><B>Zoltan_Timer</B>, representing a timer instance </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<p>
|
||||
More detailed information about the interface may be found in the
|
||||
<a href="../dev_html/dev_cpp.html">Zoltan Developer's Guide</a>.
|
||||
<p>
|
||||
Simple examples of the use of the interface may be found in the
|
||||
<I>examples/CPP</I> directory. A more complete example is the
|
||||
test driver <a href="../dev_html/dev_driver.html">zCPPdrive</a>. The
|
||||
source code for this test driver is in the <I>driver</I> directory.
|
||||
|
||||
<p>
|
||||
A note on declaring application registered query functions from a
|
||||
C++ application may be found in the section titled
|
||||
<a href="ug_query.html">Application-Registered Query Functions</a>.
|
||||
<p>
|
||||
Two peculiarities of the wrapping of Zoltan with C++ classes are
|
||||
mentioned here:
|
||||
<ol>
|
||||
<li>
|
||||
You must call the C language function
|
||||
<a href="ug_interface_init.html#Zoltan_Initialize"><I>Zoltan_Initialize</I> </a>
|
||||
before using the C++ interface to the Zoltan library. This function should only
|
||||
be called once. Due to design choices,
|
||||
the C++ interface maintains no global state that is
|
||||
independent of any instantiated objects, so it does not know if the
|
||||
function has been called or not. Therefore, the C++ wrappers do not call
|
||||
<a href="ug_interface_init.html#Zoltan_Initialize"><I>Zoltan_Initialize</I> </a>
|
||||
for you.
|
||||
<li>
|
||||
It is preferable to allocate <B>Zoltan</B> objects dynamically so you can
|
||||
explicitly delete them before your application exits.
|
||||
(<B>Zoltan</B> objects allocated instead on the stack will be deleted
|
||||
automatically at the completion of the scope in which they were created.)
|
||||
The reason is that the <B>Zoltan</B>
|
||||
destructor calls Zoltan_Destroy(), which makes an MPI call to free
|
||||
the communicator in use by the <B>Zoltan</B> object. However the
|
||||
MPI destructor may have been called before the <B>Zoltan</B>
|
||||
destructor. In this case you
|
||||
would receive an error while your application is exiting.
|
||||
</ol>
|
||||
This second point is illustrated in the good and bad example below.
|
||||
<p>
|
||||
|
||||
<CENTER><TABLE BORDER=2 COLS=1 WIDTH="90%" NOSAVE >
|
||||
<TR>
|
||||
<TD><A NAME="c++ item 1"></A>
|
||||
<TT>int main(int argc, char *argv[])</tt><br>
|
||||
<TT>{</tt><br>
|
||||
<TT> MPI::Init(argc, argv);</tt><br>
|
||||
<TT> int rank = MPI::COMM_WORLD.Get_rank();</tt><br>
|
||||
<TT> int size = MPI::COMM_WORLD.Get_size();</tt><br><br>
|
||||
<TT> //<I>Initialize the Zoltan library with a C language call</I></TT><br>
|
||||
<TT> float version;</TT><br>
|
||||
<TT> Zoltan_Initialize</A>(argc, argv, &version);</TT><br><br>
|
||||
<TT> //<I>Dynamically create Zoltan object.</I></tt><br>
|
||||
<TT> Zoltan *zz = new Zoltan(MPI::COMM_WORLD);</tt><br>
|
||||
<TT> zz->Set_Param("LB_METHOD", "RCB");</tt><br><br>
|
||||
<TT> //<I>Several lines of code would follow, working with zz</I></tt><br><br>
|
||||
<TT> //<I>Explicitly delete the Zoltan object</I></tt><br>
|
||||
<TT> delete zz;</tt><br>
|
||||
<TT> MPI::Finalize();</tt><br>
|
||||
<TT> }</tt><br>
|
||||
</TR>
|
||||
<CAPTION ALIGN=BOTTOM><I>Good example, Zoltan object is dynamically allocated
|
||||
and explicity deleted before exit.</I></CAPTION>
|
||||
</TABLE></CENTER>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<CENTER><TABLE BORDER=2 COLS=1 WIDTH="90%" NOSAVE >
|
||||
<TR>
|
||||
<TD><A NAME="c++ item 2"></A>
|
||||
<TT>int main(int argc, char *argv[])</tt><br>
|
||||
<TT>{</tt><br>
|
||||
<TT>Zoltan zz;</tt><br><br>
|
||||
<TT> MPI::Init(argc, argv);</tt><br>
|
||||
<TT> int rank = MPI::COMM_WORLD.Get_rank();</tt><br>
|
||||
<TT> int size = MPI::COMM_WORLD.Get_size();</tt><br><br>
|
||||
<TT> //<I>Initialize the Zoltan library with a C language call</I></TT><br>
|
||||
<TT> float version;</TT><br>
|
||||
<TT> Zoltan_Initialize</A>(argc, argv, &version);</TT><br><br>
|
||||
<TT> zz.Set_Param("LB_METHOD", "RCB");</tt><br><br>
|
||||
<TT> //<I>Several lines of code would follow, working with zz</I></tt><br><br>
|
||||
<TT> MPI::Finalize();</tt><br>
|
||||
<TT> }</tt><br>
|
||||
</TR>
|
||||
<CAPTION ALIGN=BOTTOM><I>Bad example, the MPI destructor may execute before the
|
||||
Zoltan destructor at process exit.</I></CAPTION>
|
||||
</TABLE></CENTER>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<HR WIDTH="100%">[<A HREF="ug.html">Table of Contents</A> |
|
||||
<A HREF="ug_fortran.html">Next: Fortran Interface</A>
|
||||
| <A HREF="ug_usage.html">Previous: Zoltan Usage</A> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</BODY>
|
||||
</HTML>
|
73
thirdParty/Zoltan/docs/ug_html/ug_examples.html
vendored
Normal file
@ -0,0 +1,73 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; U; SunOS 4.1.3_U1 sun4m) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
<TITLE>Zoltan User's Guide: Examples</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="ug.html">Zoltan User's Guide</a> | <a href="ug_examples_init.html">Next</a> | <a href="ug_util_dd.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<H2>
|
||||
<A NAME="Examples of Library Usage"></A>Examples of Zoltan Usage</H2>
|
||||
Examples for each part of the Zoltan library are provided:
|
||||
<BLOCKQUOTE><A HREF="ug_examples_init.html">General use of Zoltan</A>
|
||||
<BR><A HREF="ug_examples_lb.html">Load-balancing calling sequence</A>
|
||||
<BR><A HREF="ug_examples_mig.html">Data migration calling sequences</A>
|
||||
<BR><A HREF="ug_examples_query.html">Query functions for a simple application</A></BLOCKQUOTE>
|
||||
|
||||
<HR WIDTH="100%">[<A HREF="ug.html">Table of Contents</A> |
|
||||
<A HREF="ug_examples_init.html">Next: General Usage Example</A>
|
||||
| <A HREF="ug_util_dd.html">Previous: Distributed Data Directories</A> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</BODY>
|
||||
</HTML>
|
162
thirdParty/Zoltan/docs/ug_html/ug_examples_init.html
vendored
Normal file
@ -0,0 +1,162 @@
|
||||
<!-------- @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
|
||||
------->
|
||||
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; U; SunOS 4.1.3_U1 sun4m) [Netscape]">
|
||||
<meta name="sandia.approval_type" content="formal">
|
||||
<meta name="sandia.approved" content="SAND2007-4748W">
|
||||
<meta name="author" content="Zoltan PI">
|
||||
|
||||
|
||||
<TITLE>Zoltan User's Guide: General Usage Examples</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<div ALIGN=right><b><i><a href="ug.html">Zoltan User's Guide</a> | <a href="ug_examples_lb.html">Next</a> | <a href="ug_examples.html">Previous</a></i></b></div>
|
||||
|
||||
|
||||
<H2>
|
||||
<A NAME="Initialization Example"></A>General Usage Example</H2>
|
||||
An example of general Zoltan usage is included below. This is a C language
|
||||
example. Similar C++ examples may be found in the <I>examples</I> directory.
|
||||
<p>
|
||||
In this example, <B><A HREF="ug_interface_init.html#Zoltan_Initialize">Zoltan_Initialize</A></B>
|
||||
is called using the <I>argc</I> and <I>argv</I> arguments to the main program.
|
||||
Then a pointer to a Zoltan structure is returned by the call to
|
||||
<B><A HREF="ug_interface_init.html#Zoltan_Create">Zoltan_Create</A></B>.
|
||||
In this example, all processors will be used by Zoltan, as
|
||||
<B>MPI_COMM_WORLD</B> is passed to
|
||||
<b><a href="ug_interface_init.html#Zoltan_Create">Zoltan_Create</a></b>
|
||||
as the communicator.
|
||||
<p>
|
||||
Several application query functions are then registered with Zoltan through
|
||||
calls to <b><a href="ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>.
|
||||
Parameters are set through calls to
|
||||
<b><a href="ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>.
|
||||
The application then performs in computations,
|
||||
including making calls to Zoltan functions and utilities.
|
||||
<p>
|
||||
Before its execution ends, the application frees memory used by Zoltan by
|
||||
calling
|
||||
<b><a href="ug_interface_init.html#Zoltan_Destroy">Zoltan_Destroy</a></b>.
|
||||
<BR>
|
||||
<CENTER><TABLE BORDER=2 COLS=1 WIDTH="90%" NOSAVE >
|
||||
<TR NOSAVE>
|
||||
<TD NOSAVE><A NAME="Init Example Fig"></A><TT>/* Initialize the Zoltan library
|
||||
*/</TT>
|
||||
<BR><TT>struct Zoltan_Struct *zz;</TT>
|
||||
<BR><TT>float version;</TT>
|
||||
<BR><TT>...</TT>
|
||||
<BR><TT><A HREF="ug_interface_init.html#Zoltan_Initialize">Zoltan_Initialize</A>(argc,
|
||||
argv, &version);</TT>
|
||||
<BR><TT>zz = <A HREF="ug_interface_init.html#Zoltan_Create">Zoltan_Create</A>(MPI_COMM_WORLD);</TT>
|
||||
<p><tt>/* <i>Register query functions.</i> */</tt>
|
||||
<br><tt><a href="ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a>(zz, <a href="ug_query_lb.html#ZOLTAN_NUM_GEOM_FN">ZOLTAN_NUM_GEOM_FN_TYPE</a>, </tt>
|
||||
<br><tt> (void (*)()) user_return_dimension, NULL);</tt>
|
||||
<br><tt><a href="ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a>(zz, <a href="ug_query_lb.html#ZOLTAN_GEOM_FN">ZOLTAN_GEOM_FN_TYPE</a>,</tt>
|
||||
<br><tt> (void (*)()) user_return_coords, NULL);</tt>
|
||||
<br><tt><a href="ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a>(zz, <a href="ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN_TYPE</a>,</tt>
|
||||
<br><tt> (void (*)()) user_return_num_node, NULL);</tt>
|
||||
<br><tt><a href="ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a>(zz, <a href="ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN_TYPE</a>,</tt>
|
||||
<br><tt> (void (*)()) user_return_owned_nodes, NULL);</tt>
|
||||
<p><tt>/* <i>Set some Zoltan parameters.</i> */</tt>
|
||||
<br><tt><a href="ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a>(zz, "debug_level", "4");</tt>
|
||||
<p><tt>/* <i>Perform application computations, call Zoltan, etc.</i> */</tt>
|
||||
<br><tt>...</tt>
|
||||
<p><tt>/* <i>Free Zoltan data structure before ending application.</i> */</tt>
|
||||
<br><tt><a href="ug_interface_init.html#Zoltan_Destroy">Zoltan_Destroy</a> (&zz); </tt>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<CAPTION ALIGN=BOTTOM><I>Typical calling sequence for general usage of
|
||||
the Zoltan library.</I></CAPTION>
|
||||
</TABLE></CENTER>
|
||||
|
||||
|
||||
<CENTER><TABLE BORDER=2 COLS=1 WIDTH="90%" NOSAVE >
|
||||
<TR NOSAVE>
|
||||
<TD NOSAVE><TT>! Initialize the Zoltan library</TT>
|
||||
<BR><TT>type(Zoltan_Struct), pointer :: zz</TT>
|
||||
<BR><TT>real(Zoltan_FLOAT) version</TT>
|
||||
<BR><TT>integer(Zoltan_INT) ierr</TT>
|
||||
<BR><TT>...</TT>
|
||||
<BR><TT>ierr = <A HREF="ug_interface_init.html#Zoltan_Initialize">Zoltan_Initialize</A>(version)
|
||||
! without argc and argv</TT>
|
||||
<BR><TT>zz => <A HREF="ug_interface_init.html#Zoltan_Create">Zoltan_Create</A>(MPI_COMM_WORLD)</TT>
|
||||
<p><tt>! <i>Register load-balancing query functions.</i></tt>
|
||||
<br><tt>! omit data = C NULL</tt>
|
||||
<br><tt>ierr = <a href="ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a>(zz,
|
||||
<a href="ug_query_lb.html#ZOLTAN_NUM_GEOM_FN">ZOLTAN_NUM_GEOM_FN_TYPE</a>, user_return_dimension)</tt>
|
||||
<br><tt>ierr = <a href="ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a>(zz,
|
||||
<a href="ug_query_lb.html#ZOLTAN_GEOM_FN">ZOLTAN_GEOM_FN_TYPE</a>, user_return_coords)</tt>
|
||||
<br><tt>ierr = <a href="ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a>(zz,
|
||||
<a href="ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN_TYPE</a>, user_return_num_node)</tt>
|
||||
<br><tt>ierr = <a href="ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a>(zz,
|
||||
<a href="ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN_TYPE</a>, user_return_owned_nodes)</tt>
|
||||
<p><tt>! <i>Set some Zoltan parameters.</i></tt>
|
||||
<br><tt>ierr = <a href="ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a>(zz, "debug_level", "4")</tt>
|
||||
<p><tt>! <i>Perform application computations, call Zoltan, etc.</i></tt>
|
||||
<br><tt>...</tt>
|
||||
<p><tt>! <i>Free Zoltan data structure before ending application.</i></tt>
|
||||
<br><tt>call <a href="ug_interface_init.html#Zoltan_Destroy">Zoltan_Destroy</a>(zz) </tt>
|
||||
|
||||
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<CAPTION ALIGN=BOTTOM><I>Fortran version of general usage
|
||||
example.</I></CAPTION>
|
||||
</TABLE></CENTER>
|
||||
|
||||
|
||||
<P>
|
||||
<HR WIDTH="100%">[<A HREF="ug.html">Table of Contents</A> |
|
||||
<A HREF="ug_examples_lb.html">Next: Load-Balancing Example</A>
|
||||
| <A HREF="ug_examples.html">Previous: Examples of Library
|
||||
Usage</A> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||||
</BODY>
|
||||
</HTML>
|