fuzz_kfd.py 906 B

12345678910111213141516171819202122232425262728
  1. #!/usr/bin/env python3
  2. import random
  3. from tqdm import trange
  4. from typing import List
  5. from tinygrad import Device
  6. from tinygrad.runtime.ops_amd import AMDDevice, HWCopyQueue, HWComputeQueue
  7. if __name__ == "__main__":
  8. dev: List[AMDDevice] = [Device[f"KFD:{i}"] for i in range(6)]
  9. print(f"got {len(dev)} devices")
  10. buffers = [(rd:=random.choice(dev), rd.allocator.alloc(random.randint(1, 10000))) for i in range(100)]
  11. for _ in trange(100000):
  12. d1, b1 = random.choice(buffers)
  13. d2, b2 = random.choice(buffers)
  14. d1._gpu_map(b2)
  15. q = HWComputeQueue()
  16. q.signal(sig:=AMDDevice._alloc_signal(10))
  17. qc = HWCopyQueue()
  18. qc.wait(sig)
  19. qc.copy(b1.va_addr, b2.va_addr, min(b1.size, b2.size))
  20. d1.completion_signal.value = 1
  21. qc.signal(d1.completion_signal)
  22. qc.submit(d1)
  23. q.wait(d1.completion_signal)
  24. q.submit(d1)
  25. AMDDevice._wait_on(d1.completion_signal.event_id)