@Lunderberg Thank you very much for your detailed response.
I have MacBook with Intel Core I7 on the board
There are outputs of the command uname -a
MacBook:
Darwin MacBook-Pro-Mojo.local 19.5.0 Darwin Kernel Version 19.5.0: Tue May 26 20:41:44 PDT 2020; root:xnu-6153.121.2~2/RELEASE_X86_64 x86_64
Ubuntu:
Linux whoami-IP 5.8.0-53-generic #60~20.04.1-Ubuntu SMP Thu May 6 09:52:46 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
I made deep investigation and did the next movements:
- Refactored Vulkan.cmake and FindVulkan.cmake. It means that I set all paths to the files for linking vulkan into tvm_runtime lib in a correct way. In my case it looks like:
include_directories(/Users/user/VulkanSDK/1.2.176.1/macOS/include/)
list(APPEND TVM_LINKER_LIBS /Users/user/VulkanSDK/1.2.176.1/macOS/lib/libSPIRV-Tools.a)
list(APPEND TVM_RUNTIME_LINKER_LIBS /Users/user/VulkanSDK/1.2.176.1/macOS/lib/libvulkan.so)
It must work, because all paths are set correctly, but I got the next error:
/Users/user/Library/Android/sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: skipping incompatible /Users/user/VulkanSDK/1.2.176.1/macOS/lib/libvulkan.so when searching for -lvulkan
/Users/user/Library/Android/sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: cannot find -lvulkan
I saw, that Cmakelists of tvm library try to link path of the libvulkan.so to tvm_runtime, I put the line of the code below:
target_link_libraries(tvm_runtime
PRIVATE
${TVM_RUNTIME_LINKER_LIBS})
-
After that, I saw how original cmake implements FindVulkan.cmake. The main idea that it creates the module besides creating the variables with the paths. Sample of code I put below:
if(Vulkan_FOUND AND NOT TARGET Vulkan::Vulkan)
add_library(Vulkan::Vulkan UNKNOWN IMPORTED)
set_target_properties(Vulkan::Vulkan PROPERTIES
IMPORTED_LOCATION “${Vulkan_LIBRARIES}”
INTERFACE_INCLUDE_DIRECTORIES “${Vulkan_INCLUDE_DIRS}”)
So I try to create the module and link it to the tvm_runtime:
I created the library in CmakeLists to make it global scope:
add_library(Vulkan_LIB SHARED IMPORTED)
After that, I link path to libvulkan.so to the Vukan_LIB library inside the Vulkan.cmake:
set_target_properties(Vulkan_LIB PROPERTIES IMPORTED_LOCATION "${Vulkan_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "/Users/user/VulkanSDK/1.2.176.1/macOS/include/")
And final step, link created Vulkan_LIB to the tvm_runtime inside CmakeLists:
target_link_libraries(tvm_runtime ${Vulkan_LIB})
But it also gives the error like it doesnt see libvulkan.so, because there are no implementation of different functions:
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `tvm::runtime::vulkan::DeleteHostVisibleBuffer(tvm::runtime::vulkan::VulkanHostVisibleBuffer*)':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:76: undefined reference to `vkUnmapMemory'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:76: undefined reference to `vkUnmapMemory'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:79: undefined reference to `vkFreeMemory'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:79: undefined reference to `vkFreeMemory'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:82: undefined reference to `vkDestroyBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:82: undefined reference to `vkDestroyBuffer'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `tvm::runtime::vulkan::FindMemoryType(tvm::runtime::vulkan::VulkanContext const&, VkBufferCreateInfo, unsigned int)':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:138: undefined reference to `vkCreateBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:138: undefined reference to `vkCreateBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:141: undefined reference to `vkGetBufferMemoryRequirements'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:141: undefined reference to `vkGetBufferMemoryRequirements'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:144: undefined reference to `vkGetPhysicalDeviceMemoryProperties'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:144: undefined reference to `vkGetPhysicalDeviceMemoryProperties'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `tvm::runtime::vulkan::CreateBuffer(tvm::runtime::vulkan::VulkanContext const&, unsigned long, unsigned int, unsigned int)':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:175: undefined reference to `vkCreateBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:175: undefined reference to `vkCreateBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:208: undefined reference to `vkAllocateMemory'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:208: undefined reference to `vkAllocateMemory'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:224: undefined reference to `vkBindBufferMemory'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:224: undefined reference to `vkBindBufferMemory'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `tvm::runtime::vulkan::VulkanDeviceAPI::GetDeviceDescription(VkInstance_T*, VkPhysicalDevice_T*, std::__ndk1::vector<char const*, std::__ndk1::allocator<char const*> > const&, std::__ndk1::vector<char const*, std::__ndk1::allocator<char const*> > const&)':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:488: undefined reference to `vkGetPhysicalDeviceProperties'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:488: undefined reference to `vkGetPhysicalDeviceProperties'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:541: undefined reference to `vkGetPhysicalDeviceFeatures'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:541: undefined reference to `vkGetPhysicalDeviceFeatures'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:531: undefined reference to `vkGetInstanceProcAddr'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:531: undefined reference to `vkGetInstanceProcAddr'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:631: undefined reference to `tvm::IntImm::IntImm(tvm::runtime::DataType, long, tvm::Span)'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:643: undefined reference to `tvm::Target::Target(tvm::runtime::Map<tvm::runtime::String, tvm::runtime::ObjectRef, void, void> const&)'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `Bool':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/include/tvm/ir/expr.h:329: undefined reference to `tvm::IntImm::IntImm(tvm::runtime::DataType, long, tvm::Span)'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `Integer':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/include/tvm/ir/expr.h:366: undefined reference to `tvm::IntImm::IntImm(tvm::runtime::DataType, long, tvm::Span)'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `tvm::runtime::operator<<(std::__ndk1::basic_ostream<char, std::__ndk1::char_traits<char> >&, tvm::runtime::ObjectRef const&)':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/include/tvm/node/repr_printer.h:70: undefined reference to `tvm::ReprPrinter::Print(tvm::runtime::ObjectRef const&)'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/include/tvm/node/repr_printer.h:70: undefined reference to `tvm::ReprPrinter::Print(tvm::runtime::ObjectRef const&)'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/include/tvm/node/repr_printer.h:70: undefined reference to `tvm::ReprPrinter::Print(tvm::runtime::ObjectRef const&)'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `operator()':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:723: undefined reference to `vkEnumerateInstanceLayerProperties'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:723: undefined reference to `vkEnumerateInstanceLayerProperties'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:751: undefined reference to `vkEnumerateInstanceExtensionProperties'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:751: undefined reference to `vkEnumerateInstanceExtensionProperties'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:771: undefined reference to `vkGetInstanceProcAddr'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:771: undefined reference to `vkGetInstanceProcAddr'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `VulkanDeviceAPI':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:799: undefined reference to `vkCreateInstance'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:799: undefined reference to `vkCreateInstance'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:803: undefined reference to `vkEnumeratePhysicalDevices'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:803: undefined reference to `vkEnumeratePhysicalDevices'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:825: undefined reference to `vkGetPhysicalDeviceProperties'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:825: undefined reference to `vkGetPhysicalDeviceProperties'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `operator()':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:843: undefined reference to `vkEnumerateDeviceExtensionProperties'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:843: undefined reference to `vkEnumerateDeviceExtensionProperties'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:846: undefined reference to `vkEnumerateDeviceExtensionProperties'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:846: undefined reference to `vkEnumerateDeviceExtensionProperties'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `VulkanDeviceAPI':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:920: undefined reference to `vkCreateDevice'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:920: undefined reference to `vkCreateDevice'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:924: undefined reference to `vkGetDeviceQueue'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:924: undefined reference to `vkGetDeviceQueue'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:941: undefined reference to `vkCreateBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:941: undefined reference to `vkCreateBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:942: undefined reference to `vkGetBufferMemoryRequirements'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:942: undefined reference to `vkGetBufferMemoryRequirements'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:943: undefined reference to `vkDestroyBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:943: undefined reference to `vkDestroyBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:947: undefined reference to `vkCreateBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:947: undefined reference to `vkCreateBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:948: undefined reference to `vkGetBufferMemoryRequirements'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:948: undefined reference to `vkGetBufferMemoryRequirements'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:949: undefined reference to `vkDestroyBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:949: undefined reference to `vkDestroyBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:955: undefined reference to `vkGetPhysicalDeviceMemoryProperties'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:955: undefined reference to `vkGetPhysicalDeviceMemoryProperties'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `tvm::runtime::vulkan::VulkanDeviceAPI::GetComputeQueueFamilies(VkPhysicalDevice_T*)':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1017: undefined reference to `vkGetPhysicalDeviceQueueFamilyProperties'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1017: undefined reference to `vkGetPhysicalDeviceQueueFamilyProperties'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `tvm::runtime::vulkan::DeleteHostVisibleBuffer(tvm::runtime::vulkan::VulkanHostVisibleBuffer*)':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:76: undefined reference to `vkUnmapMemory'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:76: undefined reference to `vkUnmapMemory'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:79: undefined reference to `vkFreeMemory'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:79: undefined reference to `vkFreeMemory'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:82: undefined reference to `vkDestroyBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:82: undefined reference to `vkDestroyBuffer'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `tvm::runtime::vulkan::GetOrAllocate(int, unsigned long, unsigned int, unsigned int, std::__ndk1::unordered_map<unsigned long, std::__ndk1::unique_ptr<tvm::runtime::vulkan::VulkanHostVisibleBuffer, std::__ndk1::default_delete<tvm::runtime::vulkan::VulkanHostVisibleBuffer> >, std::__ndk1::hash<unsigned long>, std::__ndk1::equal_to<unsigned long>, std::__ndk1::allocator<std::__ndk1::pair<unsigned long const, std::__ndk1::unique_ptr<tvm::runtime::vulkan::VulkanHostVisibleBuffer, std::__ndk1::default_delete<tvm::runtime::vulkan::VulkanHostVisibleBuffer> > > > >*, bool)':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1379: undefined reference to `vkMapMemory'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1379: undefined reference to `vkMapMemory'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `tvm::runtime::vulkan::VulkanStream::Synchronize()':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_stream.h:140: undefined reference to `vkEndCommandBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_stream.h:140: undefined reference to `vkEndCommandBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_stream.h:156: undefined reference to `vkQueueSubmit'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_stream.h:156: undefined reference to `vkQueueSubmit'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `~lock_guard':
>
> /Users/user/Library/Android/sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__mutex_base:(.text._ZN3tvm7runtime6vulkan12VulkanStream11SynchronizeEv[_ZN3tvm7runtime6vulkan12VulkanStream11SynchronizeEv]+0x39c): undefined reference to `vkWaitForFences'
>
> /Users/user/Library/Android/sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__mutex_base:(.text._ZN3tvm7runtime6vulkan12VulkanStream11SynchronizeEv[_ZN3tvm7runtime6vulkan12VulkanStream11SynchronizeEv]+0x3a0): undefined reference to `vkWaitForFences'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `tvm::runtime::vulkan::VulkanStream::Synchronize()':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_stream.h:164: undefined reference to `vkResetCommandBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_stream.h:164: undefined reference to `vkResetCommandBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_stream.h:165: undefined reference to `vkResetFences'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_stream.h:165: undefined reference to `vkResetFences'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_stream.h:173: undefined reference to `vkBeginCommandBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_stream.h:173: undefined reference to `vkBeginCommandBuffer'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `VulkanStream':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_stream.h:55: undefined reference to `vkCreateCommandPool'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_stream.h:55: undefined reference to `vkCreateCommandPool'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_stream.h:63: undefined reference to `vkAllocateCommandBuffers'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_stream.h:63: undefined reference to `vkAllocateCommandBuffers'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_stream.h:70: undefined reference to `vkCreateFence'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_stream.h:70: undefined reference to `vkCreateFence'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_stream.h:77: undefined reference to `vkBeginCommandBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_stream.h:77: undefined reference to `vkBeginCommandBuffer'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `tvm::runtime::vulkan::VulkanModuleNode::GetPipeline(unsigned long, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, unsigned long)':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1143: undefined reference to `vkCreateShaderModule'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1143: undefined reference to `vkCreateShaderModule'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1217: undefined reference to `vkCreateDescriptorSetLayout'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1217: undefined reference to `vkCreateDescriptorSetLayout'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1229: undefined reference to `vkCreateDescriptorPool'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1229: undefined reference to `vkCreateDescriptorPool'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1238: undefined reference to `vkAllocateDescriptorSets'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1238: undefined reference to `vkAllocateDescriptorSets'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1262: undefined reference to `vkCreatePipelineLayout'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1262: undefined reference to `vkCreatePipelineLayout'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1279: undefined reference to `vkCreateComputePipelines'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1279: undefined reference to `vkCreateComputePipelines'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `~VulkanDeviceAPI':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:(.text._ZN3tvm7runtime6vulkan15VulkanDeviceAPID2Ev[_ZN3tvm7runtime6vulkan15VulkanDeviceAPID2Ev]+0x3c): undefined reference to `vkDestroyDevice'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:(.text._ZN3tvm7runtime6vulkan15VulkanDeviceAPID2Ev[_ZN3tvm7runtime6vulkan15VulkanDeviceAPID2Ev]+0x40): undefined reference to `vkDestroyDevice'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:239: undefined reference to `vkDestroyInstance'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:239: undefined reference to `vkDestroyInstance'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `tvm::runtime::vulkan::VulkanDeviceAPI::FreeDataSpace(DLDevice, void*)':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:263: undefined reference to `vkDestroyBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:263: undefined reference to `vkDestroyBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:264: undefined reference to `vkFreeMemory'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:264: undefined reference to `vkFreeMemory'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `tvm::runtime::vulkan::VulkanDeviceAPI::CopyDataFromTo(void const*, unsigned long, void*, unsigned long, unsigned long, DLDevice, DLDevice, DLDataType, void*)':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:351: undefined reference to `vkFlushMappedMemoryRanges'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:351: undefined reference to `vkFlushMappedMemoryRanges'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:333: undefined reference to `vkInvalidateMappedMemoryRanges'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:333: undefined reference to `vkInvalidateMappedMemoryRanges'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `operator()':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:295: undefined reference to `vkCmdCopyBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:295: undefined reference to `vkCmdCopyBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:305: undefined reference to `vkCmdPipelineBarrier'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:305: undefined reference to `vkCmdPipelineBarrier'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:322: undefined reference to `vkCmdCopyBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:322: undefined reference to `vkCmdCopyBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:363: undefined reference to `vkCmdPipelineBarrier'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:363: undefined reference to `vkCmdPipelineBarrier'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:371: undefined reference to `vkCmdCopyBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:371: undefined reference to `vkCmdCopyBuffer'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `VulkanDescriptorTemplateKHRFunctions':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_common.h:105: undefined reference to `vkGetDeviceProcAddr'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_common.h:105: undefined reference to `vkGetDeviceProcAddr'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `VulkanGetBufferMemoryRequirements2Functions':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_common.h:124: undefined reference to `vkGetDeviceProcAddr'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_common.h:124: undefined reference to `vkGetDeviceProcAddr'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `~VulkanModuleNode':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1100: undefined reference to `vkDestroyPipeline'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1100: undefined reference to `vkDestroyPipelineLayout'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1100: undefined reference to `vkDestroyDescriptorPool'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1100: undefined reference to `vkDestroyPipeline'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1100: undefined reference to `vkDestroyPipelineLayout'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1100: undefined reference to `vkDestroyDescriptorPool'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1100: undefined reference to `vkDestroyDescriptorSetLayout'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1100: undefined reference to `vkDestroyDescriptorSetLayout'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:(.text._ZN3tvm7runtime6vulkan16VulkanModuleNodeD2Ev[_ZN3tvm7runtime6vulkan16VulkanModuleNodeD2Ev]+0x78): undefined reference to `vkDestroyShaderModule'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:(.text._ZN3tvm7runtime6vulkan16VulkanModuleNodeD2Ev[_ZN3tvm7runtime6vulkan16VulkanModuleNodeD2Ev]+0x7c): undefined reference to `vkDestroyShaderModule'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `~VulkanThreadEntry':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:(.text._ZN3tvm7runtime6vulkan17VulkanThreadEntryD2Ev[_ZN3tvm7runtime6vulkan17VulkanThreadEntryD2Ev]+0xc0): undefined reference to `vkDestroyBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:(.text._ZN3tvm7runtime6vulkan17VulkanThreadEntryD2Ev[_ZN3tvm7runtime6vulkan17VulkanThreadEntryD2Ev]+0xc4): undefined reference to `vkFreeMemory'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:(.text._ZN3tvm7runtime6vulkan17VulkanThreadEntryD2Ev[_ZN3tvm7runtime6vulkan17VulkanThreadEntryD2Ev]+0xc8): undefined reference to `vkUnmapMemory'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:(.text._ZN3tvm7runtime6vulkan17VulkanThreadEntryD2Ev[_ZN3tvm7runtime6vulkan17VulkanThreadEntryD2Ev]+0xcc): undefined reference to `vkDestroyBuffer'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:(.text._ZN3tvm7runtime6vulkan17VulkanThreadEntryD2Ev[_ZN3tvm7runtime6vulkan17VulkanThreadEntryD2Ev]+0xd0): undefined reference to `vkFreeMemory'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:(.text._ZN3tvm7runtime6vulkan17VulkanThreadEntryD2Ev[_ZN3tvm7runtime6vulkan17VulkanThreadEntryD2Ev]+0xd4): undefined reference to `vkUnmapMemory'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `~VulkanStream':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_stream.h:81: undefined reference to `vkDestroyFence'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_stream.h:81: undefined reference to `vkDestroyFence'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_stream.h:82: undefined reference to `vkDestroyCommandPool'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan_stream.h:82: undefined reference to `vkDestroyCommandPool'
>
> CMakeFiles/tvm_runtime_objs.dir/src/runtime/vulkan/vulkan.cc.o: In function `operator()':
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1455: undefined reference to `vkCmdBindPipeline'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1455: undefined reference to `vkCmdBindPipeline'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1465: undefined reference to `vkCmdPushConstants'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1465: undefined reference to `vkCmdPushConstants'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1470: undefined reference to `vkCmdDispatch'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1470: undefined reference to `vkCmdDispatch'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1477: undefined reference to `vkCmdPipelineBarrier'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1477: undefined reference to `vkCmdPipelineBarrier'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1507: undefined reference to `vkUpdateDescriptorSets'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1507: undefined reference to `vkUpdateDescriptorSets'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1512: undefined reference to `vkCmdBindPipeline'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1512: undefined reference to `vkCmdBindPipeline'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1513: undefined reference to `vkCmdBindDescriptorSets'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1513: undefined reference to `vkCmdBindDescriptorSets'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1521: undefined reference to `vkCmdPushConstants'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1521: undefined reference to `vkCmdPushConstants'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1526: undefined reference to `vkCmdDispatch'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1526: undefined reference to `vkCmdDispatch'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1533: undefined reference to `vkCmdPipelineBarrier'
>
> /Users/user/Documents/AlgofaceWork/TVM/tvm/src/runtime/vulkan/vulkan.cc:1533: undefined reference to `vkCmdPipelineBarrier'
>
> clang++: **error:** linker command failed with exit code 1 (use -v to see invocation)
Could you please give me additional comments where I made mistake