| 1251 | #endif // TENSORFLOW_EAGER_USE_XLA |
| 1252 | |
| 1253 | void ExecuteWithTracing(bool async) { |
| 1254 | TF_Status* status = TF_NewStatus(); |
| 1255 | TFE_ContextOptions* opts = TFE_NewContextOptions(); |
| 1256 | TFE_ContextOptionsSetAsync(opts, static_cast<unsigned char>(async)); |
| 1257 | TFE_Context* ctx = TFE_NewContext(opts, status); |
| 1258 | TFE_ContextEnableRunMetadata(ctx); |
| 1259 | CHECK_EQ(TF_OK, TF_GetCode(status)) << TF_Message(status); |
| 1260 | TFE_DeleteContextOptions(opts); |
| 1261 | |
| 1262 | TFE_TensorHandle* m = TestMatrixTensorHandle(); |
| 1263 | TFE_Op* matmul = MatMulOp(ctx, m, m); |
| 1264 | TFE_TensorHandle* retvals[1] = {nullptr}; |
| 1265 | int num_retvals = 1; |
| 1266 | TFE_Execute(matmul, &retvals[0], &num_retvals, status); |
| 1267 | EXPECT_EQ(TF_OK, TF_GetCode(status)) << TF_Message(status); |
| 1268 | TFE_DeleteOp(matmul); |
| 1269 | TFE_DeleteTensorHandle(m); |
| 1270 | TF_Buffer* b = TF_NewBuffer(); |
| 1271 | TFE_ContextExportRunMetadata(ctx, b, status); |
| 1272 | ASSERT_EQ(TF_OK, TF_GetCode(status)) << TF_Message(status); |
| 1273 | tensorflow::RunMetadata rm; |
| 1274 | EXPECT_TRUE( |
| 1275 | rm.ParseFromString({reinterpret_cast<const char*>(b->data), b->length})); |
| 1276 | TF_DeleteBuffer(b); |
| 1277 | ASSERT_EQ(TF_OK, TF_GetCode(status)) << TF_Message(status); |
| 1278 | ASSERT_EQ(1, num_retvals); |
| 1279 | |
| 1280 | TF_Tensor* t = TFE_TensorHandleResolve(retvals[0], status); |
| 1281 | TFE_DeleteTensorHandle(retvals[0]); |
| 1282 | TFE_DeleteContext(ctx); |
| 1283 | ASSERT_EQ(TF_OK, TF_GetCode(status)) << TF_Message(status); |
| 1284 | float product[4] = {0}; |
| 1285 | EXPECT_EQ(sizeof(product), TF_TensorByteSize(t)); |
| 1286 | memcpy(&product[0], TF_TensorData(t), TF_TensorByteSize(t)); |
| 1287 | TF_DeleteTensor(t); |
| 1288 | EXPECT_EQ(7, product[0]); |
| 1289 | EXPECT_EQ(10, product[1]); |
| 1290 | EXPECT_EQ(15, product[2]); |
| 1291 | EXPECT_EQ(22, product[3]); |
| 1292 | TF_DeleteStatus(status); |
| 1293 | } |
| 1294 | TEST(CAPI, ExecuteWithTracing) { ExecuteWithTracing(false); } |
| 1295 | TEST(CAPI, ExecuteWithTracingAsync) { ExecuteWithTracing(true); } |
| 1296 |
no test coverage detected