aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--tensorflow/c/c_api_experimental.cc10
-rw-r--r--tensorflow/c/c_api_experimental.h6
2 files changed, 16 insertions, 0 deletions
diff --git a/tensorflow/c/c_api_experimental.cc b/tensorflow/c/c_api_experimental.cc
index eb17e16d3e..34b9dec3ee 100644
--- a/tensorflow/c/c_api_experimental.cc
+++ b/tensorflow/c/c_api_experimental.cc
@@ -483,3 +483,13 @@ void TF_ShutdownTPUExecution(TF_Session* session, TF_Output shutdown_node,
/*targets*/ &shutdown_node.oper, /*ntargets*/ 1,
/*run_metadata*/ nullptr, status);
}
+
+TF_CAPI_EXPORT extern const char* TF_GraphDebugString(TF_Graph* graph,
+ size_t* len) {
+ tensorflow::mutex_lock c(graph->mu);
+ const auto& debug_str = graph->graph.ToGraphDefDebug().DebugString();
+ *len = debug_str.size();
+ char* ret = static_cast<char*>(malloc(*len + 1));
+ memcpy(ret, debug_str.c_str(), *len + 1);
+ return ret;
+}
diff --git a/tensorflow/c/c_api_experimental.h b/tensorflow/c/c_api_experimental.h
index 2bad278d63..b95cdfe6aa 100644
--- a/tensorflow/c/c_api_experimental.h
+++ b/tensorflow/c/c_api_experimental.h
@@ -94,6 +94,12 @@ TF_CAPI_EXPORT extern void TF_ShutdownTPUExecution(TF_Session* session,
TF_Output shutdown_node,
TF_Status* status);
+// Returns the graph content in a human-readable format, with length set in
+// `len`. The format is subject to change in the future.
+// The returned string is heap-allocated, and caller should call free() on it.
+TF_CAPI_EXPORT extern const char* TF_GraphDebugString(TF_Graph* graph,
+ size_t* len);
+
#ifdef __cplusplus
} /* end extern "C" */
#endif