87 "Usage: mpmetis [options] meshfile nparts",
89 " Required parameters",
90 " meshfile Stores the mesh to be partitioned.",
91 " nparts The number of partitions to split the mesh.",
93 " Optional parameters",
95 " Specifies the graph to be used for computing the partitioning",
96 " The possible values are:",
97 " dual - Partition the dual graph of the mesh [default]",
98 " nodal - Partition the nodal graph of the mesh",
101 " Specifies the scheme to be used for computing the k-way partitioning.",
102 " The possible values are:",
103 " rb - Recursive bisectioning",
104 " kway - Direct k-way partitioning [default]",
107 " Specifies the scheme to be used to match the vertices of the graph",
108 " during the coarsening.",
109 " The possible values are:",
110 " rm - Random matching",
111 " shem - Sorted heavy-edge matching [default]",
113 " -iptype=string [applies only when -ptype=rb]",
114 " Specifies the scheme to be used to compute the initial partitioning",
116 " The possible values are:",
117 " grow - Grow a bisection using a greedy strategy [default]",
118 " random - Compute a bisection at random",
120 " -objtype=string [applies only when -ptype=kway]",
121 " Specifies the objective that the partitioning routines will optimize.",
122 " The possible values are:",
123 " cut - Minimize the edgecut [default]",
124 " vol - Minimize the total communication volume",
126 " -contig [applies only when -ptype=kway]",
127 " Specifies that the partitioning routines should try to produce",
128 " partitions that are contiguous. Note that if the input graph is not",
129 " connected this option is ignored.",
131 " -minconn [applies only when -ptype=kway]",
132 " Specifies that the partitioning routines should try to minimize the",
133 " maximum degree of the subdomain graph, i.e., the graph in which each",
134 " partition is a node, and edges connect subdomains with a shared",
138 " Specifies the name of the file that stores the target weights for",
139 " each partition. By default, all partitions are assumed to be of ",
143 " Specifies the maximum allowed load imbalance among the partitions.",
144 " A value of x indicates that the allowed load imbalance is 1+x/1000.",
145 " For ptype=rb, the load imbalance is measured as the ratio of the ",
146 " 2*max(left,right)/(left+right), where left and right are the sizes",
147 " of the respective partitions at each bisection. ",
148 " For ptype=kway, the load imbalance is measured as the ratio of ",
149 " max_i(pwgts[i])/avgpwgt, where pwgts[i] is the weight of the ith",
150 " partition and avgpwgt is the sum of the total vertex weights divided",
151 " by the number of partitions requested.",
152 " For ptype=rb, the default value is 1 (i.e., load imbalance of 1.001).",
153 " For ptype=kway, the default value is 30 (i.e., load imbalance of 1.03).",
156 " Specifies the common number of nodes that two elements must have",
157 " in order to put an edge between them in the dual graph. Default is 1.",
160 " Specifies the number of iterations for the refinement algorithms",
161 " at each stage of the uncoarsening process. Default is 10.",
164 " Specifies the number of different partitionings that it will compute.",
165 " The final partitioning is the one that achieves the best edgecut or",
166 " communication volume. Default is 1.",
169 " Specifies that no partitioning file should be generated.",
172 " Selects the seed of the random number generator. ",
175 " Selects the dbglvl. ",
178 " Prints this message.",
184 " Usage: mpmetis [options] <filename> <nparts>",
185 " use 'mpmetis -help' for a summary of the options.",
201 memset((
void *)params, 0,
sizeof(
params_t));
214 params->nooutput = 0;
226 params->tpwgtsfile =
NULL;
228 params->filename =
NULL;
231 params->ufactor = -1;
249 errexit(
"Invalid option -%s=%s\n", long_options[option_index].name,
gk_optarg);
254 errexit(
"Invalid option -%s=%s\n", long_options[option_index].name,
gk_optarg);
259 errexit(
"Invalid option -%s=%s\n", long_options[option_index].name,
gk_optarg);
264 errexit(
"Invalid option -%s=%s\n", long_options[option_index].name,
gk_optarg);
284 params->nooutput = 1;
319 for (i=0; strlen(
helpstr[i]) > 0; i++)
325 errexit(
"Illegal command-line option(s)\n" 326 "Use %s -help for a summary of the options.\n", argv[0]);
331 printf(
"Missing parameters.");
338 params->nparts = atoi(argv[
gk_optind++]);
340 if (params->nparts < 2)
341 errexit(
"The number of partitions should be greater than 1!\n");
356 errexit(
"The -contig option cannot be specified with rb partitioning.\n");
358 errexit(
"The -minconn option cannot be specified with rb partitioning.\n");
360 errexit(
"The -objtype=vol option cannot be specified with rb partitioning.\n");
The structure that stores the information about the command-line options.
void errexit(char *f_str,...)
int gk_optind
Index in ARGV of the next element to be scanned.
static char shorthelpstr[][100]
static gk_StringMap_t objtype_options[]
static const SmartProjectionParams params
static gk_StringMap_t ctype_options[]
static gk_StringMap_t iptype_options[]
static char helpstr[][100]
#define gk_clearcputimer(tmr)
params_t * parse_cmdline(int argc, char *argv[])
static struct gk_option long_options[]
char * gk_strdup(char *orgstr)
Duplicates a string.
char * gk_optarg
For communication arguments to the caller.
static gk_StringMap_t gtype_options[]
void * gk_malloc(size_t nbytes, char *msg)
static gk_StringMap_t ptype_options[]
Annotation for function names.
int gk_GetStringID(gk_StringMap_t *strmap, char *key)
int gk_getopt_long_only(int argc, char **argv, char *options, struct gk_option *long_options, int *opt_index)
Parse command-line arguments with only long options.