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.
1696 lines
60 KiB
1696 lines
60 KiB
2 years ago
|
<!-------- @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: Migration Query Functions</title>
|
||
|
|
||
|
</head>
|
||
|
<body bgcolor="#FFFFFF">
|
||
|
|
||
|
<div align=right><b><i><a href="ug.html">Zoltan User's Guide</a>
|
||
|
| <a href="ug_param.html">Next</a> | <a href="ug_query_lb.html">Previous</a></i></b></div>
|
||
|
|
||
|
<h2>
|
||
|
<a NAME="Migration Query Functions"></a>Migration Query Functions</h2>
|
||
|
The following query functions must be registered to use any of the migration
|
||
|
tools described in <a href="ug_interface_mig.html">Migration Functions</a>.
|
||
|
These functions should NOT use interprocessor communication.
|
||
|
<blockquote>
|
||
|
<b><a href="#ZOLTAN_OBJ_SIZE_MULTI_FN">ZOLTAN_OBJ_SIZE_MULTI_FN</a></b>
|
||
|
or
|
||
|
<b><a href="#ZOLTAN_OBJ_SIZE_FN">ZOLTAN_OBJ_SIZE_FN</a></b>
|
||
|
<br>
|
||
|
<b><a href="#ZOLTAN_PACK_OBJ_MULTI_FN">ZOLTAN_PACK_OBJ_MULTI_FN</a></b>
|
||
|
or
|
||
|
<b><a href="#ZOLTAN_PACK_OBJ_FN">ZOLTAN_PACK_OBJ_FN</a></b>
|
||
|
<br>
|
||
|
<b><a href="#ZOLTAN_UNPACK_OBJ_MULTI_FN">ZOLTAN_UNPACK_OBJ_MULTI_FN</a></b>
|
||
|
or
|
||
|
<b><a href="#ZOLTAN_UNPACK_OBJ_FN">ZOLTAN_UNPACK_OBJ_FN</a></b>
|
||
|
</blockquote>
|
||
|
The "MULTI_" versions of the packing/unpacking functions take lists of IDs
|
||
|
as input and pack/unpack data for all objects in the lists. Only one function
|
||
|
of each type must be provided (e.g., either a
|
||
|
<b><a href="#ZOLTAN_PACK_OBJ_FN">ZOLTAN_PACK_OBJ_FN</a></b> or
|
||
|
<b><a href="#ZOLTAN_PACK_OBJ_MULTI_FN">ZOLTAN_PACK_OBJ_MULTI_FN</a></b>,
|
||
|
but not both).
|
||
|
<p>
|
||
|
Optional, additional query functions for migration may also be registered; these
|
||
|
functions are called at the beginning, middle, and end of migration in
|
||
|
<a href="ug_interface_mig.html#Zoltan_Migrate"><b>Zoltan_Migrate</b></a>.
|
||
|
Interprocessor communication is allowed in these functions.
|
||
|
<blockquote>
|
||
|
<b><a href="#ZOLTAN_PRE_MIGRATE_PP_FN">ZOLTAN_PRE_MIGRATE_PP_FN</a></b>
|
||
|
<br><b><a href="#ZOLTAN_MID_MIGRATE_PP_FN">ZOLTAN_MID_MIGRATE_PP_FN</a></b>
|
||
|
<br><b><a href="#ZOLTAN_POST_MIGRATE_PP_FN">ZOLTAN_POST_MIGRATE_PP_FN</a></b>
|
||
|
</blockquote>
|
||
|
|
||
|
For <a href="ug_backward.html">backward compatibility</a>
|
||
|
with previous versions of Zoltan,
|
||
|
the following functions may be used with
|
||
|
<a href="ug_interface_mig.html#Zoltan_Help_Migrate"><b>Zoltan_Help_Migrate</b></a>.
|
||
|
<blockquote>
|
||
|
<b><a href="#ZOLTAN_PRE_MIGRATE_FN">ZOLTAN_PRE_MIGRATE_FN</a></b>
|
||
|
<br><b><a href="#ZOLTAN_MID_MIGRATE_FN">ZOLTAN_MID_MIGRATE_FN</a></b>
|
||
|
<br><b><a href="#ZOLTAN_POST_MIGRATE_FN">ZOLTAN_POST_MIGRATE_FN</a></b>
|
||
|
</blockquote>
|
||
|
|
||
|
<!------------------------------------------------------------------------->
|
||
|
<hr WIDTH="100%">
|
||
|
<a NAME="ZOLTAN_OBJ_SIZE_FN"></a>
|
||
|
<hr WIDTH="100%">
|
||
|
<table WIDTH="100%" NOSAVE >
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE>C and C++:</td>
|
||
|
|
||
|
<td WIDTH="85%">
|
||
|
typedef int <b>ZOLTAN_OBJ_SIZE_FN</b>(
|
||
|
<br> void *<i>data</i>,
|
||
|
<br> int <i>num_gid_entries</i>,
|
||
|
<br> int <i>num_lid_entries</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>global_id</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>local_id</i>,
|
||
|
<br> int <i>*ierr</i>);
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP WIDTH="15%" NOSAVE>FORTRAN:</td>
|
||
|
|
||
|
<td>FUNCTION <b><i>Obj_Size</i></b>(<i>data, num_gid_entries, num_lid_entries</i>,
|
||
|
<i>global_id, local_id, ierr</i>)
|
||
|
<br>INTEGER(Zoltan_INT) :: Obj_Size
|
||
|
<br><<i>type-data</i>>, INTENT(IN) :: data
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN) :: num_gid_entries, num_lid_entries
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: global_id, local_id
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(OUT) :: ierr
|
||
|
<p><<i>type-data</i>> can be any of INTEGER(Zoltan_INT), DIMENSION(*) or
|
||
|
REAL(Zoltan_FLOAT), DIMENSION(*) or REAL(Zoltan_DOUBLE), DIMENSION(*) or TYPE(Zoltan_User_Data_<i>x</i>)
|
||
|
where <i>x</i> is 1, 2, 3 or 4. See the section on
|
||
|
<a href="ug_fortran_api.html#fortran ug api query">Fortran
|
||
|
query functions</a> for an explanation. </td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<hr WIDTH="100%">A <b>ZOLTAN_OBJ_SIZE_FN</b> query function returns the size
|
||
|
(in bytes) of the data buffer that is needed to pack all of a single object's
|
||
|
data.
|
||
|
<br>
|
||
|
<table WIDTH="100%" NOSAVE >
|
||
|
<tr>
|
||
|
<td VALIGN=TOP WIDTH="20%"><b>Function Type:</b></td>
|
||
|
|
||
|
<td WIDTH="80%"><b>ZOLTAN_OBJ_SIZE_FN_TYPE</b></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><b>Arguments:</b></td>
|
||
|
|
||
|
<td></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> data</i></td>
|
||
|
|
||
|
<td>Pointer to user-defined data.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr VALIGN=TOP NOSAVE>
|
||
|
<td> <i>num_gid_entries</i></td>
|
||
|
|
||
|
<td NOSAVE>The number of array entries used to describe a single global
|
||
|
ID. This value is the maximum value over all processors of the parameter
|
||
|
<a href="ug_param.html#NUM_GID_ENTRIES">NUM_GID_ENTRIES</a>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr VALIGN=TOP NOSAVE>
|
||
|
<td><i> num_lid_entries</i></td>
|
||
|
|
||
|
<td NOSAVE>The number of array entries used to describe a single local
|
||
|
ID. This value is the maximum value over all processors of the parameter
|
||
|
<a href="ug_param.html#NUM_LID_ENTRIES">NUM_LID_ENTRIES</a>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td> <i>global_id</i></td>
|
||
|
|
||
|
<td>Pointer to the global ID of the object.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td> <i>local_id</i></td>
|
||
|
|
||
|
<td>Pointer to the local ID of the object.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> ierr</i></td>
|
||
|
|
||
|
<td>Error code to be set by function.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><b>Returned Value:</b></td>
|
||
|
|
||
|
<td></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP> int</td>
|
||
|
|
||
|
<td>The size (in bytes) of the required data buffer.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p>
|
||
|
|
||
|
<!------------------------------------------------------------------------->
|
||
|
<hr WIDTH="100%">
|
||
|
<a NAME="ZOLTAN_OBJ_SIZE_MULTI_FN"></a>
|
||
|
<hr WIDTH="100%">
|
||
|
<table WIDTH="100%" NOSAVE >
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE>C and C++:</td>
|
||
|
|
||
|
<td WIDTH="85%">
|
||
|
typedef void <b>ZOLTAN_OBJ_SIZE_MULTI_FN</b> (
|
||
|
<br> void *<i>data</i>,
|
||
|
<br> int <i>num_gid_entries</i>,
|
||
|
<br> int <i>num_lid_entries</i>,
|
||
|
<br> int <i>num_ids</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>global_ids</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>local_ids</i>,
|
||
|
<br> int <i>*sizes</i>,
|
||
|
<br> int <i>*ierr</i>);
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP WIDTH="15%" NOSAVE>FORTRAN:</td>
|
||
|
|
||
|
<td>SUBROUTINE <b><i>Obj_Size_Multi</i></b>(<i>data, num_gid_entries, num_lid_entries</i>,
|
||
|
<i>num_ids, global_ids, local_ids, sizes, ierr</i>)
|
||
|
<br><<i>type-data</i>>, INTENT(IN) :: data
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN) :: num_gid_entries, num_lid_entries, num_ids
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: global_ids, local_ids
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(OUT), DIMENSION(*) :: sizes
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(OUT) :: ierr
|
||
|
<p><<i>type-data</i>> can be any of INTEGER(Zoltan_INT), DIMENSION(*) or
|
||
|
REAL(Zoltan_FLOAT), DIMENSION(*) or REAL(Zoltan_DOUBLE), DIMENSION(*) or TYPE(Zoltan_User_Data_<i>x</i>)
|
||
|
where <i>x</i> is 1, 2, 3 or 4. See the section on
|
||
|
<a href="ug_fortran_api.html#fortran ug api query">Fortran
|
||
|
query functions</a> for an explanation. </td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<hr WIDTH="100%">A <b>ZOLTAN_OBJ_SIZE_MULTI_FN</b>
|
||
|
query function is the multiple-ID
|
||
|
version of <a href="#ZOLTAN_OBJ_SIZE_FN"><b>ZOLTAN_OBJ_SIZE_FN</b></a>.
|
||
|
For a list of objects, it returns the per-objects sizes
|
||
|
(in bytes) of the data buffers needed to pack object
|
||
|
data.
|
||
|
<br>
|
||
|
<table WIDTH="100%" NOSAVE >
|
||
|
<tr>
|
||
|
<td VALIGN=TOP WIDTH="20%"><b>Function Type:</b></td>
|
||
|
|
||
|
<td WIDTH="80%"><b>ZOLTAN_OBJ_SIZE_MULTI_FN_TYPE</b></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><b>Arguments:</b></td>
|
||
|
|
||
|
<td></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> data</i></td>
|
||
|
|
||
|
<td>Pointer to user-defined data.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr VALIGN=TOP NOSAVE>
|
||
|
<td> <i>num_gid_entries</i></td>
|
||
|
|
||
|
<td NOSAVE>The number of array entries used to describe a single global
|
||
|
ID. This value is the maximum value over all processors of the parameter
|
||
|
<a href="ug_param.html#NUM_GID_ENTRIES">NUM_GID_ENTRIES</a>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr VALIGN=TOP NOSAVE>
|
||
|
<td><i> num_lid_entries</i></td>
|
||
|
|
||
|
<td NOSAVE>The number of array entries used to describe a single local
|
||
|
ID. This value is the maximum value over all processors of the parameter
|
||
|
<a href="ug_param.html#NUM_LID_ENTRIES">NUM_LID_ENTRIES</a>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr VALIGN=TOP NOSAVE>
|
||
|
<td><i> num_ids</i></td>
|
||
|
|
||
|
<td NOSAVE>The number of objects whose sizes are to be returned.
|
||
|
</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td> <i>global_ids</i></td>
|
||
|
|
||
|
<td>An array of global IDs of the objects. The ID for the <i>i</i>-th
|
||
|
object begins in <i>global_ids[i*num_gid_entries]</i>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td> <i>local_ids</i></td>
|
||
|
|
||
|
<td>An array of local IDs of the objects. The ID for the <i>i</i>-th
|
||
|
object begins in <i>local_ids[i*num_lid_entries]</i>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> sizes</i></td>
|
||
|
|
||
|
<td>Upon return, array of sizes (in bytes) for each object in the ID lists.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> ierr</i></td>
|
||
|
|
||
|
<td>Error code to be set by function.</td>
|
||
|
</tr>
|
||
|
|
||
|
</table>
|
||
|
|
||
|
<p>
|
||
|
<!------------------------------------------------------------------------->
|
||
|
<hr WIDTH="100%">
|
||
|
<a NAME="ZOLTAN_PACK_OBJ_FN"></a>
|
||
|
<hr WIDTH="100%">
|
||
|
<table WIDTH="100%" NOSAVE >
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE>C and C++:</td>
|
||
|
|
||
|
<td WIDTH="85%">
|
||
|
typedef void <b>ZOLTAN_PACK_OBJ_FN</b> (
|
||
|
<br> void *<i>data</i>,
|
||
|
<br> int <i>num_gid_entries</i>,
|
||
|
<br> int <i>num_lid_entries</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>global_id</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>local_id</i>,
|
||
|
<br> int <i>dest</i>,
|
||
|
<br> int <i>size</i>,
|
||
|
<br> char *<i>buf</i>,
|
||
|
<br> int *<i>ierr</i>);
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP WIDTH="15%" NOSAVE>FORTRAN:</td>
|
||
|
|
||
|
<td>SUBROUTINE <b><i>Pack_Obj</i></b>(<i>data, num_gid_entries, num_lid_entries,
|
||
|
global_id, local_id, dest, size, buf, ierr</i>)
|
||
|
<br><<i>type-data</i>>, INTENT(IN) :: data
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN) :: num_gid_entries, num_lid_entries
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: global_id
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: local_id
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN) :: dest, size
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(OUT), DIMENSION(*) :: buf
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(OUT) :: ierr
|
||
|
<p><<i>type-data</i>> can be any of INTEGER(Zoltan_INT), DIMENSION(*) or
|
||
|
REAL(Zoltan_FLOAT), DIMENSION(*) or REAL(Zoltan_DOUBLE), DIMENSION(*) or TYPE(Zoltan_User_Data_<i>x</i>)
|
||
|
where <i>x</i> is 1, 2, 3 or 4. See the section on
|
||
|
<a href="ug_fortran_api.html#fortran ug api query">Fortran
|
||
|
query functions</a> for an explanation. </td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<hr WIDTH="100%">A <b>ZOLTAN_PACK_OBJ_FN</b> query function allows the application
|
||
|
to tell Zoltan how to copy all needed data for a given
|
||
|
object into a communication buffer. The object's data can then be sent
|
||
|
to another processor as part of data migration. It may also perform other
|
||
|
operations, such as removing the object from the processor's data structure.
|
||
|
This routine is called by <b><a href="ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>
|
||
|
for each object to be sent to another processor.
|
||
|
<br>
|
||
|
<table WIDTH="100%" >
|
||
|
<tr>
|
||
|
<td VALIGN=TOP WIDTH="20%"><b>Function Type:</b></td>
|
||
|
|
||
|
<td WIDTH="80%"><b>ZOLTAN_PACK_OBJ_FN_TYPE</b></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><b>Arguments:</b></td>
|
||
|
|
||
|
<td></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> data</i></td>
|
||
|
|
||
|
<td>Pointer to user-defined data.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE> <i>num_gid_entries</i></td>
|
||
|
|
||
|
<td>The number of array entries used to describe a single global ID.
|
||
|
This value is the maximum value over all processors of the parameter <a href="ug_param.html#NUM_GID_ENTRIES">NUM_GID_ENTRIES</a>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE> <i>num_lid_entries</i></td>
|
||
|
|
||
|
<td>The number of array entries used to describe a single local ID.
|
||
|
This value is the maximum value over all processors of the parameter <a href="ug_param.html#NUM_LID_ENTRIES">NUM_LID_ENTRIES</a>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> global_id</i></td>
|
||
|
|
||
|
<td>The global ID of the object for which data should be copied into the
|
||
|
communication buffer.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> local_id</i></td>
|
||
|
|
||
|
<td>The local ID of the object for which data should be copied into the
|
||
|
communication buffer.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> dest</i></td>
|
||
|
|
||
|
<td>The destination part (i.e., the part to which the object
|
||
|
is being sent)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> size</i></td>
|
||
|
|
||
|
<td>The size (in bytes) of the communication buffer for the specified object.
|
||
|
This value is at least as large as the value returned by
|
||
|
the <b><a href="#ZOLTAN_OBJ_SIZE_MULTI_FN">ZOLTAN_OBJ_SIZE_MULTI_FN</a></b> or
|
||
|
<b><a href="#ZOLTAN_OBJ_SIZE_FN">ZOLTAN_OBJ_SIZE_FN</a></b>
|
||
|
query function; it may be slightly larger due to padding for data alignment
|
||
|
in the buffer.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> buf</i></td>
|
||
|
|
||
|
<td>The starting address of the communication buffer into which the object's
|
||
|
data should be packed.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> ierr</i></td>
|
||
|
|
||
|
<td>Error code to be set by function.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p>
|
||
|
|
||
|
<!------------------------------------------------------------------------->
|
||
|
<hr WIDTH="100%">
|
||
|
<a NAME="ZOLTAN_PACK_OBJ_MULTI_FN"></a>
|
||
|
<hr WIDTH="100%">
|
||
|
<table WIDTH="100%" NOSAVE >
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE>C and C++:</td>
|
||
|
|
||
|
<td WIDTH="85%">
|
||
|
typedef void <b>ZOLTAN_PACK_OBJ_MULTI_FN</b> (
|
||
|
<br> void *<i>data</i>,
|
||
|
<br> int <i>num_gid_entries</i>,
|
||
|
<br> int <i>num_lid_entries</i>,
|
||
|
<br> int <i>num_ids</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>global_ids</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>local_ids</i>,
|
||
|
<br> int <i>*dest</i>,
|
||
|
<br> int <i>*sizes</i>,
|
||
|
<br> int <i>*idx</i>,
|
||
|
<br> char *<i>buf</i>,
|
||
|
<br> int *<i>ierr</i>);
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP WIDTH="15%" NOSAVE>FORTRAN:</td>
|
||
|
|
||
|
<td>SUBROUTINE <b><i>Pack_Obj_Multi</i></b>(<i>data, num_gid_entries, num_lid_entries,
|
||
|
num_ids, global_ids, local_ids, dest, sizes, idx, buf, ierr</i>)
|
||
|
<br><<i>type-data</i>>, INTENT(IN) :: data
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN) :: num_gid_entries, num_lid_entries, num_ids
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: global_ids
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: local_ids
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: dest
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: sizes
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: idx
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(OUT), DIMENSION(*) :: buf
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(OUT) :: ierr
|
||
|
<p><<i>type-data</i>> can be any of INTEGER(Zoltan_INT), DIMENSION(*) or
|
||
|
REAL(Zoltan_FLOAT), DIMENSION(*) or REAL(Zoltan_DOUBLE), DIMENSION(*) or TYPE(Zoltan_User_Data_<i>x</i>)
|
||
|
where <i>x</i> is 1, 2, 3 or 4. See the section on
|
||
|
<a href="ug_fortran_api.html#fortran ug api query">Fortran
|
||
|
query functions</a> for an explanation. </td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<hr WIDTH="100%">A <b>ZOLTAN_PACK_OBJ_MULTI_FN</b> query function is the
|
||
|
multiple-ID version of a
|
||
|
<a href="#ZOLTAN_PACK_OBJ_FN"><b>ZOLTAN_PACK_OBJ_FN</b></a>. It allows the application
|
||
|
to tell Zoltan how to copy all needed data for a given list of
|
||
|
objects into a communication buffer.
|
||
|
<br>
|
||
|
<table WIDTH="100%" >
|
||
|
<tr>
|
||
|
<td VALIGN=TOP WIDTH="20%"><b>Function Type:</b></td>
|
||
|
|
||
|
<td WIDTH="80%"><b>ZOLTAN_PACK_OBJ_FN_MULTI_TYPE</b></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><b>Arguments:</b></td>
|
||
|
|
||
|
<td></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> data</i></td>
|
||
|
|
||
|
<td>Pointer to user-defined data.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE> <i>num_gid_entries</i></td>
|
||
|
|
||
|
<td>The number of array entries used to describe a single global ID.
|
||
|
This value is the maximum value over all processors of the parameter <a href="ug_param.html#NUM_GID_ENTRIES">NUM_GID_ENTRIES</a>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE> <i>num_lid_entries</i></td>
|
||
|
|
||
|
<td>The number of array entries used to describe a single local ID.
|
||
|
This value is the maximum value over all processors of the parameter <a href="ug_param.html#NUM_LID_ENTRIES">NUM_LID_ENTRIES</a>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr VALIGN=TOP NOSAVE>
|
||
|
<td><i> num_ids</i></td>
|
||
|
|
||
|
<td NOSAVE>The number of objects to be packed.
|
||
|
</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td> <i>global_ids</i></td>
|
||
|
|
||
|
<td>An array of global IDs of the objects. The ID for the <i>i</i>-th
|
||
|
object begins in <i>global_ids[i*num_gid_entries]</i>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td> <i>local_ids</i></td>
|
||
|
|
||
|
<td>An array of local IDs of the objects. The ID for the <i>i</i>-th
|
||
|
object begins in <i>local_ids[i*num_lid_entries]</i>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> dest</i></td>
|
||
|
|
||
|
<td>An array of destination part numbers (i.e., the parts to which the objects
|
||
|
are being sent)</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> sizes</i></td>
|
||
|
|
||
|
<td>An array containing the per-object sizes (in bytes) of the communication
|
||
|
buffer for each object. Each value is at least as large as the corresponding
|
||
|
value returned by
|
||
|
the <b><a href="#ZOLTAN_OBJ_SIZE_MULTI_FN">ZOLTAN_OBJ_SIZE_MULTI_FN</a></b>
|
||
|
or <b><a href="#ZOLTAN_OBJ_SIZE_FN">ZOLTAN_OBJ_SIZE_FN</a></b>
|
||
|
query function; it may be slightly larger due to padding for data alignment
|
||
|
in the buffer.
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> idx</i></td>
|
||
|
|
||
|
<td>For each object, an index into the <i>buf</i> array giving the starting
|
||
|
location of that object's data.
|
||
|
Data for the <i>i</i>-th object are stored in
|
||
|
<i>buf[idx[i]],
|
||
|
buf[idx[i]+1], ...,
|
||
|
buf[idx[i]+sizes[i]-1]</i>.
|
||
|
Because Zoltan adds some tag information
|
||
|
to packed data, <i>idx[i]</i> != sum[<i>j</i>=0,<i>i</i>-1](<i>sizes[j]</i>).
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> buf</i></td>
|
||
|
|
||
|
<td>The address of the communication buffer into which the objects'
|
||
|
data should be packed.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> ierr</i></td>
|
||
|
|
||
|
<td>Error code to be set by function.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p>
|
||
|
|
||
|
<!------------------------------------------------------------------------->
|
||
|
<hr WIDTH="100%">
|
||
|
<a NAME="ZOLTAN_UNPACK_OBJ_FN"></a>
|
||
|
<hr WIDTH="100%">
|
||
|
<table WIDTH="100%" NOSAVE >
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE>C and C++:</td>
|
||
|
|
||
|
<td WIDTH="85%">
|
||
|
typedef void <b>ZOLTAN_UNPACK_OBJ_FN</b>
|
||
|
(
|
||
|
<br> void *<i>data</i>,
|
||
|
<br> int <i>num_gid_entries</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>global_id</i>,
|
||
|
<br> int <i>size</i>,
|
||
|
<br> char *<i>buf</i>,
|
||
|
<br> int *<i>ierr</i>);
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP WIDTH="15%" NOSAVE>FORTRAN:</td>
|
||
|
|
||
|
<td>SUBROUTINE <b><i>Unpack_Obj</i></b>(<i>data, num_gid_entries, global_id,
|
||
|
size, buf, ierr</i>)
|
||
|
<br><<i>type-data</i>>, INTENT(INOUT) :: data
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN) :: num_gid_entries
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: global_id
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN) :: size
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: buf
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(OUT) :: ierr
|
||
|
<p><<i>type-data</i>> can be any of INTEGER(Zoltan_INT), DIMENSION(*) or
|
||
|
REAL(Zoltan_FLOAT), DIMENSION(*) or REAL(Zoltan_DOUBLE), DIMENSION(*) or TYPE(Zoltan_User_Data_<i>x</i>)
|
||
|
where <i>x</i> is 1, 2, 3 or 4. See the section on
|
||
|
<a href="ug_fortran_api.html#fortran ug api query">Fortran
|
||
|
query functions</a> for an explanation. </td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<hr WIDTH="100%">A <b>ZOLTAN_UNPACK_OBJ_FN</b> query function allows the application
|
||
|
to tell Zoltan how to copy all needed data for a given
|
||
|
object from a communication buffer into the application's data structure.
|
||
|
This operation is needed as the final step of importing objects during
|
||
|
data migration. The query function may also perform other computation,
|
||
|
such as building request lists for related data. This routine is called
|
||
|
by <b><a href="ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>
|
||
|
for each object to be received by the processor. (Note: a local ID for
|
||
|
the object is not included in this function, as the local ID is local to
|
||
|
the exporting, not the importing, processor.)
|
||
|
<br>
|
||
|
<table WIDTH="100%" >
|
||
|
<tr>
|
||
|
<td VALIGN=TOP WIDTH="20%"><b>Function Type:</b></td>
|
||
|
|
||
|
<td WIDTH="80%"><b>ZOLTAN_UNPACK_OBJ_FN_TYPE</b></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><b>Arguments:</b></td>
|
||
|
|
||
|
<td></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> data</i></td>
|
||
|
|
||
|
<td>Pointer to user-defined data.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE> <i>num_gid_entries</i></td>
|
||
|
|
||
|
<td>The number of array entries used to describe a single global ID.
|
||
|
This value is the maximum value over all processors of the parameter <a href="ug_param.html#NUM_GID_ENTRIES">NUM_GID_ENTRIES</a>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> global_id</i></td>
|
||
|
|
||
|
<td>The global ID of the object whose data has been received in the communication
|
||
|
buffer.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> size</i></td>
|
||
|
|
||
|
<td>The size (in bytes) of the object's data in the communication buffer.
|
||
|
This value is at least as large as the value returned by
|
||
|
the <b><a href="#ZOLTAN_OBJ_SIZE_MULTI_FN">ZOLTAN_OBJ_SIZE_MULTI_FN</a></b> or
|
||
|
<b><a href="#ZOLTAN_OBJ_SIZE_FN">ZOLTAN_OBJ_SIZE_FN</a></b>
|
||
|
query function; it may be slightly larger due to padding for data alignment
|
||
|
in the buffer.
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> buf</i></td>
|
||
|
|
||
|
<td>The starting address of the communication buffer for this object.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> ierr</i></td>
|
||
|
|
||
|
<td>Error code to be set by function.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
<p>
|
||
|
|
||
|
<!------------------------------------------------------------------------->
|
||
|
<hr WIDTH="100%">
|
||
|
<a NAME="ZOLTAN_UNPACK_OBJ_MULTI_FN"></a>
|
||
|
<hr WIDTH="100%">
|
||
|
<table WIDTH="100%" NOSAVE >
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE>C and C++:</td>
|
||
|
|
||
|
<td WIDTH="85%">
|
||
|
typedef void <b>ZOLTAN_UNPACK_OBJ_MULTI_FN</b>
|
||
|
(
|
||
|
<br> void *<i>data</i>,
|
||
|
<br> int <i>num_gid_entries</i>,
|
||
|
<br> int <i>num_ids</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>global_ids</i>,
|
||
|
<br> int <i>*sizes</i>,
|
||
|
<br> int <i>*idx</i>,
|
||
|
<br> char *<i>buf</i>,
|
||
|
<br> int *<i>ierr</i>);
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP WIDTH="15%" NOSAVE>FORTRAN:</td>
|
||
|
|
||
|
<td>SUBROUTINE <b><i>Unpack_Obj_Multi</i></b>(<i>data, num_gid_entries, num_ids, global_ids,
|
||
|
sizes, idx, buf, ierr</i>)
|
||
|
<br><<i>type-data</i>>, INTENT(INOUT) :: data
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN) :: num_gid_entries
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN) :: num_ids
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: global_ids
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: sizes
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: idx
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: buf
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(OUT) :: ierr
|
||
|
<p><<i>type-data</i>> can be any of INTEGER(Zoltan_INT), DIMENSION(*) or
|
||
|
REAL(Zoltan_FLOAT), DIMENSION(*) or REAL(Zoltan_DOUBLE), DIMENSION(*) or TYPE(Zoltan_User_Data_<i>x</i>)
|
||
|
where <i>x</i> is 1, 2, 3 or 4. See the section on
|
||
|
<a href="ug_fortran_api.html#fortran ug api query">Fortran
|
||
|
query functions</a> for an explanation. </td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<hr WIDTH="100%">A <b>ZOLTAN_UNPACK_OBJ_MULTI_FN</b> query function is the
|
||
|
multiple-ID version of a
|
||
|
<a href="#ZOLTAN_UNPACK_OBJ_FN"><b>ZOLTAN_UNPACK_OBJ_FN</b></a>.
|
||
|
It allows the application
|
||
|
to tell Zoltan how to copy all needed data for a given list of
|
||
|
objects from a communication buffer into the application's data structure.
|
||
|
<br>
|
||
|
<table WIDTH="100%" >
|
||
|
<tr>
|
||
|
<td VALIGN=TOP WIDTH="20%"><b>Function Type:</b></td>
|
||
|
|
||
|
<td WIDTH="80%"><b>ZOLTAN_UNPACK_OBJ_MULTI_FN_TYPE</b></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><b>Arguments:</b></td>
|
||
|
|
||
|
<td></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> data</i></td>
|
||
|
|
||
|
<td>Pointer to user-defined data.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE> <i>num_gid_entries</i></td>
|
||
|
|
||
|
<td>The number of array entries used to describe a single global ID.
|
||
|
This value is the maximum value over all processors of the parameter <a href="ug_param.html#NUM_GID_ENTRIES">NUM_GID_ENTRIES</a>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr VALIGN=TOP NOSAVE>
|
||
|
<td><i> num_ids</i></td>
|
||
|
|
||
|
<td NOSAVE>The number of objects to be unpacked.
|
||
|
</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td> <i>global_ids</i></td>
|
||
|
|
||
|
<td>An array of global IDs of the objects. The ID for the <i>i</i>-th
|
||
|
object begins in <i>global_ids[i*num_gid_entries]</i>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> sizes</i></td>
|
||
|
|
||
|
<td>An array containing the per-object sizes (in bytes) of the communication buffer for each object.
|
||
|
Each value is at least as large as the corresponding value returned by
|
||
|
the <b><a href="#ZOLTAN_OBJ_SIZE_MULTI_FN">ZOLTAN_OBJ_SIZE_MULTI_FN</a></b> or
|
||
|
<b><a href="#ZOLTAN_OBJ_SIZE_FN">ZOLTAN_OBJ_SIZE_FN</a></b>
|
||
|
query function; it may be slightly larger due to padding for data alignment
|
||
|
in the buffer.
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> idx</i></td>
|
||
|
|
||
|
<td>For each object, an index into the <i>buf</i> array giving the starting
|
||
|
location of that object's data.
|
||
|
Data for the <i>i</i>-th object are stored in
|
||
|
<i>buf[idx[i]],
|
||
|
buf[idx[i]+1], ...,
|
||
|
buf[idx[i]+sizes[i]-1]</i>.
|
||
|
Because Zoltan adds some tag information
|
||
|
to packed data, <i>idx[i]</i> != sum[<i>j</i>=0,<i>i</i>-1](<i>sizes[j]</i>).
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> buf</i></td>
|
||
|
|
||
|
<td>The address of the communication buffer from which data is unpacked.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> ierr</i></td>
|
||
|
|
||
|
<td>Error code to be set by function.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
<p>
|
||
|
|
||
|
<!------------------------------------------------------------------------->
|
||
|
<hr WIDTH="100%">
|
||
|
<a NAME="ZOLTAN_PRE_MIGRATE_PP_FN"></a>
|
||
|
<hr WIDTH="100%">
|
||
|
<table WIDTH="100%" NOSAVE >
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE>C and C++:</td>
|
||
|
|
||
|
<td WIDTH="85%">
|
||
|
typedef void <b>ZOLTAN_PRE_MIGRATE_PP_FN</b>
|
||
|
(
|
||
|
<br> void *<i>data</i>,
|
||
|
<br> int <i>num_gid_entries</i>,
|
||
|
<br> int <i>num_lid_entries</i>,
|
||
|
<br> int <i>num_import</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>import_global_ids</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>import_local_ids</i>,
|
||
|
<br> int *<i>import_procs</i>,
|
||
|
<br> int *<i>import_to_part</i>,
|
||
|
<br> int <i>num_export</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>export_global_ids</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>export_local_ids</i>,
|
||
|
<br> int *<i>export_procs</i>,
|
||
|
<br> int *<i>export_to_part</i>,
|
||
|
<br> int *<i>ierr</i>);
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP WIDTH="15%" NOSAVE>FORTRAN:</td>
|
||
|
|
||
|
<td>SUBROUTINE <b><i>Pre_Migrate_PP</i></b>(<i>data, num_gid_entries, num_lid_entries,
|
||
|
num_import, import_global_ids, import_local_ids, import_procs, import_to_part, num_export,
|
||
|
export_global_ids, export_local_ids, export_procs, export_to_part, ierr</i>)
|
||
|
<br><<i>type-data</i>>, INTENT(INOUT) :: data
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN) :: num_gid_entries, num_lid_entries
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN) :: num_import, num_export
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: import_global_ids, export_global_ids
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: import_local_ids, export_local_ids
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: import_procs, export_procs
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: import_to_part, export_to_part
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(OUT) :: ierr
|
||
|
<p><<i>type-data</i>> can be any of INTEGER(Zoltan_INT), DIMENSION(*) or
|
||
|
REAL(Zoltan_FLOAT), DIMENSION(*) or REAL(Zoltan_DOUBLE), DIMENSION(*) or TYPE(Zoltan_User_Data_<i>x</i>)
|
||
|
where <i>x</i> is 1, 2, 3 or 4. See the section on
|
||
|
<a href="ug_fortran_api.html#fortran ug api query">Fortran
|
||
|
query functions</a> for an explanation. </td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<hr WIDTH="100%">A <b>ZOLTAN_PRE_MIGRATE_PP_FN</b> query function performs any
|
||
|
pre-processing desired by the application. If it is registered, it is called
|
||
|
at the beginning of the <b><a href="ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>
|
||
|
routine. The arguments passed to <b><a href="ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>
|
||
|
are made available for use in the pre-processing routine.
|
||
|
<br>
|
||
|
<table WIDTH="100%" >
|
||
|
<tr>
|
||
|
<td VALIGN=TOP WIDTH="20%"><b>Function Type:</b></td>
|
||
|
|
||
|
<td WIDTH="80%"><b>ZOLTAN_PRE_MIGRATE_PP_FN_TYPE</b></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><b>Arguments:</b></td>
|
||
|
|
||
|
<td></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> data</i></td>
|
||
|
|
||
|
<td>Pointer to user-defined data.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE> <i>num_gid_entries</i></td>
|
||
|
|
||
|
<td>The number of array entries used to describe a single global ID.
|
||
|
This value is the maximum value over all processors of the parameter <a href="ug_param.html#NUM_GID_ENTRIES">NUM_GID_ENTRIES</a>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE> <i>num_lid_entries</i></td>
|
||
|
|
||
|
<td>The number of array entries used to describe a single local ID.
|
||
|
This value is the maximum value over all processors of the parameter <a href="ug_param.html#NUM_LID_ENTRIES">NUM_LID_ENTRIES</a>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> num_import</i></td>
|
||
|
|
||
|
<td>The number of objects that will be received by this processor.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> import_global_ids</i></td>
|
||
|
|
||
|
<td>An array of <i>num_import</i> global IDs of objects
|
||
|
to be received by this processor. This array may be NULL, as the processor
|
||
|
does not necessarily need to know which objects it will receive.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> import_local_ids</i></td>
|
||
|
|
||
|
<td>An array of <i>num_import</i> local IDs of objects
|
||
|
to be received by this processor. This array may be NULL, as the processor
|
||
|
does not necessarily need to know which objects it will receive.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> import_procs</i></td>
|
||
|
|
||
|
<td>An array of size <i>num_import</i> listing the processor IDs of the
|
||
|
source processors. This array may be NULL, as the processor does not necessarily
|
||
|
need to know which objects is will receive.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> import_to_part</i></td>
|
||
|
|
||
|
<td>An array of size <i>num_import</i> listing the parts to which
|
||
|
objects will be imported.
|
||
|
This array may be NULL, as the processor does not necessarily
|
||
|
need to know from which objects it will receive.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> num_export</i></td>
|
||
|
|
||
|
<td>The number of objects that will be sent from this processor to other
|
||
|
processors.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> export_global_ids</i></td>
|
||
|
|
||
|
<td>An array of <i>num_export</i> global IDs of objects
|
||
|
to be sent from this processor.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> export_local_ids</i></td>
|
||
|
|
||
|
<td>An array of <i>num_export</i> local IDs of objects
|
||
|
to be sent from this processor.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> export_procs</i></td>
|
||
|
|
||
|
<td>An array of size <i>num_export</i> listing the processor IDs of the
|
||
|
destination processors.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> export_to_part</i></td>
|
||
|
|
||
|
<td>An array of size <i>num_export</i> listing the parts to which
|
||
|
objects will be sent. </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> ierr</i></td>
|
||
|
|
||
|
<td>Error code to be set by function.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><b>Default:</b></td>
|
||
|
|
||
|
<td></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP></td>
|
||
|
|
||
|
<td>No pre-processing is done if a <b>ZOLTAN_PRE_MIGRATE_PP_FN</b> is not registered.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p>
|
||
|
|
||
|
<!------------------------------------------------------------------------->
|
||
|
<hr WIDTH="100%">
|
||
|
<a NAME="ZOLTAN_MID_MIGRATE_PP_FN"></a>
|
||
|
<hr WIDTH="100%">
|
||
|
<table WIDTH="100%" NOSAVE >
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE>C and C++:</td>
|
||
|
|
||
|
<td WIDTH="85%">
|
||
|
typedef void <b>ZOLTAN_MID_MIGRATE_PP_FN</b> (
|
||
|
<br> void *<i>data</i>,
|
||
|
<br> int <i>num_gid_entries</i>,
|
||
|
<br> int <i>num_lid_entries</i>,
|
||
|
<br> int <i>num_import</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>import_global_ids</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>import_local_ids</i>,
|
||
|
<br> int *<i>import_procs</i>,
|
||
|
<br> int *<i>import_to_part</i>,
|
||
|
<br> int <i>num_export</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>export_global_ids</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>export_local_ids</i>,
|
||
|
<br> int *<i>export_procs</i>,
|
||
|
<br> int *<i>export_to_part</i>,
|
||
|
<br> int *<i>ierr</i>);
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP WIDTH="15%" NOSAVE>FORTRAN:</td>
|
||
|
|
||
|
<td>SUBROUTINE <b><i>Mid_Migrate_PP</i></b>(<i>data, num_gid_entries, num_lid_entries,
|
||
|
num_import, import_global_ids, import_local_ids, import_procs, import_to_part, num_export,
|
||
|
export_global_ids, export_local_ids, export_procs, export_to_part, ierr</i>)
|
||
|
<br><<i>type-data</i>>, INTENT(INOUT) :: data
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN) :: num_gid_entries, num_lid_entries
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN) :: num_import, num_export
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: import_global_ids, export_global_ids
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: import_local_ids, export_local_ids
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: import_procs, export_procs
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: import_to_part, export_to_part
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(OUT) :: ierr
|
||
|
<p><<i>type-data</i>> can be any of INTEGER(Zoltan_INT), DIMENSION(*) or
|
||
|
REAL(Zoltan_FLOAT), DIMENSION(*) or REAL(Zoltan_DOUBLE), DIMENSION(*) or TYPE(Zoltan_User_Data_<i>x</i>)
|
||
|
where <i>x</i> is 1, 2, 3 or 4. See the section on
|
||
|
<a href="ug_fortran_api.html#fortran ug api query">Fortran
|
||
|
query functions</a> for an explanation. </td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<hr WIDTH="100%">A <b>ZOLTAN_MID_MIGRATE_PP_FN</b> query function performs any
|
||
|
processing desired by the application between the packing and unpacking
|
||
|
of objects being migrated. If it is registered, it is called after export
|
||
|
objects are packed in <b><a href="ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>;
|
||
|
imported objects are unpacked after the <b>ZOLTAN_MID_MIGRATE_PP_FN</b> query
|
||
|
function is called. The arguments passed to <b><a href="ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>
|
||
|
are made available for use in the processing routine.
|
||
|
<br>
|
||
|
<table WIDTH="100%" >
|
||
|
<caption>, </caption>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP WIDTH="20%"><b>Function Type:</b></td>
|
||
|
|
||
|
<td WIDTH="80%"><b>ZOLTAN_MID_MIGRATE_PP_FN_TYPE</b></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><b>Arguments:</b></td>
|
||
|
|
||
|
<td></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> data</i></td>
|
||
|
|
||
|
<td>Pointer to user-defined data.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE> <i>num_gid_entries</i></td>
|
||
|
|
||
|
<td>The number of array entries used to describe a single global ID.
|
||
|
This value is the maximum value over all processors of the parameter <a href="ug_param.html#NUM_GID_ENTRIES">NUM_GID_ENTRIES</a>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE> <i>num_lid_entries</i></td>
|
||
|
|
||
|
<td>The number of array entries used to describe a single local ID.
|
||
|
This value is the maximum value over all processors of the parameter <a href="ug_param.html#NUM_LID_ENTRIES">NUM_LID_ENTRIES</a>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> num_import</i></td>
|
||
|
|
||
|
<td>The number of objects that will be received by this processor.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> import_global_ids</i></td>
|
||
|
|
||
|
<td>An array of <i>num_import</i> global IDs of objects
|
||
|
to be received by this processor. This array may be NULL, as the processor
|
||
|
does not necessarily need to know which objects it will receive.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> import_local_ids</i></td>
|
||
|
|
||
|
<td>An array of <i>num_import</i> local IDs of objects
|
||
|
to be received by this processor. This array may be NULL, as the processor
|
||
|
does not necessarily need to know which objects it will receive.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> import_procs</i></td>
|
||
|
|
||
|
<td>An array of size <i>num_import</i> listing the processor IDs of the
|
||
|
source processors. This array may be NULL, as the processor does not necessarily
|
||
|
need to know which objects is will receive.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> import_to_part</i></td>
|
||
|
|
||
|
<td>An array of size <i>num_import</i> listing the parts to which
|
||
|
objects will be imported.
|
||
|
This array may be NULL, as the processor does not necessarily
|
||
|
need to know from which objects it will receive.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> num_export</i></td>
|
||
|
|
||
|
<td>The number of objects that will be sent from this processor to other
|
||
|
processors.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> export_global_ids</i></td>
|
||
|
|
||
|
<td>An array of <i>num_export</i> global IDs of objects
|
||
|
to be sent from this processor.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> export_local_ids</i></td>
|
||
|
|
||
|
<td>An array of <i>num_export</i> local IDs of objects
|
||
|
to be sent from this processor.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> export_procs</i></td>
|
||
|
|
||
|
<td>An array of size <i>num_export</i> listing the processor IDs of the
|
||
|
destination processors.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> export_to_part</i></td>
|
||
|
|
||
|
<td>An array of size <i>num_export</i> listing the parts to which
|
||
|
objects will be sent. </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> ierr</i></td>
|
||
|
|
||
|
<td>Error code to be set by function.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><b>Default:</b></td>
|
||
|
|
||
|
<td></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP></td>
|
||
|
|
||
|
<td>No processing is done if a <b>ZOLTAN_MID_MIGRATE_PP_FN</b> is not registered.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p>
|
||
|
|
||
|
<!------------------------------------------------------------------------->
|
||
|
<hr WIDTH="100%">
|
||
|
<a NAME="ZOLTAN_POST_MIGRATE_PP_FN"></a>
|
||
|
<hr WIDTH="100%">
|
||
|
<table WIDTH="100%" NOSAVE >
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE>C and C++:</td>
|
||
|
|
||
|
<td WIDTH="85%">
|
||
|
typedef void <b>ZOLTAN_POST_MIGRATE_PP_FN</b> (
|
||
|
<br> void *<i>data</i>,
|
||
|
<br> int <i>num_gid_entries</i>,
|
||
|
<br> int <i>num_lid_entries</i>,
|
||
|
<br> int <i>num_import</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>import_global_ids</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>import_local_ids</i>,
|
||
|
<br> int *<i>import_procs</i>,
|
||
|
<br> int *<i>import_to_part</i>,
|
||
|
<br> int <i>num_export</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>export_global_ids</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>export_local_ids</i>,
|
||
|
<br> int *<i>export_procs</i>,
|
||
|
<br> int *<i>export_to_part</i>,
|
||
|
<br> int *<i>ierr</i>);
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP WIDTH="15%" NOSAVE>FORTRAN:</td>
|
||
|
|
||
|
<td>SUBROUTINE <b><i>Post_Migrate_PP</i></b>(<i>data, num_gid_entries, num_lid_entries,
|
||
|
num_import, import_global_ids, import_local_ids, import_procs, import_to_part, num_export,
|
||
|
export_global_ids, export_local_ids, export_procs, export_to_part, ierr</i>)
|
||
|
<br><<i>type-data</i>>, INTENT(INOUT) :: data
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN) :: num_gid_entries, num_lid_entries
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN) :: num_import, num_export
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: import_global_ids, export_global_ids
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: import_local_ids, export_local_ids
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: import_procs, export_procs
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: import_to_part, export_to_part
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(OUT) :: ierr
|
||
|
<p><<i>type-data</i>> can be any of INTEGER(Zoltan_INT), DIMENSION(*) or
|
||
|
REAL(Zoltan_FLOAT), DIMENSION(*) or REAL(Zoltan_DOUBLE), DIMENSION(*) or TYPE(Zoltan_User_Data_<i>x</i>)
|
||
|
where <i>x</i> is 1, 2, 3 or 4. See the section on
|
||
|
<a href="ug_fortran_api.html#fortran ug api query">Fortran
|
||
|
query functions</a> for an explanation. </td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<hr WIDTH="100%">A <b>ZOLTAN_POST_MIGRATE_PP_FN</b> query function performs any
|
||
|
post-processing desired by the application. If it is registered, it is
|
||
|
called at the end of the <b><a href="ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>
|
||
|
routine. The arguments passed to <b><a href="ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>
|
||
|
are made available for use in the post-processing routine.
|
||
|
<br>
|
||
|
<table WIDTH="100%" >
|
||
|
<tr>
|
||
|
<td VALIGN=TOP WIDTH="20%"><b>Function Type:</b></td>
|
||
|
|
||
|
<td WIDTH="80%"><b>ZOLTAN_POST_MIGRATE_PP_FN_TYPE</b></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><b>Arguments:</b></td>
|
||
|
|
||
|
<td></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> data</i></td>
|
||
|
|
||
|
<td>Pointer to user-defined data.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE> <i>num_gid_entries</i></td>
|
||
|
|
||
|
<td>The number of array entries used to describe a single global ID.
|
||
|
This value is the maximum value over all processors of the parameter <a href="ug_param.html#NUM_GID_ENTRIES">NUM_GID_ENTRIES</a>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE> <i>num_lid_entries</i></td>
|
||
|
|
||
|
<td>The number of array entries used to describe a single local ID.
|
||
|
This value is the maximum value over all processors of the parameter <a href="ug_param.html#NUM_LID_ENTRIES">NUM_LID_ENTRIES</a>.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> num_import</i></td>
|
||
|
|
||
|
<td>The number of objects that will be received by this processor.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> import_global_ids</i></td>
|
||
|
|
||
|
<td>An array of <i>num_import</i> global IDs of objects
|
||
|
to be received by this processor. This array may be NULL, as the processor
|
||
|
does not necessarily need to know which objects it will receive.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> import_local_ids</i></td>
|
||
|
|
||
|
<td>An array of <i>num_import</i> local IDs of objects
|
||
|
to be received by this processor. This array may be NULL, as the processor
|
||
|
does not necessarily need to know which objects it will receive.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> import_procs</i></td>
|
||
|
|
||
|
<td>An array of size <i>num_import</i> listing the processor IDs of the
|
||
|
source processors. This array may be NULL, as the processor does not necessarily
|
||
|
need to know which objects is will receive.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> import_to_part</i></td>
|
||
|
|
||
|
<td>An array of size <i>num_import</i> listing the parts to which
|
||
|
objects will be imported.
|
||
|
This array may be NULL, as the processor does not necessarily
|
||
|
need to know from which objects it will receive.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> num_export</i></td>
|
||
|
|
||
|
<td>The number of objects that will be sent from this processor to other
|
||
|
processors.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> export_global_ids</i></td>
|
||
|
|
||
|
<td>An array of <i>num_export</i> global IDs of objects
|
||
|
to be sent from this processor.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> export_local_ids</i></td>
|
||
|
|
||
|
<td>An array of <i>num_export</i> local IDs of objects
|
||
|
to be sent from this processor.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> export_procs</i></td>
|
||
|
|
||
|
<td>An array of size <i>num_export</i> listing the processor IDs of the
|
||
|
destination processors.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> export_to_part</i></td>
|
||
|
|
||
|
<td>An array of size <i>num_export</i> listing the parts to which
|
||
|
objects will be sent. </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><i> ierr</i></td>
|
||
|
|
||
|
<td>Error code to be set by function.</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><b>Default:</b></td>
|
||
|
|
||
|
<td></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP></td>
|
||
|
|
||
|
<td>No post-processing is done if a <b>ZOLTAN_POST_MIGRATE_PP_FN</b> is not registered.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<!------------------------------------------------------------------------->
|
||
|
<hr WIDTH="100%">
|
||
|
<a NAME="ZOLTAN_PRE_MIGRATE_FN"></a>
|
||
|
<hr WIDTH="100%">
|
||
|
<table WIDTH="100%" NOSAVE >
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE>C:</td>
|
||
|
|
||
|
<td WIDTH="85%">
|
||
|
typedef void <b>ZOLTAN_PRE_MIGRATE_FN</b>
|
||
|
(
|
||
|
<br> void *<i>data</i>,
|
||
|
<br> int <i>num_gid_entries</i>,
|
||
|
<br> int <i>num_lid_entries</i>,
|
||
|
<br> int <i>num_import</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>import_global_ids</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>import_local_ids</i>,
|
||
|
<br> int *<i>import_procs</i>,
|
||
|
<br> int <i>num_export</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>export_global_ids</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>export_local_ids</i>,
|
||
|
<br> int *<i>export_procs</i>,
|
||
|
<br> int *<i>ierr</i>);
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP WIDTH="15%" NOSAVE>FORTRAN:</td>
|
||
|
|
||
|
<td>SUBROUTINE <b><i>Pre_Migrate</i></b>(<i>data, num_gid_entries, num_lid_entries,
|
||
|
num_import, import_global_ids, import_local_ids, import_procs, num_export,
|
||
|
export_global_ids, export_local_ids, export_procs, ierr</i>)
|
||
|
<br><<i>type-data</i>>, INTENT(INOUT) :: data
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN) :: num_gid_entries, num_lid_entries
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN) :: num_import, num_export
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: import_global_ids, export_global_ids
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: import_local_ids, export_local_ids
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: import_procs, export_procs
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(OUT) :: ierr
|
||
|
<p><<i>type-data</i>> can be any of INTEGER(Zoltan_INT), DIMENSION(*) or
|
||
|
REAL(Zoltan_FLOAT), DIMENSION(*) or REAL(Zoltan_DOUBLE), DIMENSION(*) or TYPE(Zoltan_User_Data_<i>x</i>)
|
||
|
where <i>x</i> is 1, 2, 3 or 4. See the section on
|
||
|
<a href="ug_fortran_api.html#fortran ug api query">Fortran
|
||
|
query functions</a> for an explanation. </td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<hr WIDTH="100%">A <b>ZOLTAN_PRE_MIGRATE_FN</b> query function performs any
|
||
|
pre-processing desired by applications using
|
||
|
<b><a href="ug_interface_mig.html#Zoltan_Help_Migrate">Zoltan_Help_Migrate</a></b>.
|
||
|
Its function is analogous to
|
||
|
<b><a href="#ZOLTAN_PRE_MIGRATE_PP_FN">ZOLTAN_PRE_MIGRATE_PP_FN</a></b>, but
|
||
|
it cannot be used with <a href="ug_interface_mig.html#Zoltan_Migrate"><b>Zoltan_Migrate</b></a>.
|
||
|
<br>
|
||
|
<table WIDTH="100%" >
|
||
|
<tr>
|
||
|
<td VALIGN=TOP WIDTH="20%"><b>Function Type:</b></td>
|
||
|
|
||
|
<td WIDTH="80%"><b>ZOLTAN_PRE_MIGRATE_FN_TYPE</b></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><b>Arguments:</b></td>
|
||
|
|
||
|
<td></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP></td>
|
||
|
|
||
|
<td>
|
||
|
All arguments are analogous to those in
|
||
|
<a href="#ZOLTAN_PRE_MIGRATE_PP_FN"><b>ZOLTAN_PRE_MIGRATE_PP_FN</b></a>.
|
||
|
Part-assignment arguments <i>import_to_part</i> and <i>export_to_part</i>
|
||
|
are not included, as processor and parts
|
||
|
numbers are considered to be the same in
|
||
|
<a href="ug_interface_mig.html#Zoltan_Help_Migrate"><b>Zoltan_Help_Migrate</b></a>.
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><b>Default:</b></td>
|
||
|
|
||
|
<td></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP></td>
|
||
|
|
||
|
<td>No pre-processing is done if a <b>ZOLTAN_PRE_MIGRATE_FN</b> is not registered.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p>
|
||
|
|
||
|
<!------------------------------------------------------------------------->
|
||
|
<hr WIDTH="100%">
|
||
|
<a NAME="ZOLTAN_MID_MIGRATE_FN"></a>
|
||
|
<hr WIDTH="100%">
|
||
|
<table WIDTH="100%" NOSAVE >
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE>C:</td>
|
||
|
|
||
|
<td WIDTH="85%">
|
||
|
typedef void <b>ZOLTAN_MID_MIGRATE_FN</b> (
|
||
|
<br> void *<i>data</i>,
|
||
|
<br> int <i>num_gid_entries</i>,
|
||
|
<br> int <i>num_lid_entries</i>,
|
||
|
<br> int <i>num_import</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>import_global_ids</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>import_local_ids</i>,
|
||
|
<br> int *<i>import_procs</i>,
|
||
|
<br> int <i>num_export</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>export_global_ids</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>export_local_ids</i>,
|
||
|
<br> int *<i>export_procs</i>,
|
||
|
<br> int *<i>ierr</i>);
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP WIDTH="15%" NOSAVE>FORTRAN:</td>
|
||
|
|
||
|
<td>SUBROUTINE <b><i>Mid_Migrate</i></b>(<i>data, num_gid_entries, num_lid_entries,
|
||
|
num_import, import_global_ids, import_local_ids, import_procs, num_export,
|
||
|
export_global_ids, export_local_ids, export_procs, ierr</i>)
|
||
|
<br><<i>type-data</i>>, INTENT(INOUT) :: data
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN) :: num_gid_entries, num_lid_entries
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN) :: num_import, num_export
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: import_global_ids, export_global_ids
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: import_local_ids, export_local_ids
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: import_procs, export_procs
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(OUT) :: ierr
|
||
|
<p><<i>type-data</i>> can be any of INTEGER(Zoltan_INT), DIMENSION(*) or
|
||
|
REAL(Zoltan_FLOAT), DIMENSION(*) or REAL(Zoltan_DOUBLE), DIMENSION(*) or TYPE(Zoltan_User_Data_<i>x</i>)
|
||
|
where <i>x</i> is 1, 2, 3 or 4. See the section on
|
||
|
<a href="ug_fortran_api.html#fortran ug api query">Fortran
|
||
|
query functions</a> for an explanation. </td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<hr WIDTH="100%">A <b>ZOLTAN_MID_MIGRATE_FN</b> query function performs any
|
||
|
mid-migration processing desired by applications using
|
||
|
<b><a href="ug_interface_mig.html#Zoltan_Help_Migrate">Zoltan_Help_Migrate</a></b>.
|
||
|
Its function is analogous to
|
||
|
<b><a href="#ZOLTAN_MID_MIGRATE_PP_FN">ZOLTAN_MID_MIGRATE_PP_FN</a></b>, but
|
||
|
it cannot be used with <a href="ug_interface_mig.html#Zoltan_Migrate"><b>Zoltan_Migrate</b></a>.
|
||
|
<br>
|
||
|
<table WIDTH="100%" >
|
||
|
<tr>
|
||
|
<td VALIGN=TOP WIDTH="20%"><b>Function Type:</b></td>
|
||
|
|
||
|
<td WIDTH="80%"><b>ZOLTAN_MID_MIGRATE_FN_TYPE</b></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><b>Arguments:</b></td>
|
||
|
|
||
|
<td></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP></td>
|
||
|
|
||
|
<td>
|
||
|
All arguments are analogous to those in
|
||
|
<a href="#ZOLTAN_MID_MIGRATE_PP_FN"><b>ZOLTAN_MID_MIGRATE_PP_FN</b></a>.
|
||
|
Part-assignment arguments <i>import_to_part</i> and <i>export_to_part</i>
|
||
|
are not included, as processor and parts
|
||
|
numbers are considered to be the same in
|
||
|
<a href="ug_interface_mig.html#Zoltan_Help_Migrate"><b>Zoltan_Help_Migrate</b></a>.
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><b>Default:</b></td>
|
||
|
|
||
|
<td></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP></td>
|
||
|
|
||
|
<td>No processing is done if a <b>ZOLTAN_MID_MIGRATE_FN</b> is not registered.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<p>
|
||
|
|
||
|
<!------------------------------------------------------------------------->
|
||
|
<hr WIDTH="100%">
|
||
|
<a NAME="ZOLTAN_POST_MIGRATE_FN"></a>
|
||
|
<hr WIDTH="100%">
|
||
|
<table WIDTH="100%" NOSAVE >
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP NOSAVE>C:</td>
|
||
|
|
||
|
<td WIDTH="85%">
|
||
|
typedef void <b>ZOLTAN_POST_MIGRATE_FN</b> (
|
||
|
<br> void *<i>data</i>,
|
||
|
<br> int <i>num_gid_entries</i>,
|
||
|
<br> int <i>num_lid_entries</i>,
|
||
|
<br> int <i>num_import</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>import_global_ids</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>import_local_ids</i>,
|
||
|
<br> int *<i>import_procs</i>,
|
||
|
<br> int <i>num_export</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>export_global_ids</i>,
|
||
|
<br> <b><a href="ug_usage.html#Data Types for Object IDs">ZOLTAN_ID_PTR</a></b> <i>export_local_ids</i>,
|
||
|
<br> int *<i>export_procs</i>,
|
||
|
<br> int *<i>ierr</i>);
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr NOSAVE>
|
||
|
<td VALIGN=TOP WIDTH="15%" NOSAVE>FORTRAN:</td>
|
||
|
|
||
|
<td>SUBROUTINE <b><i>Post_Migrate</i></b>(<i>data, num_gid_entries, num_lid_entries,
|
||
|
num_import, import_global_ids, import_local_ids, import_procs, num_export,
|
||
|
export_global_ids, export_local_ids, export_procs, ierr</i>)
|
||
|
<br><<i>type-data</i>>, INTENT(INOUT) :: data
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN) :: num_gid_entries, num_lid_entries
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN) :: num_import, num_export
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: import_global_ids, export_global_ids
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: import_local_ids, export_local_ids
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(IN), DIMENSION(*) :: import_procs, export_procs
|
||
|
<br>INTEGER(Zoltan_INT), INTENT(OUT) :: ierr
|
||
|
<p><<i>type-data</i>> can be any of INTEGER(Zoltan_INT), DIMENSION(*) or
|
||
|
REAL(Zoltan_FLOAT), DIMENSION(*) or REAL(Zoltan_DOUBLE), DIMENSION(*) or TYPE(Zoltan_User_Data_<i>x</i>)
|
||
|
where <i>x</i> is 1, 2, 3 or 4. See the section on
|
||
|
<a href="ug_fortran_api.html#fortran ug api query">Fortran
|
||
|
query functions</a> for an explanation. </td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
<hr WIDTH="100%">A <b>ZOLTAN_POST_MIGRATE_FN</b> query function performs any
|
||
|
post-processing desired by applications using
|
||
|
<b><a href="ug_interface_mig.html#Zoltan_Help_Migrate">Zoltan_Help_Migrate</a></b>.
|
||
|
Its function is analogous to
|
||
|
<b><a href="#ZOLTAN_POST_MIGRATE_PP_FN">ZOLTAN_POST_MIGRATE_PP_FN</a></b>, but
|
||
|
it cannot be used with <a href="ug_interface_mig.html#Zoltan_Migrate"><b>Zoltan_Migrate</b></a>.
|
||
|
<br>
|
||
|
<table WIDTH="100%" >
|
||
|
<tr>
|
||
|
<td VALIGN=TOP WIDTH="20%"><b>Function Type:</b></td>
|
||
|
|
||
|
<td WIDTH="80%"><b>ZOLTAN_POST_MIGRATE_FN_TYPE</b></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><b>Arguments:</b></td>
|
||
|
|
||
|
<td></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP></td>
|
||
|
|
||
|
<td>
|
||
|
All arguments are analogous to those in
|
||
|
<a href="#ZOLTAN_POST_MIGRATE_PP_FN"><b>ZOLTAN_POST_MIGRATE_PP_FN</b></a>.
|
||
|
Part-assignment arguments <i>import_to_part</i> and <i>export_to_part</i>
|
||
|
are not included, as processor and parts
|
||
|
numbers are considered to be the same in
|
||
|
<a href="ug_interface_mig.html#Zoltan_Help_Migrate"><b>Zoltan_Help_Migrate</b></a>.
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP><b>Default:</b></td>
|
||
|
|
||
|
<td></td>
|
||
|
</tr>
|
||
|
|
||
|
<tr>
|
||
|
<td VALIGN=TOP></td>
|
||
|
|
||
|
<td>No post-processing is done if a <b>ZOLTAN_POST_MIGRATE_FN</b> is not registered.</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
|
||
|
|
||
|
<p>
|
||
|
<hr WIDTH="100%">[<a href="ug.html">Table of Contents</a> |
|
||
|
<a href="ug_param.html">Next:
|
||
|
Zoltan Parameters and Output Levels</a> | <a href="ug_query_lb.html">Previous:
|
||
|
Load-Balancing Query Functions</a> | <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
|
||
|
</body>
|
||
|
</html>
|