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.

Eager.Execute_MatMul_CPU.cs 2.3 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using Microsoft.VisualStudio.TestTools.UnitTesting;
  2. using System;
  3. using Tensorflow.Eager;
  4. using static Tensorflow.Binding;
  5. namespace Tensorflow.Native.UnitTest.Eager
  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. using var status = TF_NewStatus();
  20. static SafeContextHandle NewContext(bool async, SafeStatusHandle status)
  21. {
  22. using var opts = c_api.TFE_NewContextOptions();
  23. c_api.TFE_ContextOptionsSetAsync(opts, Convert.ToByte(async));
  24. return c_api.TFE_NewContext(opts, status);
  25. }
  26. SafeTensorHandle t;
  27. using (var ctx = NewContext(async, status))
  28. {
  29. CHECK_EQ(TF_OK, TF_GetCode(status), TF_Message(status));
  30. var retvals = new SafeEagerTensorHandle[2];
  31. using (var m = TestMatrixTensorHandle())
  32. using (var matmul = MatMulOp(ctx, m, m))
  33. {
  34. int num_retvals;
  35. c_api.TFE_Execute(matmul, retvals, out num_retvals, status);
  36. EXPECT_EQ(1, num_retvals);
  37. EXPECT_EQ(TF_OK, TF_GetCode(status), TF_Message(status));
  38. }
  39. try
  40. {
  41. t = TFE_TensorHandleResolve(retvals[0], status);
  42. ASSERT_EQ(TF_OK, TF_GetCode(status), TF_Message(status));
  43. }
  44. finally
  45. {
  46. retvals[0].Dispose();
  47. }
  48. }
  49. ASSERT_EQ(TF_OK, TF_GetCode(status), TF_Message(status));
  50. var product = new float[4];
  51. EXPECT_EQ(product.Length * sizeof(float), (int)TF_TensorByteSize(t));
  52. tf.memcpy(product, TF_TensorData(t), TF_TensorByteSize(t));
  53. t.Dispose();
  54. EXPECT_EQ(7f, product[0]);
  55. EXPECT_EQ(10f, product[1]);
  56. EXPECT_EQ(15f, product[2]);
  57. EXPECT_EQ(22f, product[3]);
  58. }
  59. }
  60. }