feat(preconditioner): major work on preconditioner system
first preconditioner MVP
This commit is contained in:
58
tests/mpi/mpi_test_main.cpp
Normal file
58
tests/mpi/mpi_test_main.cpp
Normal file
@@ -0,0 +1,58 @@
|
||||
#include <catch2/catch_session.hpp>
|
||||
#include <cstdint>
|
||||
#include <iostream>
|
||||
#include <mfem.hpp>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
int main(
|
||||
int argc,
|
||||
char *argv[]
|
||||
) {
|
||||
mfem::Mpi::Init(argc, argv);
|
||||
|
||||
const int rank = mfem::Mpi::WorldRank();
|
||||
std::vector<std::string> arguments;
|
||||
arguments.reserve(static_cast<std::size_t>(argc) + 6);
|
||||
for (int index = 0; index < argc; ++index) {
|
||||
arguments.emplace_back(argv[index]);
|
||||
}
|
||||
|
||||
arguments.emplace_back("--order");
|
||||
arguments.emplace_back("lex");
|
||||
arguments.emplace_back("--rng-seed");
|
||||
arguments.emplace_back("184467");
|
||||
|
||||
if (rank != 0) {
|
||||
arguments.emplace_back("--out");
|
||||
arguments.emplace_back("/dev/null");
|
||||
}
|
||||
|
||||
std::vector<const char *> catch_arguments;
|
||||
catch_arguments.reserve(arguments.size());
|
||||
for (const std::string &argument : arguments) {
|
||||
catch_arguments.push_back(argument.c_str());
|
||||
}
|
||||
|
||||
int local_result = 0;
|
||||
{
|
||||
Catch::Session session;
|
||||
if (const int parse_result =
|
||||
session.applyCommandLine(static_cast<int>(catch_arguments.size()), catch_arguments.data());
|
||||
parse_result != 0) {
|
||||
local_result = parse_result;
|
||||
} else {
|
||||
local_result = session.run();
|
||||
}
|
||||
}
|
||||
|
||||
int global_result = 0;
|
||||
MPI_Allreduce(&local_result, &global_result, 1, MPI_INT, MPI_MAX, MPI_COMM_WORLD);
|
||||
|
||||
if (rank == 0 && global_result != 0 && local_result == 0) {
|
||||
std::cerr << "At least one non-root MPI rank reported a test failure.\n";
|
||||
}
|
||||
|
||||
mfem::Mpi::Finalize();
|
||||
return global_result;
|
||||
}
|
||||
Reference in New Issue
Block a user