Description
I want to cross-compile Android on x86_64 linux
want to use vulkan to call Gpus on Android devices.
Does llama.cpp provide the corresponding documentation for cross-compilation?
Compilation platform: x86_64 linux(RTX4090)
Target platform:Android(Adreno740v2)
compile
export ANDROID_NDK=path/to/android-ndk-r26c
mkdir build_cpu_android && cd build_cpu_android
cmake .. -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \ -DCMAKE_BUILD_TYPE=Release \ -DANDROID_ABI="arm64-v8a"\ -DANDROID_STL=c++_static \ -DANDROID_NATIVE_API_LEVEL=android-21 \ -DLLAMA_VULKAN=1
make -j8
model use
llama-2-7b-chat.Q4_K_M.gguf
vulkan installation
I downloaded the vulkan 1.2 sdk package from the official website, extracted it and stored it in the./vulkan directory, and edited the bashrc file to set environment variables
nano ~/.bashrc export VULKAN_SDK=/root/nfs/llama/Galaxy-llama.cpp/vulkan/1.2.198.1/x86_64 && export PATH=$VULKAN_SDK/bin:$PATH && export LD_LIBRARY_PATH=$VULKAN_SDK/lib:$LD_LIBRARY_PATH && export LIBRARY_PATH=$VULKAN_SDK/lib:$LIBRARY_PATH && export VK_LAYER_PATH=$VULKAN_SDK/etc/vulkan/explicit_layer.d
The problems I have encountered so far
the build info:vulkan cannot be found (I have confirmed that the vulkan environment variable was successfully imported)
when use make,
error: use of undeclared identifier 'POSIX_MADV_WILLNEED'
if (posix_madvise(addr, std::min(file->size, prefetch), POSIX_MADV_WILLNEED)) {
^
/CodeSpace/nfs/llama/Galaxy-llama.cpp/llama.cpp:1144:49: error: use of undeclared identifier 'POSIX_MADV_RANDOM'
if (posix_madvise(addr, file->size, POSIX_MADV_RANDOM)) {
^