HIPAllocatorMasqueradingAsCUDA.h 870 B

12345678910111213141516171819202122232425262728
  1. #pragma once
  2. #include <c10/core/Allocator.h>
  3. #include <c10/core/DeviceType.h>
  4. // Use of c10::hip namespace here makes hipification easier, because
  5. // I don't have to also fix namespaces. Sorry!
  6. namespace c10 { namespace hip {
  7. // Takes a valid HIPAllocator (of any sort) and turns it into
  8. // an allocator pretending to be a CUDA allocator. See
  9. // Note [Masquerading as CUDA]
  10. class HIPAllocatorMasqueradingAsCUDA final : public Allocator {
  11. Allocator* allocator_;
  12. public:
  13. explicit HIPAllocatorMasqueradingAsCUDA(Allocator* allocator)
  14. : allocator_(allocator) {}
  15. DataPtr allocate(size_t size) const override {
  16. DataPtr r = allocator_->allocate(size);
  17. r.unsafe_set_device(Device(DeviceType::CUDA, r.device().index()));
  18. return r;
  19. }
  20. DeleterFnPtr raw_deleter() const override {
  21. return allocator_->raw_deleter();
  22. }
  23. };
  24. }} // namespace c10::hip