test.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. # Copyright (c) Microsoft Corporation.
  2. # SPDX-License-Identifier: Apache-2.0
  3. # DeepSpeed Team
  4. import torch
  5. from deepspeed.runtime.zero.contiguous_memory_allocator import ContiguousMemoryAllocator
  6. def test1():
  7. mem = ContiguousMemoryAllocator(1024, torch.half, 'cpu')
  8. mem.print_allocation(resolution=100)
  9. a1 = mem.allocate_tensor(64).mul_(0.0).add_(1.0)
  10. mem.print_allocation(resolution=100)
  11. mem.release_tensor(a1)
  12. mem.print_allocation(resolution=100)
  13. a2 = mem.allocate_tensor(64).mul_(0.0).add_(2.0)
  14. a3 = mem.allocate_tensor(256).mul_(0.0).add_(3.0)
  15. a4 = mem.allocate_tensor(128).mul_(0.0).add_(4.0)
  16. mem.print_allocation(resolution=100)
  17. mem.release_tensor(a3)
  18. mem.print_allocation(resolution=100)
  19. a5 = mem.allocate_tensor(64).mul_(0.0).add_(5.0)
  20. a6 = mem.allocate_tensor(256).mul_(0.0).add_(6.0)
  21. a7 = mem.allocate_tensor(128).mul_(0.0).add_(7.0)
  22. mem.print_allocation(resolution=100)
  23. a8 = mem.allocate_tensor(256).mul_(0.0).add_(8.0)
  24. a9 = mem.allocate_tensor(128).mul_(0.0).add_(9.0)
  25. mem.print_allocation(resolution=100)
  26. mem.release_tensor(a9)
  27. mem.release_tensor(a6)
  28. mem.release_tensor(a2)
  29. mem.release_tensor(a5)
  30. a10 = mem.allocate_tensor(512).mul_(0.0).add_(10.0)
  31. mem.print_allocation(resolution=100)
  32. #print(f"a4:{a4}")
  33. #print(f"a7:{a7}")
  34. #print(f"a8:{a8}")
  35. #print(f"a10:{a10}")
  36. assert (a4.norm() + a7.norm() + a8.norm() + a10.norm()).item() == 474.50, "Test failed"
  37. def test2():
  38. mem = ContiguousMemoryAllocator(512, torch.half, 'cpu')
  39. a1 = mem.allocate_tensor(64).mul_(0.0).add_(1.0)
  40. a2 = mem.allocate_tensor(64).mul_(0.0).add_(2.0)
  41. a3 = mem.allocate_tensor(64).mul_(0.0).add_(3.0)
  42. a4 = mem.allocate_tensor(64).mul_(0.0).add_(4.0)
  43. a5 = mem.allocate_tensor(64).mul_(0.0).add_(5.0)
  44. a6 = mem.allocate_tensor(64).mul_(0.0).add_(6.0)
  45. a7 = mem.allocate_tensor(64).mul_(0.0).add_(7.0)
  46. a8 = mem.allocate_tensor(64).mul_(0.0).add_(8.0)
  47. mem.release_tensor(a2)
  48. mem.release_tensor(a4)
  49. mem.release_tensor(a6)
  50. mem.release_tensor(a8)
  51. mem.print_allocation(resolution=100)
  52. a9 = mem.allocate_tensor(128).mul_(0.0).add_(9.0)
  53. a10 = mem.allocate_tensor(64).mul_(0.0).add_(10.0)
  54. a11 = mem.allocate_tensor(64).mul_(0.0).add_(11.0)
  55. mem.release_tensor(a1)
  56. mem.release_tensor(a5)
  57. mem.print_allocation(resolution=100)
  58. a12 = mem.allocate_tensor(128).mul_(0.0).add_(12.0)
  59. mem.print_allocation(resolution=100)
  60. print(f"a7:{a7}")
  61. print(f"a9:{a9}")
  62. print(f"a10:{a10}")
  63. print(f"a11:{a11}")
  64. print(f"a12:{a12}")
  65. assert (a7.norm() + a9.norm() + a10.norm() + a11.norm() + a12.norm()) == 460.75, "TestFailed"
  66. test1()
  67. test2()