[NGraph] VisualizeTree denormal visualization (#4411)
* [NGraph] VisualizeTree denormal visualization * [NGraph] VisualizeTree: constant values fix * comment fix
This commit is contained in:
parent
61102d63cc
commit
c367b3f22e
@ -2,6 +2,7 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
|
||||
#include <cmath>
|
||||
#include <fstream>
|
||||
|
||||
#include "ngraph/env_util.hpp"
|
||||
@ -248,7 +249,6 @@ void pass::VisualizeTree::add_node_arguments(shared_ptr<Node> node,
|
||||
{
|
||||
m_node_modifiers(*arg, attributes);
|
||||
}
|
||||
m_ss << " " << clone_name << " -> " << node->get_name();
|
||||
m_ss << " " << clone_name << "[";
|
||||
for (auto attr : attributes)
|
||||
{
|
||||
@ -256,7 +256,8 @@ void pass::VisualizeTree::add_node_arguments(shared_ptr<Node> node,
|
||||
}
|
||||
m_ss << "]\n";
|
||||
|
||||
m_ss << label_edge(arg, node, arg_index, jump_distance) << "\n";
|
||||
m_ss << " " << clone_name << " -> " << node->get_name()
|
||||
<< label_edge(arg, node, arg_index, jump_distance) << "\n";
|
||||
fake_node_ctr++;
|
||||
}
|
||||
else if (jump_distance > max_jump_distance)
|
||||
@ -336,18 +337,65 @@ static std::string pretty_partial_shape(const PartialShape& shape)
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
static std::string pretty_min_max_denormal_value(const vector<T>& values)
|
||||
{
|
||||
std::stringstream ss;
|
||||
|
||||
T min_value = values[0];
|
||||
T max_value = values[0];
|
||||
size_t denormal_counts = 0ul;
|
||||
std::stringstream denormal_ss;
|
||||
for (size_t i = 0; i < values.size(); ++i)
|
||||
{
|
||||
const auto& value = values[i];
|
||||
if (min_value > value)
|
||||
{
|
||||
min_value = value;
|
||||
}
|
||||
if (max_value < value)
|
||||
{
|
||||
max_value = value;
|
||||
}
|
||||
|
||||
const auto abs_value = std::abs(static_cast<double>(value));
|
||||
if (((abs_value > 0.) && (abs_value < 1.e-32)) || (abs_value > 1.e+32))
|
||||
{
|
||||
if (denormal_counts < 3)
|
||||
{
|
||||
denormal_ss << (denormal_counts > 0 ? ", " : "") << i << ": " << value;
|
||||
}
|
||||
else if (denormal_counts == 3)
|
||||
{
|
||||
denormal_ss << "...";
|
||||
}
|
||||
denormal_counts++;
|
||||
}
|
||||
}
|
||||
|
||||
ss << "min: " << min_value << ", max: " << max_value;
|
||||
if (denormal_counts != 0)
|
||||
{
|
||||
ss << ", denormals: " << denormal_counts << " [" << denormal_ss.str() << "]";
|
||||
}
|
||||
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
static std::string pretty_value(const vector<T>& values, size_t max_elements)
|
||||
{
|
||||
std::stringstream ss;
|
||||
for (size_t i = 0; i < values.size(); ++i)
|
||||
{
|
||||
if (i != 0 && i % 8 == 0)
|
||||
if (i < max_elements)
|
||||
{
|
||||
ss << std::endl;
|
||||
if (i != 0 && i % 8 == 0)
|
||||
{
|
||||
ss << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
if (i >= max_elements)
|
||||
else
|
||||
{
|
||||
ss << "...";
|
||||
break;
|
||||
@ -358,6 +406,14 @@ static std::string pretty_value(const vector<T>& values, size_t max_elements)
|
||||
ss << ", ";
|
||||
ss << value;
|
||||
}
|
||||
|
||||
const std::string additional_ss = getenv_bool("NGRAPH_VISUALIZE_TREE_MIN_MAX_DENORMAL")
|
||||
? pretty_min_max_denormal_value(values)
|
||||
: "";
|
||||
if (!additional_ss.empty())
|
||||
{
|
||||
ss << std::endl << "(" << additional_ss << ")";
|
||||
}
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user