MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / FunctionDefAndExecute

Function FunctionDefAndExecute

tensorflow/c/eager/c_api_test.cc:1331–1377  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1329}
1330
1331void FunctionDefAndExecute(bool async) {
1332 TF_Status* status = TF_NewStatus();
1333 TFE_ContextOptions* opts = TFE_NewContextOptions();
1334 TFE_ContextOptionsSetAsync(opts, static_cast<unsigned char>(async));
1335 TFE_Context* ctx = TFE_NewContext(opts, status);
1336 CHECK_EQ(TF_OK, TF_GetCode(status)) << TF_Message(status);
1337 TFE_DeleteContextOptions(opts);
1338
1339 string function_def = MatMulFunction();
1340 TFE_ContextAddFunctionDef(ctx, function_def.data(), function_def.size(),
1341 status);
1342 CHECK_EQ(TF_OK, TF_GetCode(status)) << TF_Message(status);
1343
1344 for (bool clear_cache : {true, false, true}) {
1345 if (clear_cache) {
1346 TFE_ContextClearCaches(ctx);
1347 }
1348 TFE_TensorHandle* m = TestMatrixTensorHandle();
1349 TFE_TensorHandle* retval[1] = {nullptr};
1350 int num_retvals = 1;
1351 TFE_Op* op = TFE_NewOp(ctx, "MatMulFunction", status);
1352 ASSERT_EQ(TF_OK, TF_GetCode(status)) << TF_Message(status);
1353 TFE_OpAddInput(op, m, status);
1354 ASSERT_EQ(TF_OK, TF_GetCode(status)) << TF_Message(status);
1355 TFE_Execute(op, &retval[0], &num_retvals, status);
1356 ASSERT_EQ(TF_OK, TF_GetCode(status)) << TF_Message(status);
1357 ASSERT_EQ(1, num_retvals);
1358 TFE_DeleteOp(op);
1359 TFE_DeleteTensorHandle(m);
1360 TF_Tensor* t = TFE_TensorHandleResolve(retval[0], status);
1361 TFE_DeleteTensorHandle(retval[0]);
1362 ASSERT_EQ(TF_OK, TF_GetCode(status)) << TF_Message(status);
1363 float product[4] = {0};
1364 EXPECT_EQ(sizeof(product), TF_TensorByteSize(t));
1365 memcpy(&product[0], TF_TensorData(t), TF_TensorByteSize(t));
1366 TF_DeleteTensor(t);
1367 EXPECT_EQ(7, product[0]);
1368 EXPECT_EQ(10, product[1]);
1369 EXPECT_EQ(15, product[2]);
1370 EXPECT_EQ(22, product[3]);
1371 }
1372 TFE_ContextRemoveFunction(ctx, "MatMulFunction", status);
1373 ASSERT_TRUE(TF_GetCode(status) == TF_OK) << TF_Message(status);
1374 TFE_DeleteContext(ctx);
1375 EXPECT_EQ(TF_OK, TF_GetCode(status)) << TF_Message(status);
1376 TF_DeleteStatus(status);
1377}
1378TEST(CAPI, FunctionDefAndExecute) { FunctionDefAndExecute(false); }
1379TEST(CAPI, FunctionDefAndExecuteAsync) { FunctionDefAndExecute(true); }
1380

Callers 1

TESTFunction · 0.85

Calls 15

TF_NewStatusFunction · 0.85
TFE_NewContextOptionsFunction · 0.85
TFE_NewContextFunction · 0.85
TF_GetCodeFunction · 0.85
TF_MessageFunction · 0.85
TFE_DeleteContextOptionsFunction · 0.85
TFE_ContextClearCachesFunction · 0.85
TestMatrixTensorHandleFunction · 0.85
TFE_NewOpFunction · 0.85
TFE_OpAddInputFunction · 0.85

Tested by

no test coverage detected