- std::map<std::string, Type*> children_;
- std::map<std::string, Value*> values_; // valid for all types except variable and container
-
- Type(std::string name, std::string alias, std::string color, e_entity_types kind, Type* father);
- ~Type();
-
- std::string getName() { return name_; }
- const char* getCname() { return name_.c_str(); }
- const char* getId() { return id_.c_str(); }
- e_entity_types getKind() { return kind_; }
- bool isColored() { return not color_.empty(); }
-
- Type* byName(std::string name);
-
- Type* getOrCreateContainerType(std::string name);
- Type* getOrCreateEventType(std::string name);
- Type* getOrCreateLinkType(std::string name, Type* source, Type* dest);
- Type* getOrCreateStateType(std::string name);
- Type* getOrCreateVariableType(std::string name, std::string color);
-
- void addEntityValue(std::string name, std::string color);
- void addEntityValue(std::string name);
- Value* getEntityValue(std::string name);
-
- void logContainerTypeDefinition();
- void logVariableTypeDefinition();
- void logStateTypeDefinition();
- void logLinkTypeDefinition(simgrid::instr::Type* source, simgrid::instr::Type* dest);
- void logDefineEventType();
-
- static Type* createRootType();
- static Type* getRootType();
+ int endpoint = 0;
+ int send_size = 0;
+ std::shared_ptr<std::vector<int>> sendcounts = nullptr;
+ int recv_size = 0;
+ std::shared_ptr<std::vector<int>> recvcounts = nullptr;
+ std::string send_type = "";
+ std::string recv_type = "";
+
+ // NoOpTI: init, finalize, test, wait, barrier
+ explicit TIData(const std::string& name) : name_(name){};
+ // CPuTI: compute, sleep (+ waitAny and waitall out of laziness)
+ explicit TIData(const std::string& name, double amount) : name_(name), amount_(amount){};
+ // Pt2PtTI: send, isend, sssend, issend, recv, irecv
+ explicit TIData(const std::string& name, int endpoint, int size, const std::string& datatype)
+ : name_(name), endpoint(endpoint), send_size(size), send_type(datatype){};
+ // CollTI: bcast, reduce, allreduce, gather, scatter, allgather, alltoall
+ explicit TIData(const std::string& name, int root, double amount, int send_size, int recv_size,
+ const std::string& send_type, const std::string& recv_type)
+ : name_(name)
+ , amount_(amount)
+ , endpoint(root)
+ , send_size(send_size)
+ , recv_size(recv_size)
+ , send_type(send_type)
+ , recv_type(recv_type){};
+ // VarCollTI: gatherv, scatterv, allgatherv, alltoallv (+ reducescatter out of laziness)
+ explicit TIData(const std::string& name, int root, int send_size, std::vector<int>* sendcounts, int recv_size,
+ std::vector<int>* recvcounts, const std::string& send_type, const std::string& recv_type)
+ : TIData(name, root, send_size, std::shared_ptr<std::vector<int>>(sendcounts), recv_size,
+ std::shared_ptr<std::vector<int>>(recvcounts), send_type, recv_type){};
+
+ explicit TIData(const std::string& name, int root, int send_size, std::shared_ptr<std::vector<int>> sendcounts,
+ int recv_size, std::shared_ptr<std::vector<int>> recvcounts, const std::string& send_type,
+ const std::string& recv_type)
+ : name_(name)
+ , endpoint(root)
+ , send_size(send_size)
+ , sendcounts(sendcounts)
+ , recv_size(recv_size)
+ , recvcounts(recvcounts)
+ , send_type(send_type)
+ , recv_type(recv_type){};
+
+ virtual ~TIData() {}
+
+ const std::string& getName() const { return name_; }
+ double getAmount() { return amount_; }
+ virtual std::string print() = 0;
+ virtual std::string display_size() = 0;