Template Struct ProcWorld¶
Defined in File ProcWorld.hpp
Struct Documentation¶
-
template<typename
Spec>
structdish2::ProcWorld¶ Public Types
Public Members
-
const double
dim_width{std::pow(dish2::num_cells_global(), 1.0 / dish2::cfg.N_DIMS())}¶
-
const netuit::Topology
topology= {topology_factory_t{}(dims)}¶
-
const bool
use_metis= !((dish2::num_cells_global() % uitsl::get_nprocs() == 0) && (dish2::num_cells_global() % total_threads == 0) && uitsl::is_perfect_hypercube(dish2::num_cells_global(), dish2::cfg.N_DIMS()) && uitsl::is_perfect_hypercube(uitsl::get_nprocs(), dish2::cfg.N_DIMS()) && uitsl::is_perfect_hypercube(total_threads, dish2::cfg.N_DIMS()))¶
-
const std::pair< std::function< uitsl::proc_id_t(size_t)>, std::function< uitsl::thread_id_t(size_t)> > assignments = use_metis ? netuit::GenerateMetisAssignmentFunctors( uitsl::safe_cast<size_t>( uitsl::get_nprocs() ), dish2::cfg.N_THREADS(), topology ) : std::pair{ netuit::AssignPerfectHypercube<uitsl::proc_id_t>( dish2::cfg.N_DIMS(), dish2::num_cells_global(), uitsl::get_nprocs() ), uitsl::ThreadUidNormalizer( netuit::AssignPerfectHypercube<uitsl::proc_id_t>( dish2::cfg.N_DIMS(), dish2::num_cells_global(), uitsl::get_nprocs() ), netuit::AssignPerfectHypercube<uitsl::thread_id_t>( dish2::cfg.N_DIMS(), dish2::num_cells_global(), total_threads ) ) }
-
netuit::Mesh<genome_mesh_spec_t>
genome_mesh{topology, assignments.second, assignments.first}¶
-
netuit::Mesh<message_mesh_spec_t>
message_mesh{topology, assignments.second, assignments.first}¶
-
netuit::Mesh<push_mesh_spec_t>
push_mesh{topology, assignments.second, assignments.first}¶
-
netuit::Mesh<quorum_mesh_spec_t>
quorum_mesh{topology, assignments.second, assignments.first}¶
-
netuit::Mesh<resource_mesh_spec_t>
resource_mesh{topology, assignments.second, assignments.first}¶
-
netuit::Mesh<state_mesh_spec_t>
state_mesh{topology, assignments.second, assignments.first}¶
-
const double