X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9d62905a9c7ddccca81ac0b1b51677b8798026ca..913c6a415bb94569081a13769ed15d521d3a0e4e:/src/instr/instr_paje_trace.cpp diff --git a/src/instr/instr_paje_trace.cpp b/src/instr/instr_paje_trace.cpp index e077289654..24d64506a5 100644 --- a/src/instr/instr_paje_trace.cpp +++ b/src/instr/instr_paje_trace.cpp @@ -10,6 +10,7 @@ #include "src/smpi/include/private.hpp" #include "typeinfo" #include "xbt/virtu.h" /* sg_cmdline */ +#include XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_paje_trace, instr, "tracing event system"); @@ -21,39 +22,35 @@ std::map tracing_files; // TI specific std::vector buffer; void buffer_debug(std::vector* buf); -void dump_comment (const char *comment) +void dump_comment(std::string comment) { - if (not strlen(comment)) + if (comment.empty()) return; - fprintf (tracing_file, "# %s\n", comment); + fprintf(tracing_file, "# %s\n", comment.c_str()); } -void dump_comment_file (const char *filename) +void dump_comment_file(std::string filename) { - if (not strlen(filename)) + if (filename.empty()) return; - FILE *file = fopen (filename, "r"); - if (not file) { - THROWF (system_error, 1, "Comment file %s could not be opened for reading.", filename); + std::ifstream* fs = new std::ifstream(); + fs->open(filename.c_str(), std::ifstream::in); + + if (fs->fail()) { + THROWF(system_error, 1, "Comment file %s could not be opened for reading.", filename.c_str()); } - while (not feof(file)) { - char c; - c = fgetc(file); - if (feof(file)) break; + while (not fs->eof()) { + std::string line; fprintf (tracing_file, "# "); - while (c != '\n'){ - fprintf (tracing_file, "%c", c); - c = fgetc(file); - if (feof(file)) break; - } - fprintf (tracing_file, "\n"); + std::getline(*fs, line); + fprintf(tracing_file, "%s", line.c_str()); } - fclose(file); + fs->close(); } double TRACE_last_timestamp_to_dump = 0; //dumps the trace file until the timestamp TRACE_last_timestamp_to_dump -void TRACE_paje_dump_buffer (int force) +void TRACE_paje_dump_buffer(bool force) { if (not TRACE_is_enabled()) return; @@ -79,7 +76,6 @@ void TRACE_paje_dump_buffer (int force) XBT_DEBUG("%s: ends", __FUNCTION__); } -void buffer_debug(std::vector* buf); void buffer_debug(std::vector* buf) { return; @@ -182,97 +178,6 @@ void TRACE_paje_end() { XBT_DEBUG("Filename %s is closed", filename); } -void simgrid::instr::Type::logContainerTypeDefinition() -{ - XBT_DEBUG("%s: event_type=%d", __FUNCTION__, simgrid::instr::PAJE_DefineContainerType); - //print it - if (instr_fmt_type == instr_fmt_paje) { - XBT_DEBUG("%s: event_type=%d, timestamp=%.*f", __FUNCTION__, simgrid::instr::PAJE_DefineContainerType, - TRACE_precision(), 0.); - stream << std::fixed << std::setprecision(TRACE_precision()); - stream << simgrid::instr::PAJE_DefineContainerType; - stream << " " << id_ << " " << father_->getId() << " " << name_; - print_row(); - } else if (instr_fmt_type == instr_fmt_TI) { - /* Nothing to do */ - } else { - THROW_IMPOSSIBLE; - } -} - -void simgrid::instr::Type::logVariableTypeDefinition() -{ - XBT_DEBUG("%s: event_type=%d", __FUNCTION__, simgrid::instr::PAJE_DefineVariableType); - - //print it - if (instr_fmt_type == instr_fmt_paje) { - XBT_DEBUG("%s: event_type=%d, timestamp=%.*f", __FUNCTION__, simgrid::instr::PAJE_DefineVariableType, - TRACE_precision(), 0.); - stream << std::fixed << std::setprecision(TRACE_precision()); - stream << simgrid::instr::PAJE_DefineVariableType; - stream << " " << id_ << " " << father_->getId() << " " << name_; - if (isColored()) - stream << " \"" << color_ << "\""; - print_row(); - } else if (instr_fmt_type == instr_fmt_TI) { - /* Nothing to do */ - } else { - THROW_IMPOSSIBLE; - } -} - -void simgrid::instr::Type::logStateTypeDefinition() -{ - //print it - if (instr_fmt_type == instr_fmt_paje) { - XBT_DEBUG("%s: event_type=%d, timestamp=%.*f", __FUNCTION__, simgrid::instr::PAJE_DefineStateType, - TRACE_precision(), 0.); - stream << std::fixed << std::setprecision(TRACE_precision()); - stream << simgrid::instr::PAJE_DefineStateType; - stream << " " << id_ << " " << father_->getId() << " " << name_; - print_row(); - } else if (instr_fmt_type == instr_fmt_TI) { - /* Nothing to do */ - } else { - THROW_IMPOSSIBLE; - } -} - -void simgrid::instr::Type::logDefineEventType() -{ - //print it - if (instr_fmt_type == instr_fmt_paje) { - XBT_DEBUG("%s: event_type=%d, timestamp=%.*f", __FUNCTION__, simgrid::instr::PAJE_DefineEventType, - TRACE_precision(), 0.); - stream << std::fixed << std::setprecision(TRACE_precision()); - stream << simgrid::instr::PAJE_DefineEventType; - stream << " " << id_ << " " << father_->getId() << " " << name_; - print_row(); - } else if (instr_fmt_type == instr_fmt_TI) { - /* Nothing to do */ - } else { - THROW_IMPOSSIBLE; - } -} - -void simgrid::instr::Type::logLinkTypeDefinition(simgrid::instr::Type* source, simgrid::instr::Type* dest) -{ - XBT_DEBUG("%s: event_type=%d", __FUNCTION__, simgrid::instr::PAJE_DefineLinkType); - //print it - if (instr_fmt_type == instr_fmt_paje) { - XBT_DEBUG("%s: event_type=%d, timestamp=%.*f", __FUNCTION__, simgrid::instr::PAJE_DefineLinkType, TRACE_precision(), - 0.); - stream << std::fixed << std::setprecision(TRACE_precision()); - stream << simgrid::instr::PAJE_DefineLinkType; - stream << " " << id_ << " " << father_->getId() << " " << source->getId() << " " << dest->getId() << " " << name_; - print_row(); - } else if (instr_fmt_type == instr_fmt_TI) { - /* Nothing to do */ - } else { - THROW_IMPOSSIBLE; - } -} - void simgrid::instr::Value::print() { XBT_DEBUG("%s: event_type=%d", __FUNCTION__, simgrid::instr::PAJE_DefineEntityValue); @@ -291,7 +196,6 @@ void simgrid::instr::Value::print() } } - simgrid::instr::SetVariableEvent::SetVariableEvent(double timestamp, container_t container, Type* type, double value) : simgrid::instr::PajeEvent::PajeEvent(container, type, timestamp, PAJE_SetVariable), value(value) { @@ -306,7 +210,7 @@ void simgrid::instr::SetVariableEvent::print() stream << std::fixed << std::setprecision(TRACE_precision()); stream << (int)this->eventType_; print_timestamp(this); - stream << " " << type->getId() << " " << container->id_ << " " << value; + stream << " " << type->getId() << " " << container->getId() << " " << value; print_row(); } else if (instr_fmt_type == instr_fmt_TI) { /* Nothing to do */ @@ -330,7 +234,7 @@ void simgrid::instr::AddVariableEvent::print() stream << std::fixed << std::setprecision(TRACE_precision()); stream << (int)this->eventType_; print_timestamp(this); - stream << " " << type->getId() << " " << container->id_ << " " << value; + stream << " " << type->getId() << " " << container->getId() << " " << value; print_row(); } else if (instr_fmt_type == instr_fmt_TI) { /* Nothing to do */ @@ -353,7 +257,7 @@ void simgrid::instr::SubVariableEvent::print() stream << std::fixed << std::setprecision(TRACE_precision()); stream << (int)this->eventType_; print_timestamp(this); - stream << " " << type->getId() << " " << container->id_ << " " << value; + stream << " " << type->getId() << " " << container->getId() << " " << value; print_row(); } else if (instr_fmt_type == instr_fmt_TI) { /* Nothing to do */ @@ -384,7 +288,7 @@ void simgrid::instr::SetStateEvent::print() stream << std::fixed << std::setprecision(TRACE_precision()); stream << (int)this->eventType_; print_timestamp(this); - stream << " " << type->getId() << " " << container->id_; + stream << " " << type->getId() << " " << container->getId(); stream << " " << value->getId(); #if HAVE_SMPI if (xbt_cfg_get_boolean("smpi/trace-call-location")) { @@ -419,6 +323,7 @@ simgrid::instr::PushStateEvent::PushStateEvent(double timestamp, container_t con simgrid::instr::PushStateEvent::PushStateEvent(double timestamp, container_t container, Type* type, Value* val) : PushStateEvent(timestamp, container, type, val, nullptr) {} + void simgrid::instr::PushStateEvent::print() { if (instr_fmt_type == instr_fmt_paje) { @@ -426,7 +331,7 @@ void simgrid::instr::PushStateEvent::print() stream << std::fixed << std::setprecision(TRACE_precision()); stream << (int)this->eventType_; print_timestamp(this); - stream << " " << type->getId() << " " << container->id_; + stream << " " << type->getId() << " " << container->getId(); stream << " " << value->getId(); if (TRACE_display_sizes()) { @@ -458,10 +363,10 @@ void simgrid::instr::PushStateEvent::print() char* process_id = nullptr; // FIXME: dirty extract "rank-" from the name, as we want the bare process id here - if (strstr(container->name_.c_str(), "rank-") == nullptr) - process_id = xbt_strdup(container->name_.c_str()); + if (container->getName().find("rank-") != 0) + process_id = xbt_strdup(container->getCname()); else - process_id = xbt_strdup(container->name_.c_str() + 5); + process_id = xbt_strdup(container->getCname() + 5); FILE* trace_file = tracing_files.at(container); @@ -599,7 +504,7 @@ void simgrid::instr::PopStateEvent::print() stream << std::fixed << std::setprecision(TRACE_precision()); stream << (int)this->eventType_; print_timestamp(this); - stream << " " << type->getId() << " " << container->id_; + stream << " " << type->getId() << " " << container->getId(); print_row(); } else if (instr_fmt_type == instr_fmt_TI) { /* Nothing to do */ @@ -623,7 +528,7 @@ void simgrid::instr::ResetStateEvent::print() stream << std::fixed << std::setprecision(TRACE_precision()); stream << (int)this->eventType_; print_timestamp(this); - stream << " " << type->getId() << " " << container->id_; + stream << " " << type->getId() << " " << container->getId(); print_row(); } else if (instr_fmt_type == instr_fmt_TI) { /* Nothing to do */ @@ -657,8 +562,8 @@ void simgrid::instr::StartLinkEvent::print() stream << std::fixed << std::setprecision(TRACE_precision()); stream << (int)this->eventType_; print_timestamp(this); - stream << " " << type->getId() << " " << container->id_ << " " << value_; - stream << " " << sourceContainer_->id_ << " " << key_; + stream << " " << type->getId() << " " << container->getId() << " " << value_; + stream << " " << sourceContainer_->getId() << " " << key_; if (TRACE_display_sizes()) { stream << " " << size_; @@ -689,8 +594,8 @@ void simgrid::instr::EndLinkEvent::print() stream << std::fixed << std::setprecision(TRACE_precision()); stream << (int)this->eventType_; print_timestamp(this); - stream << " " << type->getId() << " " << container->id_ << " " << value; - stream << " " << destContainer->id_ << " " << key; + stream << " " << type->getId() << " " << container->getId() << " " << value; + stream << " " << destContainer->getId() << " " << key; print_row(); } else if (instr_fmt_type == instr_fmt_TI) { /* Nothing to do */ @@ -716,7 +621,7 @@ void simgrid::instr::NewEvent::print() stream << std::fixed << std::setprecision(TRACE_precision()); stream << (int)this->eventType_; print_timestamp(this); - stream << " " << type->getId() << " " << container->id_ << " " << val->getId(); + stream << " " << type->getId() << " " << container->getId() << " " << val->getId(); print_row(); } else if (instr_fmt_type == instr_fmt_TI) { /* Nothing to do */