aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/c/c_test_util.cc
diff options
context:
space:
mode:
authorGravatar Mingsheng Hong <hongm@google.com>2018-02-07 12:22:55 -0800
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-02-07 12:26:52 -0800
commit65f676426d808cf20abd6a4a30ad48668ee5fdf2 (patch)
tree84707b8b38781cb4703e46656f24737d86ac1d2d /tensorflow/c/c_test_util.cc
parent90ce80131a8b5213d9f3eb9649d63921db7874a4 (diff)
Initial XLA support for TF eager. This is prerequisite for TF compiler's XLA support.
This CL adds XLA support for the following TFE_Op's: 1. A TF op such as MatMul, with full support of constant and resource params. 2. A TF_Function as TFE_Op, where the function must have no constant and resource params. Removing this restriction requires more discussion and will be deferred to a later time. PiperOrigin-RevId: 184877345
Diffstat (limited to 'tensorflow/c/c_test_util.cc')
-rw-r--r--tensorflow/c/c_test_util.cc29
1 files changed, 25 insertions, 4 deletions
diff --git a/tensorflow/c/c_test_util.cc b/tensorflow/c/c_test_util.cc
index 37439ff0be..3c1d5b5bf8 100644
--- a/tensorflow/c/c_test_util.cc
+++ b/tensorflow/c/c_test_util.cc
@@ -124,8 +124,9 @@ TF_Operation* ScalarConst(double v, TF_Graph* graph, TF_Status* s,
return Const(tensor.get(), graph, s, name);
}
-void AddHelper(TF_Operation* l, TF_Operation* r, TF_Graph* graph, TF_Status* s,
- const char* name, TF_Operation** op, bool check) {
+void AddOpHelper(TF_Operation* l, TF_Operation* r, TF_Graph* graph,
+ TF_Status* s, const char* name, TF_Operation** op,
+ bool check) {
TF_OperationDescription* desc = TF_NewOperation(graph, "AddN", name);
TF_Output add_inputs[2] = {{l, 0}, {r, 0}};
TF_AddInputList(desc, add_inputs, 2);
@@ -139,14 +140,14 @@ void AddHelper(TF_Operation* l, TF_Operation* r, TF_Graph* graph, TF_Status* s,
TF_Operation* Add(TF_Operation* l, TF_Operation* r, TF_Graph* graph,
TF_Status* s, const char* name) {
TF_Operation* op;
- AddHelper(l, r, graph, s, name, &op, true);
+ AddOpHelper(l, r, graph, s, name, &op, true);
return op;
}
TF_Operation* AddNoCheck(TF_Operation* l, TF_Operation* r, TF_Graph* graph,
TF_Status* s, const char* name) {
TF_Operation* op;
- AddHelper(l, r, graph, s, name, &op, false);
+ AddOpHelper(l, r, graph, s, name, &op, false);
return op;
}
@@ -160,6 +161,26 @@ TF_Operation* AddWithCtrlDependency(TF_Operation* l, TF_Operation* r,
return TF_FinishOperation(desc, s);
}
+void BinaryOpHelper(const char* op_name, TF_Operation* l, TF_Operation* r,
+ TF_Graph* graph, TF_Status* s, const char* name,
+ TF_Operation** op, bool check) {
+ TF_OperationDescription* desc = TF_NewOperation(graph, op_name, name);
+ TF_AddInput(desc, {l, 0});
+ TF_AddInput(desc, {r, 0});
+ *op = TF_FinishOperation(desc, s);
+ if (check) {
+ ASSERT_EQ(TF_OK, TF_GetCode(s)) << TF_Message(s);
+ ASSERT_NE(*op, nullptr);
+ }
+}
+
+TF_Operation* Min(TF_Operation* l, TF_Operation* r, TF_Graph* graph,
+ TF_Status* s, const char* name) {
+ TF_Operation* op;
+ BinaryOpHelper("Min", l, r, graph, s, name, &op, true);
+ return op;
+}
+
TF_Operation* Add(TF_Output l, TF_Output r, TF_Graph* graph, TF_Status* s,
const char* name) {
TF_OperationDescription* desc = TF_NewOperation(graph, "AddN", name);