5 #include <Zoltan2_config.h>
17 #ifdef HAVE_ZOLTAN2_SARMA
20 std::string alg =
"pal";
21 sarma::Order order_type = sarma::Order::NAT;
22 std::string order_str =
"nat";
23 Ordinal row_parts = 8, col_parts = 0;
25 int seed = 2147483647;
26 double sparsify = 1.0;
27 bool triangular =
false, use_data =
false;
30 const static std::vector<std::pair<Parameters, std::vector<Ordinal> > > expected = {
31 {{.alg=
"opal"}, {0, 48, 94, 143, 175, 218, 257, 295, 332, 0, 48, 94, 143, 175, 218, 257, 295, 332}}
34 auto testFromFile(
const RCP<
const Teuchos::Comm<int> > &comm,
int nparts, std::string &filename,
bool doRemap,
35 const Parameters sarma) {
36 int me = comm->getRank();
39 RCP<tcrsMatrix_t> matrix = userInputForTests.getUITpetraCrsMatrix();
40 RCP<const tcrsMatrix_t> matrixConst = rcp_const_cast<
const tcrsMatrix_t>(matrix);
45 #ifdef HAVE_ZOLTAN2_MPI
46 double begin = MPI_Wtime();
49 Teuchos::ParameterList params(
"test params");
50 params.set(
"debug_level",
"basic_status");
51 params.set(
"num_global_parts", nparts);
52 params.set(
"algorithm",
"sarma");
53 if (doRemap) params.set(
"remap_parts",
true);
54 Teuchos::ParameterList &zparams = params.sublist(
"zoltan_parameters",
false);
55 zparams.set(
"DEBUG_LEVEL",
"0");
58 Teuchos::ParameterList &sparams = params.sublist(
"sarma_parameters",
false);
59 sparams.set(
"alg", sarma.alg);
60 sparams.set(
"order", sarma.order_str);
61 sparams.set(
"row_parts", sarma.row_parts);
62 sparams.set(
"col_parts", sarma.col_parts);
63 sparams.set(
"max_load", sarma.max_load);
64 sparams.set(
"sparsify", sarma.sparsify);
65 sparams.set(
"triangular", sarma.triangular);
66 sparams.set(
"use_data", sarma.use_data);
67 sparams.set(
"seed", sarma.seed);
69 #ifdef HAVE_ZOLTAN2_MPI
74 if (me == 0) std::cout <<
"Problem constructed" << std::endl;
78 #ifdef HAVE_ZOLTAN2_MPI
80 std::cout <<
"Run-time:\t" << MPI_Wtime() - begin << std::endl;
82 return problem.getSolution();
86 int main(
int argc,
char *argv[]) {
87 #ifdef HAVE_ZOLTAN2_SARMA
88 Tpetra::ScopeGuard tscope(&argc, &argv);
89 RCP<const Teuchos::Comm<int> > tcomm = Tpetra::getDefaultComm();
95 std::string filename =
"USAir97";
99 for (
auto test : expected){
101 auto zsoln = testFromFile(tcomm, nParts, filename, doRemap, test.first);
105 const int *zparts = zsoln.getPartListView();
106 for (
unsigned i = 0; i < test.second.size(); ++i) {
107 if (zparts[i] != (
int) test.second[i]) {
108 std::cout <<
"FAIL" << std::endl;
114 std::cout <<
"PASS" << std::endl;
Provides access for Zoltan2 to Xpetra::CrsMatrix data.
int main(int narg, char **arg)
Defines the PartitioningSolution class.
common code used by tests
Defines the XpetraCrsMatrixAdapter class.
Zoltan2::BasicUserTypes< zscalar_t, zlno_t, zgno_t > myTypes_t
Tpetra::CrsMatrix< zscalar_t, zlno_t, zgno_t, znode_t > tcrsMatrix_t
PartitioningProblem sets up partitioning problems for the user.
Defines the PartitioningProblem class.
std::string testDataFilePath(".")