25#include <pybind11/numpy.h>
26#include <pybind11/pybind11.h>
30inline void register_patch_transform_class(py::module &m, std::string name) {
32 shamlog_debug_ln(
"[Py]",
"registering", name);
36 py::class_<Tclass>(m, name.c_str())
40 auto tmp = self.to_obj_coord(p);
44 auto tmp = self.to_obj_coord(p);
51 shamlog_debug_ln(
"[Py]",
"registering shamrock.Patch");
53 py::class_<shamrock::patch::Patch>(m,
"Patch")
58 .def_readwrite(
"coord_min", &shamrock::patch::Patch::coord_min)
59 .def_readwrite(
"coord_max", &shamrock::patch::Patch::coord_max)
62 register_patch_transform_class<f64_3>(m,
"PatchCoordTransform_f64_3");
63 register_patch_transform_class<f32_3>(m,
"PatchCoordTransform_f32_3");
64 register_patch_transform_class<i64_3>(m,
"PatchCoordTransform_i64_3");
66 shamlog_debug_ln(
"[Py]",
"registering shamrock.Context");
68 py::class_<ShamrockCtx>(m,
"Context")
70 .def(
"pdata_layout_new", &ShamrockCtx::pdata_layout_new)
73 .def(
"pdata_layout_add_field", &ShamrockCtx::pdata_layout_add_field_t)
74 .def(
"pdata_layout_print", &ShamrockCtx::pdata_layout_print)
75 .def(
"init_sched", &ShamrockCtx::init_sched)
76 .def(
"close_sched", &ShamrockCtx::close_sched)
77 .def(
"pdata_layout_print", &ShamrockCtx::pdata_layout_print)
78 .def(
"pdata_layout_print", &ShamrockCtx::pdata_layout_print)
79 .def(
"pdata_layout_print", &ShamrockCtx::pdata_layout_print)
80 .def(
"pdata_layout_print", &ShamrockCtx::pdata_layout_print)
81 .def(
"dump_status", &ShamrockCtx::dump_status)
84 [](
ShamrockCtx &self,
bool do_split_merge,
bool do_load_balancing) {
85 self.scheduler_step(do_split_merge, do_load_balancing);
87 py::arg(
"do_split_merge") =
true,
88 py::arg(
"do_load_balancing") =
true)
90 "set_coord_domain_bound",
91 [](
ShamrockCtx &ctx, std::array<f64, 3> min_vals, std::array<f64, 3> max_vals) {
92 ctx.set_coord_domain_bound(
93 {f64_3{min_vals[0], min_vals[1], min_vals[2]},
94 f64_3{max_vals[0], max_vals[1], max_vals[2]}});
99 auto data = ctx.allgather_data();
101 shamlog_info_ln(
"PatchScheduler",
"collected :", data.size(),
"patches");
107 for (
auto fname : ctx.pdl->get_field_names()) {
108 append_to_map<f32>(fname, data, dic_out);
109 append_to_map<f32_2>(fname, data, dic_out);
110 append_to_map<f32_3>(fname, data, dic_out);
111 append_to_map<f32_4>(fname, data, dic_out);
112 append_to_map<f32_8>(fname, data, dic_out);
113 append_to_map<f32_16>(fname, data, dic_out);
114 append_to_map<f64>(fname, data, dic_out);
115 append_to_map<f64_2>(fname, data, dic_out);
116 append_to_map<f64_3>(fname, data, dic_out);
117 append_to_map<f64_4>(fname, data, dic_out);
118 append_to_map<f64_8>(fname, data, dic_out);
119 append_to_map<f64_16>(fname, data, dic_out);
120 append_to_map<u32>(fname, data, dic_out);
121 append_to_map<u64>(fname, data, dic_out);
122 append_to_map<u32_3>(fname, data, dic_out);
123 append_to_map<u64_3>(fname, data, dic_out);
124 append_to_map<i64_3>(fname, data, dic_out);
129 .def(
"get_patch_list_global", &ShamrockCtx::get_patch_list_global);
Header file for the patch struct and related function.
namespace for the main framework
Pybind11 include and definitions.
#define Register_pymod(placeholdername)
Register a python module init function using static initialisation.
Axis-Aligned bounding box.
Patch object that contain generic patch information.
u64 pack_node_index
this value mean "to pack with index xxx in the global patch table" and not "to pack with id_pach == x...
u32 node_owner_id
node rank owner of this patch
u64 load_value
if synchronized contain the load value of the patch
u64 id_patch
unique key that identify the patch