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.
		
		
		
		
		
			
		
			
				
					
					
						
							474 lines
						
					
					
						
							19 KiB
						
					
					
				
			
		
		
	
	
							474 lines
						
					
					
						
							19 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="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>
 | |
| 
 |