• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #pragma once
2 
3 #include <atomic>
4 
5 #include <ATen/Tensor.h>
6 
7 namespace at {
8 namespace vulkan {
9 
10 struct 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 
17 extern std::atomic<const VulkanImplInterface*> g_vulkan_impl_registry;
18 
19 class VulkanImplRegistrar {
20  public:
21   explicit VulkanImplRegistrar(VulkanImplInterface*);
22 };
23 
24 at::Tensor& vulkan_copy_(at::Tensor& self, const at::Tensor& src);
25 } // namespace vulkan
26 
27 namespace native {
28   bool is_vulkan_available();
29 }// namespace native
30 
31 } // namespace at
32