vit.cpp icon indicating copy to clipboard operation
vit.cpp copied to clipboard

Is it possible to build it for Android

Open kirklandsign opened this issue 1 year ago • 4 comments

It would be nice if we can try this out on Android. I followed instructions from https://github.com/ggerganov/ggml

I tried it and seems that we need to remove -march=native from CMakeLists.txt

-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -march=native")
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -march=native")

However, after that I got an error

CANNOT LINK EXECUTABLE "/data/local/tmp/bin/vit": cannot locate symbol "__emutls_get_address" referenced by "/data/local/tmp/bin/vit"...

kirklandsign avatar Jan 19 '24 23:01 kirklandsign

Hey @kirklandsign,

Did you set the NDK_ROOT_PATH variable either in the env or in the CMakeLists.txt : set(CMAKE_ANDROID_NDK /path/to/android-ndk-r26b-linux) after downloading the NDK?

staghado avatar Jan 20 '24 20:01 staghado

Thank you! It works now; however, I still made the following modification to make it build.

-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -march=native")
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -march=native")
+# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -march=native")
+# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -march=native")

BTW on ggml, I also commented out Threads

--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -159,7 +159,7 @@ endif()
 set(CMAKE_C_STANDARD   11)
 set(CMAKE_CXX_STANDARD 11)
 
-find_package(Threads REQUIRED)
+# find_package(Threads REQUIRED)
 
 # main

kirklandsign avatar Jan 26 '24 23:01 kirklandsign

Great to hear!

Are you running this on a Phone? I'm interested to know what is the setup

staghado avatar Jan 28 '24 12:01 staghado

Hi @staghado I used

cmake . -Bcmake-out -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake     -DANDROID_ABI=arm64-v8a
cmake --build cmake-out/

and then push the binary to the android phone

kirklandsign avatar Feb 15 '24 19:02 kirklandsign