1#pragma once
2
3#include <atomic>
4
5#include <ATen/Tensor.h>
6
7namespace at {
8namespace vulkan {
9
10struct VulkanImplInterface {
11 virtual ~VulkanImplInterface() = default;
12 virtual bool is_vulkan_available() const = 0;
13 virtual at::Tensor& vulkan_copy_(at::Tensor& self, const at::Tensor& src)
14 const = 0;
15};
16
17extern std::atomic<const VulkanImplInterface*> g_vulkan_impl_registry;
18
19class VulkanImplRegistrar {
20 public:
21 VulkanImplRegistrar(VulkanImplInterface*);
22};
23
24at::Tensor& vulkan_copy_(at::Tensor& self, const at::Tensor& src);
25
26} // namespace vulkan
27} // namespace at
28