diff --git a/src/graph/GraphView.cpp b/src/graph/GraphView.cpp index cb44faa9066b042047e2ab235ffd4d47cfaa0c14..7b2de9bd601ade18850f5c47c968f3a9cfeb49b5 100644 --- a/src/graph/GraphView.cpp +++ b/src/graph/GraphView.cpp @@ -16,6 +16,7 @@ #include <numeric> #include "aidge/utils/Types.h" +#include "aidge/utils/Formatting.hpp" #include "aidge/graph/GraphView.hpp" #include "aidge/data/Tensor.hpp" #include "aidge/operator/OperatorTensor.hpp" @@ -103,13 +104,20 @@ void Aidge::GraphView::save(std::string path, bool verbose, bool showProducers) IOIndex_t inputIdx = 0; for (auto parent : child->inputs()) { if (parent.first == node_ptr && parent.second == outputIdx) { + // Add-on to display the operator's output dimensions + std::string dims = ""; + const auto op = std::dynamic_pointer_cast<OperatorTensor>(node_ptr->getOperator()); + if (op && !op->getOutput(outputIdx)->dims().empty()) { + dims += " " + print(op->getOutput(outputIdx)->dims(), "%u"); + } + if (mNodes.find(child) != mNodes.end()) { - std::fprintf(fp, "%s-->|%u→%u|%s\n", namePtrTable[node_ptr].c_str(), - outputIdx, inputIdx, namePtrTable[child].c_str()); + std::fprintf(fp, "%s-->|\"%u%s→%u\"|%s\n", namePtrTable[node_ptr].c_str(), + outputIdx, dims.c_str(), inputIdx, namePtrTable[child].c_str()); } else if (verbose) { - std::fprintf(fp, "%s-->|%u→%u|%p:::externalCls\n", namePtrTable[node_ptr].c_str(), - outputIdx, inputIdx, static_cast<void*>(child.get())); + std::fprintf(fp, "%s-->|\"%u%s→%u\"|%p:::externalCls\n", namePtrTable[node_ptr].c_str(), + outputIdx, dims.c_str(), inputIdx, static_cast<void*>(child.get())); } break; } @@ -130,9 +138,16 @@ void Aidge::GraphView::save(std::string path, bool verbose, bool showProducers) size_t outputIdx = 0; for (auto output : mOutputNodes) { - std::fprintf(fp, "%s--->|%u→|output%lu((out#%lu)):::outputCls\n", + // Add-on to display the operator's output dimensions + std::string dims = ""; + const auto op = std::dynamic_pointer_cast<OperatorTensor>(output.first->getOperator()); + if (op && !op->getOutput(output.second)->dims().empty()) { + dims += " " + print(op->getOutput(output.second)->dims(), "%u"); + } + + std::fprintf(fp, "%s--->|\"%u%s→\"|output%lu((out#%lu)):::outputCls\n", namePtrTable[output.first].c_str(), output.second, - outputIdx, outputIdx); + dims.c_str(), outputIdx, outputIdx); ++outputIdx; }