IOSS 2.0
Ioss_DecompositionUtils.h
Go to the documentation of this file.
1/*
2 * Copyright(C) 2024 National Technology & Engineering Solutions
3 * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
4 * NTESS, the U.S. Government retains certain rights in this software.
5 *
6 * See packages/seacas/LICENSE for details
7 */
8#pragma once
9
10#include "Ioss_ChainGenerator.h"
11#include "Ioss_CodeTypes.h"
12#include "Ioss_Region.h"
13#include <string>
14#include <vector>
15
16#include "ioss_export.h"
17
18namespace Ioss {
19 class IOSS_EXPORT DecompUtils
20 {
21 public:
22 static void output_histogram(const std::vector<size_t> &proc_work, double avg_work,
23 size_t median);
24
25 template <typename INT>
26 static void line_decomp_modify(const Ioss::chain_t<INT> &element_chains,
27 std::vector<int> &element_to_proc, int proc_count);
28
29 static std::vector<size_t> get_work_per_rank(const std::vector<int> &elem_to_proc,
30 int proc_count);
31 static std::pair<double, size_t>
32 output_decomposition_statistics(const std::vector<size_t> work_per_rank);
33
34 template <typename INT>
35 static std::vector<float> line_decomp_weights(const Ioss::chain_t<INT> &element_chains,
36 size_t element_count);
37
38 template <typename INT>
39 static void line_decompose(Region &region, size_t num_ranks, const std::string &method,
40 const std::string &surface_list, std::vector<int> &element_to_proc,
41 INT dummy);
42
43 template <typename INT>
44 static void decompose_zoltan(const Ioss::Region &region, int ranks, const std::string &method,
45 std::vector<int> &elem_to_proc, const std::vector<float> &weights,
46 bool ignore_x, bool ignore_y, bool ignore_z,
47 IOSS_MAYBE_UNUSED INT dummy);
48
49 template <typename INT>
50 static std::tuple<std::vector<double>, std::vector<double>, std::vector<double>>
51 get_element_centroid(const Ioss::Region &region, IOSS_MAYBE_UNUSED INT dummy);
52 };
53} // namespace Ioss
#define IOSS_MAYBE_UNUSED
Definition Ioss_CodeTypes.h:55
Definition Ioss_DecompositionUtils.h:20
static void line_decompose(Region &region, size_t num_ranks, const std::string &method, const std::string &surface_list, std::vector< int > &element_to_proc, INT dummy)
Definition Ioss_DecompositionUtils.C:339
static void output_histogram(const std::vector< size_t > &proc_work, double avg_work, size_t median)
Definition Ioss_DecompositionUtils.C:132
static std::pair< double, size_t > output_decomposition_statistics(const std::vector< size_t > work_per_rank)
Definition Ioss_DecompositionUtils.C:476
static std::vector< float > line_decomp_weights(const Ioss::chain_t< INT > &element_chains, size_t element_count)
Definition Ioss_DecompositionUtils.C:375
static std::vector< size_t > get_work_per_rank(const std::vector< int > &elem_to_proc, int proc_count)
Definition Ioss_DecompositionUtils.C:465
static std::tuple< std::vector< double >, std::vector< double >, std::vector< double > > get_element_centroid(const Ioss::Region &region, IOSS_MAYBE_UNUSED INT dummy)
Definition Ioss_DecompositionUtils.C:544
static void line_decomp_modify(const Ioss::chain_t< INT > &element_chains, std::vector< int > &element_to_proc, int proc_count)
Definition Ioss_DecompositionUtils.C:406
static void decompose_zoltan(const Ioss::Region &region, int ranks, const std::string &method, std::vector< int > &elem_to_proc, const std::vector< float > &weights, bool ignore_x, bool ignore_y, bool ignore_z, IOSS_MAYBE_UNUSED INT dummy)
Definition Ioss_DecompositionUtils.C:203
A grouping entity that contains other grouping entities.
Definition Ioss_Region.h:93
The main namespace for the Ioss library.
Definition Ioad_DatabaseIO.C:40
std::vector< chain_entry_t< INT > > chain_t
Definition Ioss_ChainGenerator.h:28