Spaces:
Running
on
Zero
Running
on
Zero
// Copyright © 2022 Apple Inc. | |
// This file is modify from: | |
// https://github.com/pytorch/pytorch/blob/a85d1f0bcdd02cf18d3b0517337458cb51a18cdb/aten/src/ATen/mps/MPSDevice.h | |
typedef id<MTLDevice> MTLDevice_t; | |
typedef void* MTLDevice; | |
typedef void* MTLDevice_t; | |
using namespace std; | |
namespace at { | |
namespace mps { | |
//----------------------------------------------------------------- | |
// MPSDevice | |
// | |
// MPSDevice is a singleton class that returns the default device | |
//----------------------------------------------------------------- | |
class TORCH_API MPSDevice { | |
public: | |
/** | |
* MPSDevice should not be cloneable. | |
*/ | |
MPSDevice(MPSDevice& other) = delete; | |
/** | |
* MPSDevice should not be assignable. | |
*/ | |
void operator=(const MPSDevice&) = delete; | |
/** | |
* Gets single instance of the Device. | |
*/ | |
static MPSDevice* getInstance(); | |
/** | |
* Returns the single device. | |
*/ | |
MTLDevice_t device() { return _mtl_device; } | |
~MPSDevice(); | |
private: | |
static MPSDevice* _device; | |
MTLDevice_t _mtl_device; | |
MPSDevice(); | |
}; | |
TORCH_API bool is_available(); | |
TORCH_API at::Allocator* GetMPSAllocator(bool useSharedAllocator = false); | |
} // namespace mps | |
} // namespace at | |