fpmas-metamodel 1.0
Loading...
Searching...
No Matches
output.h
Go to the documentation of this file.
1#pragma once
2
3#include "fpmas/io/json_output.h"
4#include "agent.h"
5
11class BasicMetaModelFactory;
12class BasicMetaModel;
13
14
52 public fpmas::io::FileOutput,
53 public fpmas::io::CsvOutput<
54 fpmas::scheduler::Date, // Time Step
55 unsigned int, // Partitioning time
56 unsigned int, // Distribution time
57 float, // Local Agents
58 float, // Local cells
59 float, // Distant agent->agent edges
60 float, // Distant agent->cell edges
61 float, // Distant cell->cell edges
62 unsigned int, // LOCAL Cell->Cell read time
63 unsigned int, // LOCAL Cell->Cell read count
64 unsigned int, // LOCAL Cell->Cell write time
65 unsigned int, // LOCAL Cell->Cell write count
66 unsigned int, // DISTANT Cell->Cell read time
67 unsigned int, // DISTANT Cell->Cell read count
68 unsigned int, // DISTANT Cell->Cell write time
69 unsigned int, // DISTANT Cell->Cell write count
70 unsigned int // Sync time
71 > {
72 private:
73 fpmas::scheduler::detail::LambdaTask commit_probes_task;
74 fpmas::scheduler::detail::LambdaTask clear_monitor_task;
75 fpmas::scheduler::Job commit_probes_job {{commit_probes_task}};
76 fpmas::scheduler::Job clear_monitor_job {{clear_monitor_task}};
77 fpmas::scheduler::JobList _jobs;
78
79 public:
98 BasicMetaModel& meta_model,
99 fpmas::api::utils::perf::Probe& balance_probe,
100 fpmas::api::utils::perf::Probe& distribute_probe,
101 fpmas::api::utils::perf::Probe& local_read_probe,
102 fpmas::api::utils::perf::Probe& local_write_probe,
103 fpmas::api::utils::perf::Probe& distant_read_probe,
104 fpmas::api::utils::perf::Probe& distant_write_probe,
105 fpmas::api::utils::perf::Probe& sync_probe,
106 fpmas::api::utils::perf::Monitor& monitor
107 );
108
112 const fpmas::scheduler::JobList& jobs() {
113 return _jobs;
114 }
115 };
116
117
127class CellsUtilityOutput : public fpmas::io::OutputBase {
128 private:
129 fpmas::io::FileOutput output_file;
130 BasicMetaModel& model;
131 std::size_t grid_width;
132 std::size_t grid_height;
133
134 public:
143 BasicMetaModel& model,
144 std::size_t grid_width,
145 std::size_t grid_height) :
146 fpmas::io::OutputBase(output_file),
147 output_file("grid.json"),
148 model(model), grid_width(grid_width), grid_height(grid_height) {
149 }
150
156 void dump() override;
157};
158
169class CellsLocationOutput : public fpmas::io::OutputBase {
170 private:
171 fpmas::io::DynamicFileOutput output_file;
172 BasicMetaModel& meta_model;
173 std::size_t grid_width;
174 std::size_t grid_height;
175
176 std::vector<std::vector<int>> gather_cells();
177
178 public:
188 BasicMetaModel& meta_model,
189 std::string filename,
190 std::size_t grid_width, std::size_t grid_height
191 );
192
198 void dump() override;
199};
200
210class GraphStatsOutput : public fpmas::io::DistributedCsvOutput<
211 // Two local fields, dumped only on process 0
212 fpmas::io::Local<float>,
213 fpmas::io::Local<float>
214 > {
215 private:
216 fpmas::io::FileOutput output_file;
217
218 public:
226 BasicMetaModel& model,
227 std::string file_name
228 );
229};
230
238 DistributedId id;
242 std::deque<DistributedId> contacts;
246 std::vector<DistributedId> perceptions;
247
254};
255
263 DiscretePoint location;
264
271};
272
280 DistributedId id;
284 int rank;
285
291 DistantAgentView(const fpmas::api::model::Agent* agent);
292};
293
301 int rank;
305 std::size_t grid_width;
309 std::size_t grid_height;
313 std::vector<MetaGridAgentView> agents;
317 std::vector<DistantAgentView> distant_agents;
318
323 int rank, std::size_t grid_width, std::size_t grid_height,
324 std::vector<MetaGridAgentView> agents,
325 std::vector<DistantAgentView> distant_agents
326 );
327};
328
329
359class AgentsOutput : public fpmas::io::JsonOutput<AgentsOutputView> {
360 private:
361 fpmas::io::DynamicFileOutput output_file;
362
363 public:
368 BasicMetaModel& model,
369 std::size_t grid_width, std::size_t grid_height
370 );
371};
372
373namespace nlohmann {
377 template<>
378 struct adl_serializer<MetaAgentView> {
382 static void to_json(nlohmann::json& json, const MetaAgentView& agent);
383 };
387 template<>
388 struct adl_serializer<MetaGridAgentView> {
392 static void to_json(nlohmann::json& json, const MetaGridAgentView& agent);
393 };
397 template<>
398 struct adl_serializer<DistantAgentView> {
402 static void to_json(nlohmann::json& json, const DistantAgentView& agent);
403 };
407 template<>
408 struct adl_serializer<AgentsOutputView> {
412 static void to_json(nlohmann::json& json, const AgentsOutputView& agent_output);
413 };
414}
Definition: output.h:359
AgentsOutput(BasicMetaModel &model, std::size_t grid_width, std::size_t grid_height)
Definition: metamodel.h:17
Definition: output.h:169
void dump() override
CellsLocationOutput(BasicMetaModel &meta_model, std::string filename, std::size_t grid_width, std::size_t grid_height)
Definition: output.h:127
void dump() override
CellsUtilityOutput(BasicMetaModel &model, std::size_t grid_width, std::size_t grid_height)
Definition: output.h:142
Definition: output.h:214
GraphStatsOutput(BasicMetaModel &model, std::string file_name)
Definition: agent.h:105
Definition: agent.h:422
Definition: output.h:71
MetaModelCsvOutput(BasicMetaModel &meta_model, fpmas::api::utils::perf::Probe &balance_probe, fpmas::api::utils::perf::Probe &distribute_probe, fpmas::api::utils::perf::Probe &local_read_probe, fpmas::api::utils::perf::Probe &local_write_probe, fpmas::api::utils::perf::Probe &distant_read_probe, fpmas::api::utils::perf::Probe &distant_write_probe, fpmas::api::utils::perf::Probe &sync_probe, fpmas::api::utils::perf::Monitor &monitor)
const fpmas::scheduler::JobList & jobs()
Definition: output.h:112
Definition: output.h:297
AgentsOutputView(int rank, std::size_t grid_width, std::size_t grid_height, std::vector< MetaGridAgentView > agents, std::vector< DistantAgentView > distant_agents)
std::size_t grid_height
Definition: output.h:309
int rank
Definition: output.h:301
std::vector< DistantAgentView > distant_agents
Definition: output.h:317
std::size_t grid_width
Definition: output.h:305
std::vector< MetaGridAgentView > agents
Definition: output.h:313
Definition: output.h:276
int rank
Definition: output.h:284
DistantAgentView(const fpmas::api::model::Agent *agent)
DistributedId id
Definition: output.h:280
Definition: output.h:234
std::vector< DistributedId > perceptions
Definition: output.h:246
std::deque< DistributedId > contacts
Definition: output.h:242
MetaAgentView(const MetaAgentBase *agent)
DistributedId id
Definition: output.h:238
Definition: output.h:259
MetaGridAgentView(const MetaGridAgent *agent)
DiscretePoint location
Definition: output.h:263
static void to_json(nlohmann::json &json, const AgentsOutputView &agent_output)
static void to_json(nlohmann::json &json, const DistantAgentView &agent)
static void to_json(nlohmann::json &json, const MetaAgentView &agent)
static void to_json(nlohmann::json &json, const MetaGridAgentView &agent)