You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
6.7 KiB
146 lines
6.7 KiB
<!-------- @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>
|
|
|