You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

CApi.Eager.Execute_MatMul_CPU.cs 2.0 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using Microsoft.VisualStudio.TestTools.UnitTesting;
  2. using System;
  3. using Tensorflow;
  4. using static Tensorflow.Binding;
  5. namespace TensorFlowNET.UnitTest.NativeAPI
  6. {
  7. public partial class CApiEagerTest
  8. {
  9. /// <summary>
  10. /// TEST(CAPI, Execute_MatMul_CPU)
  11. /// </summary>
  12. [TestMethod]
  13. public unsafe void Execute_MatMul_CPU()
  14. {
  15. Execute_MatMul_CPU(false);
  16. }
  17. unsafe void Execute_MatMul_CPU(bool async)
  18. {
  19. var status = TF_NewStatus();
  20. var opts = TFE_NewContextOptions();
  21. c_api.TFE_ContextOptionsSetAsync(opts, Convert.ToByte(async));
  22. var ctx = TFE_NewContext(opts, status);
  23. CHECK_EQ(TF_OK, TF_GetCode(status), TF_Message(status));
  24. TFE_DeleteContextOptions(opts);
  25. var m = TestMatrixTensorHandle();
  26. var matmul = MatMulOp(ctx, m, m);
  27. var retvals = new IntPtr[] { IntPtr.Zero, IntPtr.Zero };
  28. int num_retvals = 2;
  29. c_api.TFE_Execute(matmul, retvals, ref num_retvals, status);
  30. EXPECT_EQ(1, num_retvals);
  31. EXPECT_EQ(TF_OK, TF_GetCode(status), TF_Message(status));
  32. TFE_DeleteOp(matmul);
  33. TFE_DeleteTensorHandle(m);
  34. var t = TFE_TensorHandleResolve(retvals[0], status);
  35. ASSERT_EQ(TF_OK, TF_GetCode(status), TF_Message(status));
  36. TFE_DeleteTensorHandle(retvals[0]);
  37. TFE_DeleteContext(ctx);
  38. ASSERT_EQ(TF_OK, TF_GetCode(status), TF_Message(status));
  39. var product = new float[4];
  40. EXPECT_EQ(product.Length * sizeof(float), (int)TF_TensorByteSize(t));
  41. tf.memcpy(product, TF_TensorData(t), TF_TensorByteSize(t));
  42. c_api.TF_DeleteTensor(t);
  43. EXPECT_EQ(7f, product[0]);
  44. EXPECT_EQ(10f, product[1]);
  45. EXPECT_EQ(15f, product[2]);
  46. EXPECT_EQ(22f, product[3]);
  47. TF_DeleteStatus(status);
  48. }
  49. }
  50. }