Isorropia: Partitioning, Load Balancing and more
Isorropia is a package for combinatorial scientific computing, with focus on partitioning (load balancing), but also supports coloring and ordering. Its main purpose is to assist with redistributing objects such as matrices and matrix-graphs in a parallel execution setting, to allow for more efficient computations. Isorropia produces good maps for Epetra matrices/graphs. Isorropia should be called after the matrix/graph is filled, so the sparsity pattern is known.
Isorropia is primarily a matrix-based interface to the Zoltan toolkit. If you wish to use third-party libraries (such as ParMetis or PT-Scotch) with Isorropia, please see the configure options for Zoltan.
Isorropia currently contains algorithms for four main problems. In the case of sparse matrices, these problems can each be viewed as a combinatorial problem based on graphs:
Isorropia contains separate classes to solve each of these problems, all of which derive from Isorropia::Operator and Isorropia::Epetra::Operator. Note that an operator in Isorropia is different from an operator in Epetra!
Isorropia has a fairly small number of parameters, listed below. (Default values in all caps.) Isorropia parameters are case insensitive. For more specific control of low-level features, you may set a Zoltan parameter. Isorropia will pass any parameter in the Zoltan sublist to Zoltan. Note that all Zoltan parameter values must be strings (for example, the integer 2 should be passed as "2"), and currently this is also true for Isorropia parameters.