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);
50 auto &m = root_module;
52 shamlog_debug_ln(
"[Py]",
"registering shamrock.Patch");
54 py::class_<shamrock::patch::Patch>(m,
"Patch")
59 .def_readwrite(
"coord_min", &shamrock::patch::Patch::coord_min)
60 .def_readwrite(
"coord_max", &shamrock::patch::Patch::coord_max)
63 register_patch_transform_class<f64_3>(m,
"PatchCoordTransform_f64_3");
64 register_patch_transform_class<f32_3>(m,
"PatchCoordTransform_f32_3");
65 register_patch_transform_class<i64_3>(m,
"PatchCoordTransform_i64_3");
67 shamlog_debug_ln(
"[Py]",
"registering shamrock.Context");
69 py::class_<ShamrockCtx>(m,
"Context")
71 .def(
"pdata_layout_new", &ShamrockCtx::pdata_layout_new)
74 .def(
"pdata_layout_add_field", &ShamrockCtx::pdata_layout_add_field_t)
75 .def(
"pdata_layout_print", &ShamrockCtx::pdata_layout_print)
76 .def(
"init_sched", &ShamrockCtx::init_sched)
77 .def(
"close_sched", &ShamrockCtx::close_sched)
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(
"pdata_layout_print", &ShamrockCtx::pdata_layout_print)
82 .def(
"dump_status", &ShamrockCtx::dump_status)
85 [](
ShamrockCtx &self,
bool do_split_merge,
bool do_load_balancing) {
86 self.scheduler_step(do_split_merge, do_load_balancing);
88 py::arg(
"do_split_merge") =
true,
89 py::arg(
"do_load_balancing") =
true)
91 "set_coord_domain_bound",
92 [](
ShamrockCtx &ctx, std::array<f64, 3> min_vals, std::array<f64, 3> max_vals) {
93 ctx.set_coord_domain_bound(
94 {f64_3{min_vals[0], min_vals[1], min_vals[2]},
95 f64_3{max_vals[0], max_vals[1], max_vals[2]}});
100 auto data = ctx.allgather_data();
102 shamlog_info_ln(
"PatchScheduler",
"collected :", data.size(),
"patches");
109 append_to_map<f32>(fname, data, dic_out);
110 append_to_map<f32_2>(fname, data, dic_out);
111 append_to_map<f32_3>(fname, data, dic_out);
112 append_to_map<f32_4>(fname, data, dic_out);
113 append_to_map<f32_8>(fname, data, dic_out);
114 append_to_map<f32_16>(fname, data, dic_out);
115 append_to_map<f64>(fname, data, dic_out);
116 append_to_map<f64_2>(fname, data, dic_out);
117 append_to_map<f64_3>(fname, data, dic_out);
118 append_to_map<f64_4>(fname, data, dic_out);
119 append_to_map<f64_8>(fname, data, dic_out);
120 append_to_map<f64_16>(fname, data, dic_out);
121 append_to_map<u32>(fname, data, dic_out);
122 append_to_map<u64>(fname, data, dic_out);
123 append_to_map<u32_3>(fname, data, dic_out);
124 append_to_map<u64_3>(fname, data, dic_out);
125 append_to_map<i64_3>(fname, data, dic_out);
130 .def(
"get_patch_list_global", &ShamrockCtx::get_patch_list_global);
Header file for the patch struct and related function.
std::vector< std::string > get_field_names()
Get the list of field names.
namespace for the main framework
Pybind11 include and definitions.
#define ON_PYTHON_INIT
Register a Python module init function using static initialization.
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