2       XML definition of Zoltan2 parameters and their 
validators.
 
    4       This list is used to generate:
 
    5         1. {zoltan2_build_directory}/src/Zoltan2_XML_Parameters.hpp
 
    8       The first is a header file containing a 
string which is the
 
    9       XML definition of the parameters.
 
   11       The second is a page of Doxygen documentation describing
 
   12       the parameters 
for users.
 
   14       New parameters should be added to 
this file.
 
   16       In the Parameter elements, the 
"value" must be a valid value
 
   17       for the parameter.  It is not a 
default. We don
't have  
   18       default values for our parameters.  If the user didn't
 
   19       define a value 
for a parameter, then that parameter doesn
't 
   20       appear in the parameter list and the library code at 
   21       run-time can decide what to do about that. 
   23       NOTE: Do not use the string "P a r a m e t e r L i s t" in this file 
   24       before the beginning of the XML parameter list.  We search for that  
   25       string to find the start of the XML definition. 
   28 <ParameterList name="zoltan2ValidatingParameters"> 
   31   id="0" name="error_check_level" type="string" validatorId="0" value="basic_assertions" 
   32   docString='  the amount of error checking performed
 
   33   (If the compile flag Z2_OMIT_ALL_ERROR_CHECKING was set,
 
   34   then error checking code is not executed at runtime.)
' 
   38   id="1" name="debug_level" type="string" validatorId="1" value="basic_status" 
   39   docString='  the amount of status/debugging/warning information to print
' 
   43   id="2" name="timer_type" type="string" validatorId="2" value="no_timers" 
   44   docString='  the type of timing information to collect
 
   45   (If the compile flag Z2_OMIT_ALL_PROFILING was set,
 
   46   then the timing code is not executed at runtime.)
' 
   50   id="3" name="debug_output_stream" type="string" validatorId="3" value="cout" 
   51   docString='  output stream 
for debug/status/warning messages (
default cout)
' 
   55   id="4" name="timer_output_stream" type="string" validatorId="4" value="cout" 
   56   docString='  output stream 
for timing report (
default cout)
' 
   60   id="5" name="memory_output_stream" type="string" validatorId="5" value="cout" 
   61   docString='  output stream 
for memory usage messages (
default cout)
' 
   65   id="6" name="debug_output_file" type="string" validatorId="6" value="/dev/null" 
   66   docString='  name of file to which debug/status messages should be written
 
   67   (process rank will be included in file name)
' 
   71   id="7" name="timer_output_file" type="string" validatorId="6" value="/dev/null" 
   72   docString='  name of file to which timing information should be written
 
   73   (process rank will be included in file name)
' 
   77   id="8" name="memory_output_file" type="string" validatorId="6" value="/dev/null" 
   78   docString='  name of file to which memory profiling information should be written
 
   79   (process rank will be included in file name)
' 
   83   id="9" name="debug_procs" type="string" validatorId="7" value="0" 
   84   docString='  list of ranks that output debugging/status messages (
default "0")
' 
   88   id="10" name="pqParts" type="string" validatorId="8" value="0" 
   89   docString='  list of parts 
for multijagged partitioning algorithm. As many as the dimension count.
' 
   93   id="11" name="memory_procs" type="string" validatorId="9" value="0" 
   94   docString='  list of ranks that 
do memory profiling information (
default "0")
' 
   98   id="12" name="speed_versus_quality" type="string" validatorId="10" value="balance" 
   99   docString='  When algorithm choices exist, opt 
for speed or solution quality?
 
  100   (Default is a balance of speed and quality)
' 
  104   id="13" name="memory_versus_speed" type="string" validatorId="11" value="balance" 
  105   docString='  When algorithm choices exist, opt 
for the use of less memory
 
  106   at the expense of runtime
 
  107   (Default is a balance of memory conservation and speed)
' 
  111   id="14" name="random_seed" type="string" validatorId="12" value="0.5" 
  112   docString='  random seed
' 
  116   id="15" name="order_method" type="string" validatorId="13" value="rcm" 
  117   docString='  order algorithm
' 
  121   id="16" name="order_package" type="string" validatorId="14" value="amd" 
  122   docString='  package to use in ordering'
 
  126   id="17" name="compute_metrics" type="string" validatorId="15" value="no"
 
  127   docString='  Compute metrics after computing solution'
 
  131   id="18" name="topology" type="string" validatorId="16" value=""
 
  132   docString='Topology of node to be used in hierarchical partitioning
 
  133   "2,4"  for dual-socket quad-core
 
  134   "2,2,6"  for dual-socket, dual-die, six-core
 
  135   "2,2,3"  for dual-socket, dual-die, six-core but
 
  136              with only three partitions per die'
 
  140   id="19" name="randomize_input" type="string" validatorId="17" value="no"
 
  141   docString='  randomize input prior to partitioning'
 
  145   id="20" name="partitioning_objective" type="string" validatorId="18" value="balance_object_weight"
 
  146   docString='  objective of partitioning (default depends on algorithm)'
 
  150   id="21" name="imbalance_tolerance" type="string" validatorId="19" value="1.1"
 
  151   docString='  imbalance tolerance, ratio of maximum load over average load (default 1.1)'
 
  155   id="22" name="num_global_parts" type="string" validatorId="20" value="0"
 
  156   docString='  global number of parts to compute (default is number of processes)'
 
  160   id="23" name="num_local_parts" type="string" validatorId="21" value="0"
 
  161   docString='  number of parts to compute for this process(default is one)'
 
  165   id="24" name="partitioning_approach" type="string" validatorId="22" value="partition"
 
  166   docString='  Partition from scratch, partition incrementally from current
 
  167   partition, of partition from scratch but maximize overlap
 
  168   with the current partition (default is "partition" from scratch)'
 
  172   id="25" name="objects_to_partition" type="string" validatorId="23" value="graph_vertices"
 
  173   docString='  Objects to be partitioned (defaults are "matrix_rows" for
 
  174   matrix input, "mesh_nodes" for mesh input, and "graph_vertices"
 
  179   id="26" name="model" type="string" validatorId="24" value="graph"
 
  180   docString='  This is a low level parameter.  Normally the library will choose
 
  181   a computational model based on the algorithm or objective specified
 
  186   id="27" name="algorithm" type="string" validatorId="25" value="random"
 
  187   docString='  partitioning algorithm'
 
  191   id="28" name="rectilinear_blocks" type="string" validatorId="26" value="no"
 
  192   docString='  If true, then when a cut is made, all of the dots located on the cut
 
  193   are moved to the same side of the cut. The resulting regions are then
 
  194   rectilinear.  The resulting load balance may not be as good as when
 
  195   the group of dots is split by the cut. Default is false.'
 
  199   id="29" name="average_cuts" type="string" validatorId="27" value="no"
 
  200   docString='  When true, coordinates of RCB cutting planes are computed to be 
 
  201   the average of the coordinates of the closest object on each side 
 
  202   of the cut. Otherwise, coordinates of cutting planes may equal 
 
  203   those of one of the closest objects. Default is false.'
 
  207   id="30" name="bisection_num_test_cuts" type="int" validatorId="28" value="1"
 
  208   docString='  Experimental: number of test cuts to do simultaneously (default is 1)'
 
  212   id="31" name="symmetrize_input" type="string" validatorId="29" value="no"
 
  213   docString='  Symmetrize input prior to pList.  If "transpose",
 
  214   symmetrize A by computing A plus ATranspose.  If "bipartite",
 
  215   A becomes [[0 A][ATranspose 0]].  '
 
  219   id="32" name="subset_graph" type="string" validatorId="30" value="no"
 
  220   docString='  If "yes", the graph input is to be subsetted.  If a vertex neighbor
 
  221   is not a valid vertex, it will be omitted from the pList.  Otherwise,
 
  222   an invalid neighbor identifier is considered an error.'
 
  226   id="33" name="force_binary_search" type="string" validatorId="31" value="no"
 
  227   docString="If true, then regardless of the part number, cut line will be searched using binary search.\n"
 
  231   id="34" name="force_linear_search" type="string" validatorId="32" value="no"
 
  232   docString="If true, then regardless of the part number, cut line will be searched using linear search.\n"
 
  236   id="35" name="parallel_part_calculation_count" type="int" validatorId="33" value="1"
 
  237   docString="The number of parts whose cut coordinates will be calculated concurently."
 
  242     <Validator defaultParameterName="error_check_level" integralValue="int" type="StringIntegralValidator(int)" validatorId="0">
 
  243       <String integralValue="0" stringDoc="no assertions will be performed" stringValue="no_assertions"/>
 
  244       <String integralValue="1" stringDoc="typical checks of argument validity (fast, default)" stringValue="basic_assertions"/>
 
  245       <String integralValue="2" stringDoc="additional checks, i.e. is input graph a valid graph)" stringValue="complex_assertions"/>
 
  246       <String integralValue="3" stringDoc="check for everything including logic errors (slowest)" stringValue="debug_mode_assertions"/>
 
  249     <Validator defaultParameterName="debug_output_stream" integralValue="int" type="StringIntegralValidator(int)" validatorId="3">
 
  250       <String integralValue="0" stringValue="std::cout"/>
 
  251       <String integralValue="0" stringValue="cout"/>
 
  252       <String integralValue="0" stringValue="stdout"/>
 
  253       <String integralValue="1" stringValue="std::cerr"/>
 
  254       <String integralValue="1" stringValue="cerr"/>
 
  255       <String integralValue="1" stringValue="stderr"/>
 
  256       <String integralValue="2" stringValue="/dev/null"/>
 
  257       <String integralValue="2" stringValue="null"/>
 
  260     <Validator defaultParameterName="debug_level" integralValue="int" type="StringIntegralValidator(int)" validatorId="1">
 
  261       <String integralValue="0" stringDoc="library outputs no status information" stringValue="no_status"/>
 
  262       <String integralValue="1" stringDoc="library outputs basic status information (default)" stringValue="basic_status"/>
 
  263       <String integralValue="2" stringDoc="library outputs detailed information" stringValue="detailed_status"/>
 
  264       <String integralValue="3" stringDoc="library outputs very detailed information" stringValue="verbose_detailed_status"/>
 
  267     <Validator defaultParameterName="timer_type" integralValue="int" type="StringIntegralValidator(int)" validatorId="2">
 
  268       <String integralValue="0" stringDoc="No timing data will be collected (the default)." stringValue="no_timers"/>
 
  269       <String integralValue="1" stringDoc="Time an algorithm (or other entity) as a whole." stringValue="macro_timers"/>
 
  270       <String integralValue="2" stringDoc="Time the substeps of an entity." stringValue="micro_timers"/>
 
  271       <String integralValue="3" stringDoc="Run both MACRO and MICRO timers." stringValue="both_timers"/>
 
  272       <String integralValue="4" stringDoc="Run timers added to code for testing, removed later" stringValue="test_timers"/>
 
  275     <Validator defaultParameterName="timer_output_stream" integralValue="int" type="StringIntegralValidator(int)" validatorId="4">
 
  276       <String integralValue="0" stringValue="std::cout"/>
 
  277       <String integralValue="0" stringValue="cout"/>
 
  278       <String integralValue="0" stringValue="stdout"/>
 
  279       <String integralValue="1" stringValue="std::cerr"/>
 
  280       <String integralValue="1" stringValue="cerr"/>
 
  281       <String integralValue="1" stringValue="stderr"/>
 
  282       <String integralValue="2" stringValue="/dev/null"/>
 
  283       <String integralValue="2" stringValue="null"/>
 
  286     <Validator defaultParameterName="memory_output_stream" integralValue="int" type="StringIntegralValidator(int)" validatorId="5">
 
  287       <String integralValue="0" stringValue="std::cout"/>
 
  288       <String integralValue="0" stringValue="cout"/>
 
  289       <String integralValue="0" stringValue="stdout"/>
 
  290       <String integralValue="1" stringValue="std::cerr"/>
 
  291       <String integralValue="1" stringValue="cerr"/>
 
  292       <String integralValue="1" stringValue="stderr"/>
 
  293       <String integralValue="2" stringValue="/dev/null"/>
 
  294       <String integralValue="2" stringValue="null"/>
 
  297     <Validator fileMustExist="false" type="FilenameValidator" validatorId="6"/>
 
  299     <Validator type="IntegerRangeListValidator(int)" unsorted="false" validatorId="7"/>
 
  301     <Validator type="IntegerRangeListValidator(int)" unsorted="false" validatorId="9"/>
 
  303     <Validator type="IntegerRangeListValidator(int)" unsorted="true" validatorId="8"/>
 
  305     <Validator type="StringValidator" validatorId="10">
 
  306       <String value="speed"/>
 
  307       <String value="balance"/>
 
  308       <String value="quality"/>
 
  311     <Validator allowDouble="true" allowInt="true" allowString="true" prefferedType="double" type="anynumberValidator" validatorId="12"/>
 
  313     <Validator type="StringValidator" validatorId="11">
 
  314       <String value="memory"/>
 
  315       <String value="balance"/>
 
  316       <String value="speed"/>
 
  319     <Validator type="StringValidator" validatorId="13">
 
  320       <String value="rcm"/>
 
  321       <String value="minimum_degree"/>
 
  322       <String value="natural"/>
 
  323       <String value="random"/>
 
  326     <Validator defaultParameterName="compute_metrics" integralValue="int" type="StringIntegralValidator(int)" validatorId="15">
 
  327       <String integralValue="1" stringValue="true"/>
 
  328       <String integralValue="1" stringValue="yes"/>
 
  329       <String integralValue="1" stringValue="1"/>
 
  330       <String integralValue="1" stringValue="on"/>
 
  331       <String integralValue="0" stringValue="false"/>
 
  332       <String integralValue="0" stringValue="no"/>
 
  333       <String integralValue="0" stringValue="0"/>
 
  334       <String integralValue="0" stringValue="off"/>
 
  337     <Validator type="StringValidator" validatorId="14">
 
  338       <String value="amd"/>
 
  339       <String value="package2"/>
 
  340       <String value="package3"/>
 
  343     <Validator defaultParameterName="randomize_input" integralValue="int" type="StringIntegralValidator(int)" validatorId="17">
 
  344       <String integralValue="1" stringValue="true"/>
 
  345       <String integralValue="1" stringValue="yes"/>
 
  346       <String integralValue="1" stringValue="1"/>
 
  347       <String integralValue="1" stringValue="on"/>
 
  348       <String integralValue="0" stringValue="false"/>
 
  349       <String integralValue="0" stringValue="no"/>
 
  350       <String integralValue="0" stringValue="0"/>
 
  351       <String integralValue="0" stringValue="off"/>
 
  354     <Validator type="IntegerRangeListValidator(int)" unsorted="true" validatorId="16"/>
 
  356     <Validator allowDouble="true" allowInt="true" allowString="true" prefferedType="double" type="anynumberValidator" validatorId="19"/>
 
  358     <Validator allowDouble="true" allowInt="true" allowString="true" prefferedType="double" type="anynumberValidator" validatorId="20"/>
 
  360     <Validator type="StringValidator" validatorId="18">
 
  361       <String value="balance_object_count"/>
 
  362       <String value="balance_object_weight"/>
 
  363       <String value="multicriteria_minimize_total_weight"/>
 
  364       <String value="multicriteria_minimize_maximum_weight"/>
 
  365       <String value="multicriteria_balance_total_maximum"/>
 
  366       <String value="minimize_cut_edge_count"/>
 
  367       <String value="minimize_cut_edge_weight"/>
 
  368       <String value="minimize_neighboring_parts"/>
 
  369       <String value="minimize_boundary_vertices"/>
 
  372     <Validator allowDouble="true" allowInt="true" allowString="true" prefferedType="double" type="anynumberValidator" validatorId="21"/>
 
  374     <Validator type="StringValidator" validatorId="22">
 
  375       <String value="partition"/>
 
  376       <String value="repartition"/>
 
  377       <String value="maximize_overlap"/>
 
  380     <Validator type="StringValidator" validatorId="23">
 
  381       <String value="matrix_rows"/>
 
  382       <String value="matrix_columns"/>
 
  383       <String value="matrix_nonzeros"/>
 
  384       <String value="mesh_elements"/>
 
  385       <String value="mesh_nodes"/>
 
  386       <String value="graph_edges"/>
 
  387       <String value="graph_vertices"/>
 
  388       <String value="coordinates"/>
 
  389       <String value="identifiers"/>
 
  392     <Validator type="StringValidator" validatorId="24">
 
  393       <String value="hypergraph"/>
 
  394       <String value="graph"/>
 
  395       <String value="geometry"/>
 
  396       <String value="ids"/>
 
  399     <Validator type="StringValidator" validatorId="25">
 
  400       <String value="rcb"/>
 
  401       <String value="multijagged"/>
 
  402       <String value="rib"/>
 
  403       <String value="hsfc"/>
 
  404       <String value="patoh"/>
 
  405       <String value="phg"/>
 
  406       <String value="metis"/>
 
  407       <String value="parmetis"/>
 
  408       <String value="scotch"/>
 
  409       <String value="ptscotch"/>
 
  410       <String value="block"/>
 
  411       <String value="cyclic"/>
 
  412       <String value="random"/>
 
  415     <Validator defaultParameterName="rectilinear_blocks" integralValue="int" type="StringIntegralValidator(int)" validatorId="26">
 
  416       <String integralValue="1" stringValue="true"/>
 
  417       <String integralValue="1" stringValue="yes"/>
 
  418       <String integralValue="1" stringValue="1"/>
 
  419       <String integralValue="1" stringValue="on"/>
 
  420       <String integralValue="0" stringValue="false"/>
 
  421       <String integralValue="0" stringValue="no"/>
 
  422       <String integralValue="0" stringValue="0"/>
 
  423       <String integralValue="0" stringValue="off"/>
 
  426     <Validator defaultParameterName="average_cuts" integralValue="int" type="StringIntegralValidator(int)" validatorId="27">
 
  427       <String integralValue="1" stringValue="true"/>
 
  428       <String integralValue="1" stringValue="yes"/>
 
  429       <String integralValue="1" stringValue="1"/>
 
  430       <String integralValue="1" stringValue="on"/>
 
  431       <String integralValue="0" stringValue="false"/>
 
  432       <String integralValue="0" stringValue="no"/>
 
  433       <String integralValue="0" stringValue="0"/>
 
  434       <String integralValue="0" stringValue="off"/>
 
  437     <Validator max="250" min="1" precision="0" step="1" type="EnhancedNumberValidator(int)" validatorId="28"/>
 
  439     <Validator type="StringValidator" validatorId="29">
 
  441       <String value="transpose"/>
 
  442       <String value="bipartite"/>
 
  445     <Validator defaultParameterName="subset_graph" integralValue="int" type="StringIntegralValidator(int)" validatorId="30">
 
  446       <String integralValue="1" stringValue="true"/>
 
  447       <String integralValue="1" stringValue="yes"/>
 
  448       <String integralValue="1" stringValue="1"/>
 
  449       <String integralValue="1" stringValue="on"/>
 
  450       <String integralValue="0" stringValue="false"/>
 
  451       <String integralValue="0" stringValue="no"/>
 
  452       <String integralValue="0" stringValue="0"/>
 
  453       <String integralValue="0" stringValue="off"/>
 
  456     <Validator defaultParameterName="force_binary_search" integralValue="int" type="StringIntegralValidator(int)" validatorId="31">
 
  457       <String integralValue="1" stringValue="true"/>
 
  458       <String integralValue="1" stringValue="yes"/>
 
  459       <String integralValue="1" stringValue="1"/>
 
  460       <String integralValue="1" stringValue="on"/>
 
  461       <String integralValue="0" stringValue="false"/>
 
  462       <String integralValue="0" stringValue="no"/>
 
  463       <String integralValue="0" stringValue="0"/>
 
  464       <String integralValue="0" stringValue="off"/>
 
  467     <Validator defaultParameterName="force_linear_search" integralValue="int" type="StringIntegralValidator(int)" validatorId="32">
 
  468       <String integralValue="1" stringValue="true"/>
 
  469       <String integralValue="1" stringValue="yes"/>
 
  470       <String integralValue="1" stringValue="1"/>
 
  471       <String integralValue="1" stringValue="on"/>
 
  472       <String integralValue="0" stringValue="false"/>
 
  473       <String integralValue="0" stringValue="no"/>
 
  474       <String integralValue="0" stringValue="0"/>
 
  475       <String integralValue="0" stringValue="off"/>
 
  478     <Validator defaultParameterName="parallel_part_calculation_count" allowDouble="false" allowInt="true" allowString="true" prefferedType="int" type="anynumberValidator" validatorId="33"/>