diff --git a/miniapp/miniapp.cpp b/miniapp/miniapp.cpp index 354bdbf7605c4338642f65004bd5ff3f17108f3f..9fc09cefe6c0f8003f71e778b493f0864af4f9fa 100644 --- a/miniapp/miniapp.cpp +++ b/miniapp/miniapp.cpp @@ -9,18 +9,7 @@ #include "threading/threading.hpp" #include "profiling/profiler.hpp" #include "communication/communicator.hpp" -#include "communication/serial_global_policy.hpp" - -#ifdef WITH_MPI - -#include "communication/mpi_global_policy.hpp" -using global_policy = nest::mc::communication::mpi_global_policy; - -#else - -using global_policy = nest::mc::communication::serial_global_policy; - -#endif +#include "communication/global_policy.hpp" using namespace nest; @@ -30,28 +19,10 @@ using id_type = uint32_t; using numeric_cell = mc::fvm::fvm_cell<real_type, index_type>; using cell_group = mc::cell_group<numeric_cell>; +using global_policy = nest::mc::communication::global_policy; using communicator_type = mc::communication::communicator<global_policy>; -template <typename Policy> -struct policy_guard { - policy_guard(int argc, char **&argv) { - Policy::setup(argc, argv); - } - - policy_guard() = delete; - policy_guard(policy_guard &&) = delete; - policy_guard(const policy_guard &) = delete; - policy_guard &operator=(policy_guard &&) = delete; - policy_guard &operator=(const policy_guard &) = delete; - - ~policy_guard() { - Policy::teardown(); - } -}; - -using global_policy_guard = policy_guard<global_policy>; - struct model { communicator_type communicator; std::vector<cell_group> cell_groups; @@ -161,7 +132,7 @@ void all_to_all_model(nest::mc::io::options& opt, model& m); // main /////////////////////////////////////// int main(int argc, char** argv) { - global_policy_guard _(argc, argv); + nest::mc::communication::global_policy_guard(argc, argv); setup(); diff --git a/src/communication/global_policy.hpp b/src/communication/global_policy.hpp new file mode 100644 index 0000000000000000000000000000000000000000..b771e8ed24d5d022b6a23cc7d77171ca477a7dbf --- /dev/null +++ b/src/communication/global_policy.hpp @@ -0,0 +1,42 @@ +#pragma once + +#ifdef WITH_MPI + #include "communication/mpi_global_policy.hpp" +#else + #include "communication/serial_global_policy.hpp" +#endif + +namespace nest { +namespace mc { +namespace communication { + +#ifdef WITH_MPI +using global_policy = nest::mc::communication::mpi_global_policy; +#else +using global_policy = nest::mc::communication::serial_global_policy; +#endif + +template <typename Policy> +struct policy_guard { + using policy_type = Policy; + + policy_guard(int argc, char**& argv) { + policy_type::setup(argc, argv); + } + + policy_guard() = delete; + policy_guard(policy_guard&&) = delete; + policy_guard(const policy_guard&) = delete; + policy_guard& operator=(policy_guard&&) = delete; + policy_guard& operator=(const policy_guard&) = delete; + + ~policy_guard() { + Policy::teardown(); + } +}; + +using global_policy_guard = policy_guard<global_policy>; + +} // namespace communication +} // namespace mc +} // namespace nest