Program Listing for File setup.hpp¶
↰ Return to documentation for file (include/dish2/config/setup.hpp)
#pragma once
#ifndef DISH2_CONFIG_SETUP_HPP_INCLUDE
#define DISH2_CONFIG_SETUP_HPP_INCLUDE
#include <limits>
#include <string>
#include "../../../third-party/conduit/include/uitsl/mpi/comm_utils.hpp"
#include "../../../third-party/conduit/include/uitsl/mpi/mpi_flex_guard.hpp"
#include "../../../third-party/Empirical/include/emp/base/vector.hpp"
#include "../../../third-party/Empirical/include/emp/config/ArgManager.hpp"
#include "../run/setup_thread_local_random.hpp"
#include "dump_config.hpp"
#include "print_assets.hpp"
#include "print_config.hpp"
#include "print_pwd.hpp"
#include "setup_assets.hpp"
#include "setup_config.hpp"
namespace dish2 {
void setup( emp::ArgManager arg_manager ) {
if (
(arg_manager.ViewArg("N_THREADS").empty() && dish2::cfg.N_THREADS() == 1)
|| arg_manager.ViewArg("N_THREADS").back() == emp::vector<std::string>{"1"}
) uitsl::mpi_flex_guard.InitSingleThread();
else uitsl::mpi_flex_guard.InitMultithread();
setup_assets( arg_manager );
setup_config( arg_manager );
if ( uitsl::is_root() ) {
print_pwd();
print_assets();
print_config();
}
dump_config();
// setup main thread thread local random
dish2::setup_thread_local_random();
}
} // namespace dish2
#endif // #ifndef DISH2_CONFIG_SETUP_HPP_INCLUDE