Skip to content

Compile bug: I am trying to compile llama.cpp with Vulkan backend. #16311

@acbits

Description

@acbits

Git commit

$git rev-parse HEAD
d8359f5

Operating systems

Linux

GGML backends

Vulkan

Problem description & steps to reproduce

I am trying to compile llama.cpp with Vulkan backend. I have been building successfully with the same configuration for the past 1 year, but not version 6615.

First Bad Commit

Not sure as I haven't built since version 6431.

Compile command

export CFLAGS='-mtune=native -march=native -O3  -fno-omit-frame-pointer'
export CXXFLAGS=$CFLAGS

CXX=g++-13.4 CC=gcc-13.4 cmake -DCMAKE_INSTALL_PREFIX=/usr/local \
             -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=mold" \
             -DCMAKE_MODULE_LINKER_FLAGS="-fuse-ld=mold" \
             -DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=mold" \
             -DLLAMA_CURL=OFF \
             -DGGML_CCACHE=OFF  \
             -DGGML_VULKAN:BOOL=ON \
             -DBUILD_SHARED_LIBS:BOOL=OFF \
             -DCMAKE_BUILD_TYPE=Release ..

Relevant log output

Building CXX object ggml/src/ggml-vulkan/CMakeFiles/ggml-vulkan.dir/ggml-vulkan.cpp.o
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp: In member function 'vk::PhysicalDeviceProperties vk::PhysicalDevice::getProperties(const Dispatch&) const [with Dispatch = vk::DispatchLoaderDynamic]':
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:243:62: error: could not convert 'ggml_vk_default_dispatcher()' from 'vk::detail::DispatchLoaderDynamic' to 'const vk::DispatchLoaderDynamic&'
  243 |     vk::PhysicalDeviceProperties props = device.getProperties();
      |                                          ~~~~~~~~~~~~~~~~~~~~^~
      |                                                              |
      |                                                              vk::detail::DispatchLoaderDynamic
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:243:62: note:   when instantiating default argument for call to 'vk::PhysicalDeviceProperties vk::PhysicalDevice::getProperties(const Dispatch&) const [with Dispatch = vk::DispatchLoaderDynamic]'
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp: In function 'vk_device_architecture get_device_architecture(const vk::PhysicalDevice&)':
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:243:62: error: invalid initialization of reference of type 'const vk::DispatchLoaderDynamic&' from expression of type 'vk::detail::DispatchLoaderDynamic'
In file included from /usr/include/vulkan/vulkan.hpp:8582,
                 from /media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:16:
/usr/include/vulkan/vulkan_funcs.hpp:284:90: note: in passing argument 1 of 'vk::PhysicalDeviceProperties vk::PhysicalDevice::getProperties(const Dispatch&) const [with Dispatch = vk::DispatchLoaderDynamic]'
  284 |                                          PhysicalDevice::getProperties( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT
      |                                                                         ~~~~~~~~~~~~~~~~~^
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp: In member function 'typename vk::ResultValueType<std::vector<vk::ExtensionProperties, ExtensionPropertiesAllocator> >::type vk::PhysicalDevice::enumerateDeviceExtensionProperties(vk::Optional<const std::__cxx11::basic_string<char> >, const Dispatch&) const [with ExtensionPropertiesAllocator = std::allocator<vk::ExtensionProperties>; Dispatch = vk::DispatchLoaderDynamic; typename vk::ResultValueType<std::vector<vk::ExtensionProperties, ExtensionPropertiesAllocator> >::type = std::vector<vk::ExtensionProperties>]':
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:246:105: error: could not convert 'ggml_vk_default_dispatcher()' from 'vk::detail::DispatchLoaderDynamic' to 'const vk::DispatchLoaderDynamic&'
  246 |         const std::vector<vk::ExtensionProperties> ext_props = device.enumerateDeviceExtensionProperties();
      |                                                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
      |                                                                                                         |
      |                                                                                                         vk::detail::DispatchLoaderDynamic
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:246:105: note:   when instantiating default argument for call to 'typename vk::ResultValueType<std::vector<vk::ExtensionProperties, ExtensionPropertiesAllocator> >::type vk::PhysicalDevice::enumerateDeviceExtensionProperties(vk::Optional<const std::__cxx11::basic_string<char> >, const Dispatch&) const [with ExtensionPropertiesAllocator = std::allocator<vk::ExtensionProperties>; Dispatch = vk::DispatchLoaderDynamic; typename vk::ResultValueType<std::vector<vk::ExtensionProperties, ExtensionPropertiesAllocator> >::type = std::vector<vk::ExtensionProperties>]'
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp: In function 'vk_device_architecture get_device_architecture(const vk::PhysicalDevice&)':
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:246:105: error: invalid initialization of reference of type 'const vk::DispatchLoaderDynamic&' from expression of type 'vk::detail::DispatchLoaderDynamic'
/usr/include/vulkan/vulkan_funcs.hpp:607:132: note: in passing argument 2 of 'typename vk::ResultValueType<std::vector<vk::ExtensionProperties, ExtensionPropertiesAllocator> >::type vk::PhysicalDevice::enumerateDeviceExtensionProperties(vk::Optional<const std::__cxx11::basic_string<char> >, const Dispatch&) const [with ExtensionPropertiesAllocator = std::allocator<vk::ExtensionProperties>; Dispatch = vk::DispatchLoaderDynamic; typename vk::ResultValueType<std::vector<vk::ExtensionProperties, ExtensionPropertiesAllocator> >::type = std::vector<vk::ExtensionProperties>]'
  607 |             PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName, Dispatch const & d ) const
      |                                                                                                        ~~~~~~~~~~~~~~~~~^

/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp: In member function 'void vk::PhysicalDevice::getProperties2(vk::PhysicalDeviceProperties2*, const Dispatch&) const [with Dispatch = vk::DispatchLoaderDynamic]':
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:275:30: error: could not convert 'ggml_vk_default_dispatcher()' from 'vk::detail::DispatchLoaderDynamic' to 'const vk::DispatchLoaderDynamic&'
  275 |         device.getProperties2(&props2);
      |         ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
      |                              |
      |                              vk::detail::DispatchLoaderDynamic
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:275:30: note:   when instantiating default argument for call to 'void vk::PhysicalDevice::getProperties2(vk::PhysicalDeviceProperties2*, const Dispatch&) const [with Dispatch = vk::DispatchLoaderDynamic]'
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp: In function 'vk_device_architecture get_device_architecture(const vk::PhysicalDevice&)':
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:275:30: error: invalid initialization of reference of type 'const vk::DispatchLoaderDynamic&' from expression of type 'vk::detail::DispatchLoaderDynamic'
/usr/include/vulkan/vulkan_funcs.hpp:6148:108: note: in passing argument 2 of 'void vk::PhysicalDevice::getProperties2(vk::PhysicalDeviceProperties2*, const Dispatch&) const [with Dispatch = vk::DispatchLoaderDynamic]'
 6148 |                                                          Dispatch const &                                  d ) const VULKAN_HPP_NOEXCEPT
      |                                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:291:105: error: invalid initialization of reference of type 'const vk::DispatchLoaderDynamic&' from expression of type 'vk::detail::DispatchLoaderDynamic'
  291 |         const std::vector<vk::ExtensionProperties> ext_props = device.enumerateDeviceExtensionProperties();
      |                                                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/usr/include/vulkan/vulkan_funcs.hpp:607:132: note: in passing argument 2 of 'typename vk::ResultValueType<std::vector<vk::ExtensionProperties, ExtensionPropertiesAllocator> >::type vk::PhysicalDevice::enumerateDeviceExtensionProperties(vk::Optional<const std::__cxx11::basic_string<char> >, const Dispatch&) const [with ExtensionPropertiesAllocator = std::allocator<vk::ExtensionProperties>; Dispatch = vk::DispatchLoaderDynamic; typename vk::ResultValueType<std::vector<vk::ExtensionProperties, ExtensionPropertiesAllocator> >::type = std::vector<vk::ExtensionProperties>]'
  607 |             PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName, Dispatch const & d ) const
      |                                                                                                        ~~~~~~~~~~~~~~~~~^

/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:309:30: error: invalid initialization of reference of type 'const vk::DispatchLoaderDynamic&' from expression of type 'vk::detail::DispatchLoaderDynamic'
  309 |         device.getProperties2(&props2);
      |         ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
/usr/include/vulkan/vulkan_funcs.hpp:6148:108: note: in passing argument 2 of 'void vk::PhysicalDevice::getProperties2(vk::PhysicalDeviceProperties2*, const Dispatch&) const [with Dispatch = vk::DispatchLoaderDynamic]'
 6148 |                                                          Dispatch const &                                  d ) const VULKAN_HPP_NOEXCEPT
      |                                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:319:105: error: invalid initialization of reference of type 'const vk::DispatchLoaderDynamic&' from expression of type 'vk::detail::DispatchLoaderDynamic'
  319 |         const std::vector<vk::ExtensionProperties> ext_props = device.enumerateDeviceExtensionProperties();
      |                                                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/usr/include/vulkan/vulkan_funcs.hpp:607:132: note: in passing argument 2 of 'typename vk::ResultValueType<std::vector<vk::ExtensionProperties, ExtensionPropertiesAllocator> >::type vk::PhysicalDevice::enumerateDeviceExtensionProperties(vk::Optional<const std::__cxx11::basic_string<char> >, const Dispatch&) const [with ExtensionPropertiesAllocator = std::allocator<vk::ExtensionProperties>; Dispatch = vk::DispatchLoaderDynamic; typename vk::ResultValueType<std::vector<vk::ExtensionProperties, ExtensionPropertiesAllocator> >::type = std::vector<vk::ExtensionProperties>]'
  607 |             PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName, Dispatch const & d ) const
      |                                                                                                        ~~~~~~~~~~~~~~~~~^

/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp: In member function 'void vk::Device::destroyFence(vk::Fence, vk::Optional<const vk::AllocationCallbacks>, const Dispatch&) const [with Dispatch = vk::DispatchLoaderDynamic]':
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:617:28: error: could not convert 'ggml_vk_default_dispatcher()' from 'vk::detail::DispatchLoaderDynamic' to 'const vk::DispatchLoaderDynamic&'
  617 |         device.destroyFence(fence);
      |         ~~~~~~~~~~~~~~~~~~~^~~~~~~
      |                            |
      |                            vk::detail::DispatchLoaderDynamic
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:617:28: note:   when instantiating default argument for call to 'void vk::Device::destroyFence(vk::Fence, vk::Optional<const vk::AllocationCallbacks>, const Dispatch&) const [with Dispatch = vk::DispatchLoaderDynamic]'
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp: In destructor 'vk_device_struct::~vk_device_struct()':
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:617:28: error: invalid initialization of reference of type 'const vk::DispatchLoaderDynamic&' from expression of type 'vk::detail::DispatchLoaderDynamic'
/usr/include/vulkan/vulkan_funcs.hpp:1569:106: note: in passing argument 3 of 'void vk::Device::destroyFence(vk::Fence, vk::Optional<const vk::AllocationCallbacks>, const Dispatch&) const [with Dispatch = vk::DispatchLoaderDynamic]'
 1569 |                                                Dispatch const &                                          d ) const VULKAN_HPP_NOEXCEPT
      |                                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp: In member function 'void vk::Device::destroyDescriptorSetLayout(vk::DescriptorSetLayout, vk::Optional<const vk::AllocationCallbacks>, const Dispatch&) const [with Dispatch = vk::DispatchLoaderDynamic]':
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:634:42: error: could not convert 'ggml_vk_default_dispatcher()' from 'vk::detail::DispatchLoaderDynamic' to 'const vk::DispatchLoaderDynamic&'
  634 |         device.destroyDescriptorSetLayout(dsl);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
      |                                          |
      |                                          vk::detail::DispatchLoaderDynamic
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:634:42: note:   when instantiating default argument for call to 'void vk::Device::destroyDescriptorSetLayout(vk::DescriptorSetLayout, vk::Optional<const vk::AllocationCallbacks>, const Dispatch&) const [with Dispatch = vk::DispatchLoaderDynamic]'
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp: In destructor 'vk_device_struct::~vk_device_struct()':
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:634:42: error: invalid initialization of reference of type 'const vk::DispatchLoaderDynamic&' from expression of type 'vk::detail::DispatchLoaderDynamic'
/usr/include/vulkan/vulkan_funcs.hpp:3761:120: note: in passing argument 3 of 'void vk::Device::destroyDescriptorSetLayout(vk::DescriptorSetLayout, vk::Optional<const vk::AllocationCallbacks>, const Dispatch&) const [with Dispatch = vk::DispatchLoaderDynamic]'
 3761 |                                                             Dispatch const &                                          d ) const VULKAN_HPP_NOEXCEPT
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^

/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp: In member function 'void vk::Device::destroy(vk::Optional<const vk::AllocationCallbacks>, const Dispatch&) const [with Dispatch = vk::DispatchLoaderDynamic]':
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:636:23: error: could not convert 'ggml_vk_default_dispatcher()' from 'vk::detail::DispatchLoaderDynamic' to 'const vk::DispatchLoaderDynamic&'
  636 |         device.destroy();
      |         ~~~~~~~~~~~~~~^~
      |                       |
      |                       vk::detail::DispatchLoaderDynamic
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:636:23: note:   when instantiating default argument for call to 'void vk::Device::destroy(vk::Optional<const vk::AllocationCallbacks>, const Dispatch&) const [with Dispatch = vk::DispatchLoaderDynamic]'
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp: In destructor 'vk_device_struct::~vk_device_struct()':
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:636:23: error: invalid initialization of reference of type 'const vk::DispatchLoaderDynamic&' from expression of type 'vk::detail::DispatchLoaderDynamic'
/usr/include/vulkan/vulkan_funcs.hpp:499:129: note: in passing argument 2 of 'void vk::Device::destroy(vk::Optional<const vk::AllocationCallbacks>, const Dispatch&) const [with Dispatch = vk::DispatchLoaderDynamic]'
  499 | PP_INLINE void Device::destroy( Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT
      |                                                                                                      ~~~~~~~~~~~~~~~~~^

/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp: In member function 'vk::ResultValueType<vk::CommandPool>::type vk::Device::createCommandPool(const vk::CommandPoolCreateInfo&, vk::Optional<const vk::AllocationCallbacks>, const Dispatch&) const [with Dispatch = vk::DispatchLoaderDynamic; vk::ResultValueType<vk::CommandPool>::type = vk::CommandPool]':
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:645:44: error: could not convert 'ggml_vk_default_dispatcher()' from 'vk::detail::DispatchLoaderDynamic' to 'const vk::DispatchLoaderDynamic&'
  645 |     pool = device->device.createCommandPool(command_pool_create_info);
      |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                            |
      |                                            vk::detail::DispatchLoaderDynamic
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:645:44: note:   when instantiating default argument for call to 'vk::ResultValueType<vk::CommandPool>::type vk::Device::createCommandPool(const vk::CommandPoolCreateInfo&, vk::Optional<const vk::AllocationCallbacks>, const Dispatch&) const [with Dispatch = vk::DispatchLoaderDynamic; vk::ResultValueType<vk::CommandPool>::type = vk::CommandPool]'
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp: In member function 'void vk_command_pool::init(vk_device&, vk_queue*)':
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:645:44: error: invalid initialization of reference of type 'const vk::DispatchLoaderDynamic&' from expression of type 'vk::detail::DispatchLoaderDynamic'
/usr/include/vulkan/vulkan_funcs.hpp:4409:90: note: in passing argument 3 of 'vk::ResultValueType<vk::CommandPool>::type vk::Device::createCommandPool(const vk::CommandPoolCreateInfo&, vk::Optional<const vk::AllocationCallbacks>, const Dispatch&) const [with Dispatch = vk::DispatchLoaderDynamic; vk::ResultValueType<vk::CommandPool>::type = vk::CommandPool]'
 4409 |                                Dispatch const &                                          d ) const
      |                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp: In member function 'void vk::Device::destroyCommandPool(vk::CommandPool, vk::Optional<const vk::AllocationCallbacks>, const Dispatch&) const [with Dispatch = vk::DispatchLoaderDynamic]':
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:649:30: error: could not convert 'ggml_vk_default_dispatcher()' from 'vk::detail::DispatchLoaderDynamic' to 'const vk::DispatchLoaderDynamic&'
  649 |     device.destroyCommandPool(pool);
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
      |                              |
      |                              vk::detail::DispatchLoaderDynamic
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:649:30: note:   when instantiating default argument for call to 'void vk::Device::destroyCommandPool(vk::CommandPool, vk::Optional<const vk::AllocationCallbacks>, const Dispatch&) const [with Dispatch = vk::DispatchLoaderDynamic]'
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp: In member function 'void vk_command_pool::destroy(vk::Device&)':
/media/build/llama/ggml/src/ggml-vulkan/ggml-vulkan.cpp:649:30: error: invalid initialization of reference of type 'const vk::DispatchLoaderDynamic&' from expression of type 'vk::detail::DispatchLoaderDynamic'
/usr/include/vulkan/vulkan_funcs.hpp:4466:112: note: in passing argument 3 of 'void vk::Device::destroyCommandPool(vk::CommandPool, vk::Optional<const vk::AllocationCallbacks>, const Dispatch&) const [with Dispatch = vk::DispatchLoaderDynamic]'
 4466 |                                                      Dispatch const &                                          d ) const VULKAN_HPP_NOEXCEPT
      |                                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^


The rest has been trimmed as it is too long.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions