SOPT
Sparse OPTimisation
mpi_session.cc
Go to the documentation of this file.
1 #define CATCH_CONFIG_RUNNER
2 #include <iterator>
3 #include <regex>
4 #include <vector>
5 #include "catch2/catch_all.hpp"
6 #include "sopt/logging.h"
7 #include "sopt/mpi/session.h"
8 using namespace sopt;
9 
10 std::vector<char const *> cargs;
11 TEST_CASE("Create/delete session") {
12  CHECK(mpi::initialized() == false);
13  CHECK(mpi::finalized() == false);
14  auto session = mpi::init(cargs.size(), cargs.data());
15  CHECK(mpi::initialized() == true);
16  CHECK(mpi::finalized() == false);
17  session.reset();
18  CHECK(mpi::initialized() == true);
19  CHECK(mpi::finalized() == true);
20 }
21 
22 int main(int argc, const char **argv) {
23  Catch::Session session; // There must be exactly once instance
24 
25  // Removes output qualifiers from arguments
26  auto avoid = false;
27  auto const N = std::string("--out=").size();
28  std::vector<std::string> const args(argv, argv + argc);
29  for (auto const &arg : args)
30  if (avoid)
31  avoid = false;
32  else if (arg == "-o" or arg == "--out")
33  avoid = true;
34  else if (arg.size() < N or arg.substr(0, N) != "--out=")
35  cargs.push_back(arg.c_str());
36 
37  auto const returnCode = session.applyCommandLine(cargs.size(), const_cast<char **>(cargs.data()));
38  if (returnCode != 0) // Indicates a command line error
39  return returnCode;
40 
41  auto const result = session.run();
42  return result;
43 }
constexpr auto N
Definition: wavelets.cc:57
int main(int argc, const char **argv)
Definition: mpi_session.cc:22
std::vector< char const * > cargs
Definition: mpi_session.cc:10
TEST_CASE("Create/delete session")
Definition: mpi_session.cc:11
bool finalized()
Definition: session.cc:71
std::shared_ptr< details::initializer > init(int argc, const char **argv)
Definition: session.cc:27
bool initialized()
Definition: session.cc:61