diff --git a/CMakeLists.txt b/CMakeLists.txt index 1c5aca027b5..0bac4993d1b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -203,6 +203,7 @@ cmake_dependent_option( USE_VALGRIND "Use Valgrind. Only available on Linux." ON "LINUX" OFF) option(USE_VULKAN "Use Vulkan GPU backend" OFF) +option(USE_VULKAN_API "Use Vulkan GPU backend v2" OFF) option(USE_VULKAN_WRAPPER "Use Vulkan wrapper" ON) option(USE_VULKAN_SHADERC_RUNTIME "Use Vulkan Shader compilation runtime(Needs shaderc lib)" OFF) option(USE_VULKAN_RELAXED_PRECISION "Use Vulkan relaxed precision(mediump)" OFF) @@ -536,6 +537,10 @@ if(USE_VULKAN) string(APPEND CMAKE_CXX_FLAGS " -DUSE_VULKAN") endif() +if(USE_VULKAN_API) + string(APPEND CMAKE_CXX_FLAGS " -DUSE_VULKAN_API") +endif() + if(USE_VULKAN_WRAPPER) string(APPEND CMAKE_CXX_FLAGS " -DUSE_VULKAN_WRAPPER") endif() diff --git a/aten/src/ATen/CMakeLists.txt b/aten/src/ATen/CMakeLists.txt index 31b479de1ae..bf9029ff6c6 100644 --- a/aten/src/ATen/CMakeLists.txt +++ b/aten/src/ATen/CMakeLists.txt @@ -65,7 +65,8 @@ file(GLOB native_cpp "native/*.cpp") file(GLOB native_mkl_cpp "native/mkl/*.cpp") file(GLOB native_mkldnn_cpp "native/mkldnn/*.cpp") file(GLOB vulkan_cpp "vulkan/*.cpp") -file(GLOB native_vulkan_cpp "native/vulkan/api/*.cpp" "native/vulkan/*.cpp") +file(GLOB native_vulkan_cpp "native/vulkan/*.cpp") +file(GLOB native_vulkan_api_cpp "native/vulkan/api/*.cpp" "native/vulkan/ops/*.cpp") # Metal file(GLOB metal_h "metal/*.h") @@ -124,6 +125,9 @@ if(AT_MKLDNN_ENABLED) endif() if(USE_VULKAN) set(all_cpu_cpp ${all_cpu_cpp} ${vulkan_cpp} ${native_vulkan_cpp} ${vulkan_generated_cpp}) + if(USE_VULKAN_API) + set(all_cpu_cpp ${all_cpu_cpp} ${native_vulkan_api_cpp}) + endif() else() set(all_cpu_cpp ${all_cpu_cpp} ${vulkan_cpp}) endif() diff --git a/aten/src/ATen/native/vulkan/api/Adapter.h b/aten/src/ATen/native/vulkan/api/Adapter.h index 239edfb7451..0efc08010ef 100644 --- a/aten/src/ATen/native/vulkan/api/Adapter.h +++ b/aten/src/ATen/native/vulkan/api/Adapter.h @@ -1,5 +1,7 @@ #pragma once +#ifdef USE_VULKAN_API + #include #include @@ -34,3 +36,5 @@ struct Adapter final { } // namespace vulkan } // namespace native } // namespace at + +#endif /* USE_VULKAN_API */ diff --git a/aten/src/ATen/native/vulkan/api/Allocator.h b/aten/src/ATen/native/vulkan/api/Allocator.h index d86044799a3..de560abb3da 100644 --- a/aten/src/ATen/native/vulkan/api/Allocator.h +++ b/aten/src/ATen/native/vulkan/api/Allocator.h @@ -1,5 +1,7 @@ #pragma once +#ifdef USE_VULKAN_API + #include #ifdef DEBUG @@ -24,3 +26,5 @@ #ifdef __clang__ #pragma clang diagnostic pop #endif /* __clang__ */ + +#endif /* USE_VULKAN_API */ diff --git a/aten/src/ATen/native/vulkan/api/Cache.h b/aten/src/ATen/native/vulkan/api/Cache.h index 36291a2227d..83ea3343aa8 100644 --- a/aten/src/ATen/native/vulkan/api/Cache.h +++ b/aten/src/ATen/native/vulkan/api/Cache.h @@ -1,5 +1,7 @@ #pragma once +#ifdef USE_VULKAN_API + #include namespace at { @@ -86,3 +88,5 @@ inline void Cache::purge() { } // namespace vulkan } // namespace native } // namespace at + +#endif /* USE_VULKAN_API */ diff --git a/aten/src/ATen/native/vulkan/api/Command.h b/aten/src/ATen/native/vulkan/api/Command.h index 69c52387776..38f251ba4d2 100644 --- a/aten/src/ATen/native/vulkan/api/Command.h +++ b/aten/src/ATen/native/vulkan/api/Command.h @@ -1,5 +1,7 @@ #pragma once +#ifdef USE_VULKAN_API + #include #include #include @@ -93,3 +95,5 @@ inline Command::Buffer& Command::Buffer::operator=(Buffer&& buffer) { } // namespace vulkan } // namespace native } // namespace at + +#endif /* USE_VULKAN_API */ diff --git a/aten/src/ATen/native/vulkan/api/Common.h b/aten/src/ATen/native/vulkan/api/Common.h index f08a08bb2fa..be89073e90b 100644 --- a/aten/src/ATen/native/vulkan/api/Common.h +++ b/aten/src/ATen/native/vulkan/api/Common.h @@ -1,5 +1,7 @@ #pragma once +#ifdef USE_VULKAN_API + #include #ifdef USE_VULKAN_SHADERC_RUNTIME @@ -181,3 +183,5 @@ inline void Handle::reset(Type payload) { } // namespace vulkan } // namespace native } // namespace at + +#endif /* USE_VULKAN_API */ diff --git a/aten/src/ATen/native/vulkan/api/Context.h b/aten/src/ATen/native/vulkan/api/Context.h index 2be8557f122..95239a1e304 100644 --- a/aten/src/ATen/native/vulkan/api/Context.h +++ b/aten/src/ATen/native/vulkan/api/Context.h @@ -1,5 +1,7 @@ #pragma once +#ifdef USE_VULKAN_API + #include #include #include @@ -177,3 +179,5 @@ inline void Context::dispatch( } // namespace vulkan } // namespace native } // namespace at + +#endif /* USE_VULKAN_API */ diff --git a/aten/src/ATen/native/vulkan/api/Descriptor.h b/aten/src/ATen/native/vulkan/api/Descriptor.h index c005e1f3eec..e268696d781 100644 --- a/aten/src/ATen/native/vulkan/api/Descriptor.h +++ b/aten/src/ATen/native/vulkan/api/Descriptor.h @@ -1,5 +1,7 @@ #pragma once +#ifdef USE_VULKAN_API + #include #include #include @@ -154,3 +156,5 @@ inline Descriptor::Set& Descriptor::Set::operator=(Set&& set) { } // namespace vulkan } // namespace native } // namespace at + +#endif /* USE_VULKAN_API */ diff --git a/aten/src/ATen/native/vulkan/api/Pipeline.h b/aten/src/ATen/native/vulkan/api/Pipeline.h index 5e3e419565c..9ef2bf8c399 100644 --- a/aten/src/ATen/native/vulkan/api/Pipeline.h +++ b/aten/src/ATen/native/vulkan/api/Pipeline.h @@ -1,5 +1,7 @@ #pragma once +#ifdef USE_VULKAN_API + #include #include #include @@ -218,3 +220,5 @@ inline void Pipeline::Cache::purge() { } // namespace vulkan } // namespace native } // namespace at + +#endif /* USE_VULKAN_API */ diff --git a/aten/src/ATen/native/vulkan/api/Resource.h b/aten/src/ATen/native/vulkan/api/Resource.h index 2f65b7fbe66..afe008c14b2 100644 --- a/aten/src/ATen/native/vulkan/api/Resource.h +++ b/aten/src/ATen/native/vulkan/api/Resource.h @@ -1,5 +1,7 @@ #pragma once +#ifdef USE_VULKAN_API + #include #include #include @@ -375,3 +377,5 @@ inline VkFence Resource::Fence::handle(const bool add_to_waitlist) const { } // namespace vulkan } // namespace native } // namespace at + +#endif /* USE_VULKAN_API */ diff --git a/aten/src/ATen/native/vulkan/api/Runtime.cpp b/aten/src/ATen/native/vulkan/api/Runtime.cpp index ce5fdf0b682..b63ded44488 100644 --- a/aten/src/ATen/native/vulkan/api/Runtime.cpp +++ b/aten/src/ATen/native/vulkan/api/Runtime.cpp @@ -10,7 +10,7 @@ namespace api { namespace { struct Configuration final { -#ifndef DEBUG +#ifdef DEBUG static constexpr Runtime::Type kRuntime = Runtime::Type::Debug; #else static constexpr Runtime::Type kRuntime = Runtime::Type::Release; diff --git a/aten/src/ATen/native/vulkan/api/Runtime.h b/aten/src/ATen/native/vulkan/api/Runtime.h index 4d06da83fc7..ccb2845e6ad 100644 --- a/aten/src/ATen/native/vulkan/api/Runtime.h +++ b/aten/src/ATen/native/vulkan/api/Runtime.h @@ -1,5 +1,7 @@ #pragma once +#ifdef USE_VULKAN_API + #include namespace at { @@ -61,3 +63,5 @@ Runtime* runtime(); } // namespace vulkan } // namespace native } // namespace at + +#endif /* USE_VULKAN_API */ diff --git a/aten/src/ATen/native/vulkan/api/Shader.h b/aten/src/ATen/native/vulkan/api/Shader.h index 8de369c813c..f3e62d9c4d0 100644 --- a/aten/src/ATen/native/vulkan/api/Shader.h +++ b/aten/src/ATen/native/vulkan/api/Shader.h @@ -1,5 +1,7 @@ #pragma once +#ifdef USE_VULKAN_API + #include #include #include @@ -293,3 +295,5 @@ inline bool operator==( (_1.stageFlags == _2.stageFlags) && (_1.pImmutableSamplers == _2.pImmutableSamplers); } + +#endif /* USE_VULKAN_API */ diff --git a/aten/src/ATen/native/vulkan/api/api.h b/aten/src/ATen/native/vulkan/api/api.h index 658824e3bf2..b46793cbb66 100644 --- a/aten/src/ATen/native/vulkan/api/api.h +++ b/aten/src/ATen/native/vulkan/api/api.h @@ -1,5 +1,7 @@ #pragma once +#ifdef USE_VULKAN_API + #include #include @@ -10,3 +12,5 @@ #include #include #include + +#endif /* USE_VULKAN_API */ diff --git a/aten/src/ATen/test/vulkan_api_test.cpp b/aten/src/ATen/test/vulkan_api_test.cpp index ebf9ffce99d..77bbbfc8edb 100644 --- a/aten/src/ATen/test/vulkan_api_test.cpp +++ b/aten/src/ATen/test/vulkan_api_test.cpp @@ -2,8 +2,6 @@ #ifdef USE_VULKAN_API -#include - namespace { } // namespace