Сборка OpenBlas для Android - PullRequest
       48

Сборка OpenBlas для Android

0 голосов
/ 09 июня 2018

Я пытаюсь собрать openBlas для Android.В частности, я пытаюсь запустить мою модель кафе на Android.Для этого я следую за этим репозиторием GitHub .Основная ошибка

<stdio.h> : no such file or directory

Когда я пытаюсь собрать openBlas, я получаю следующие ошибки:

> > #####################  Building OpenBLAS for Android
> #####################
> 
> OpenBLAS: Detecting fortran compiler failed. Cannot compile LAPACK.
> Only compile BLAS. make[1]: warning: -jN forced in submake: disabling
> jobserver mode. make[1]: Entering directory
> '/home/sid/caffe-mobile/third_party/OpenBLAS-0.2.19/interface'
> /home/sid/Android/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
> --sysroot=/home/sid/Android/Sdk/ndk-bundle/platforms/android-16/arch-arm
> -O2 -DMAX_STACK_ALLOC=2048 -Wall -DF_INTERFACE_GFORT -fPIC -DNO_LAPACK -DNO_LAPACKE -DSMP_SERVER -DNO_WARMUP -DMAX_CPU_NUMBER=4 -marm -march=armv5 -DASMNAME=saxpy -DASMFNAME=saxpy_ -DNAME=saxpy_ -DCNAME=saxpy -DCHAR_NAME=\"saxpy_\" -DCHAR_CNAME=\"saxpy\" -DNO_AFFINITY -I.. -I. -UDOUBLE  -UCOMPLEX -c axpy.c -o saxpy.o /home/sid/Android/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
> --sysroot=/home/sid/Android/Sdk/ndk-bundle/platforms/android-16/arch-arm
> -O2 -DMAX_STACK_ALLOC=2048 -Wall -DF_INTERFACE_GFORT -fPIC -DNO_LAPACK -DNO_LAPACKE -DSMP_SERVER -DNO_WARMUP -DMAX_CPU_NUMBER=4 -marm -march=armv5 -DASMNAME=sswap -DASMFNAME=sswap_ -DNAME=sswap_ -DCNAME=sswap -DCHAR_NAME=\"sswap_\" -DCHAR_CNAME=\"sswap\" -DNO_AFFINITY -I.. -I. -UDOUBLE  -UCOMPLEX -c swap.c -o sswap.o /home/sid/Android/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
> --sysroot=/home/sid/Android/Sdk/ndk-bundle/platforms/android-16/arch-arm
> -O2 -DMAX_STACK_ALLOC=2048 -Wall -DF_INTERFACE_GFORT -fPIC -DNO_LAPACK -DNO_LAPACKE -DSMP_SERVER -DNO_WARMUP -DMAX_CPU_NUMBER=4 -marm -march=armv5 -DASMNAME=scopy -DASMFNAME=scopy_ -DNAME=scopy_ -DCNAME=scopy -DCHAR_NAME=\"scopy_\" -DCHAR_CNAME=\"scopy\" -DNO_AFFINITY -I.. -I. -UDOUBLE  -UCOMPLEX -c copy.c -o scopy.o /home/sid/Android/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
> --sysroot=/home/sid/Android/Sdk/ndk-bundle/platforms/android-16/arch-arm
> -O2 -DMAX_STACK_ALLOC=2048 -Wall -DF_INTERFACE_GFORT -fPIC -DNO_LAPACK -DNO_LAPACKE -DSMP_SERVER -DNO_WARMUP -DMAX_CPU_NUMBER=4 -marm -march=armv5 -DASMNAME=sscal -DASMFNAME=sscal_ -DNAME=sscal_ -DCNAME=sscal -DCHAR_NAME=\"sscal_\" -DCHAR_CNAME=\"sscal\" -DNO_AFFINITY -I.. -I. -UDOUBLE  -UCOMPLEX -c scal.c -o sscal.o axpy.c:39:19: fatal error: stdio.h: No such file or directory 
> #include <stdio.h>
>                    ^ swap.c:39:19: fatal error: stdio.h: No such file or directory  #include <stdio.h>
>                    ^ compilation terminated. compilation terminated. Makefile:723: recipe for target 'saxpy.o' failed make[1]: ***
> [saxpy.o] Error 1 make[1]: *** Waiting for unfinished jobs....
> Makefile:795: recipe for target 'sswap.o' failed make[1]: ***
> [sswap.o] Error 1 copy.c:39:19: fatal error: stdio.h: No such file or
> directory  #include <stdio.h>
>                    ^ compilation terminated. Makefile:777: recipe for target 'scopy.o' failed make[1]: *** [scopy.o] Error 1 scal.c:39:19:
> fatal error: stdio.h: No such file or directory  #include <stdio.h>
>                    ^ compilation terminated. Makefile:750: recipe for target 'sscal.o' failed make[1]: *** [sscal.o] Error 1 make[1]:
> Leaving directory
> '/home/sid/caffe-mobile/third_party/OpenBLAS-0.2.19/interface'
> Makefile:126: recipe for target 'libs' failed make: *** [libs] Error 1
> getarch_2nd.c: In function ‘main’: getarch_2nd.c:12:35: error:
> ‘SGEMM_DEFAULT_UNROLL_M’ undeclared (first use in this function); did
> you mean ‘XGEMM_DEFAULT_UNROLL_M’?
>      printf("SGEMM_UNROLL_M=%d\n", SGEMM_DEFAULT_UNROLL_M);
>                                    ^~~~~~~~~~~~~~~~~~~~~~
>                                    XGEMM_DEFAULT_UNROLL_M getarch_2nd.c:12:35: note: each undeclared identifier is reported only
> once for each function it appears in getarch_2nd.c:13:35: error:
> ‘SGEMM_DEFAULT_UNROLL_N’ undeclared (first use in this function); did
> you mean ‘SGEMM_DEFAULT_UNROLL_M’?
>      printf("SGEMM_UNROLL_N=%d\n", SGEMM_DEFAULT_UNROLL_N);
>                                    ^~~~~~~~~~~~~~~~~~~~~~
>                                    SGEMM_DEFAULT_UNROLL_M getarch_2nd.c:14:35: error: ‘DGEMM_DEFAULT_UNROLL_M’ undeclared (first
> use in this function); did you mean ‘SGEMM_DEFAULT_UNROLL_M’?
>      printf("DGEMM_UNROLL_M=%d\n", DGEMM_DEFAULT_UNROLL_M);
>                                    ^~~~~~~~~~~~~~~~~~~~~~
>                                    SGEMM_DEFAULT_UNROLL_M getarch_2nd.c:15:35: error: ‘DGEMM_DEFAULT_UNROLL_N’ undeclared (first
> use in this function); did you mean ‘DGEMM_DEFAULT_UNROLL_M’?
>      printf("DGEMM_UNROLL_N=%d\n", DGEMM_DEFAULT_UNROLL_N);
>                                    ^~~~~~~~~~~~~~~~~~~~~~
>                                    DGEMM_DEFAULT_UNROLL_M getarch_2nd.c:19:35: error: ‘CGEMM_DEFAULT_UNROLL_M’ undeclared (first
> use in this function); did you mean ‘DGEMM_DEFAULT_UNROLL_M’?
>      printf("CGEMM_UNROLL_M=%d\n", CGEMM_DEFAULT_UNROLL_M);
>                                    ^~~~~~~~~~~~~~~~~~~~~~
>                                    DGEMM_DEFAULT_UNROLL_M getarch_2nd.c:20:35: error: ‘CGEMM_DEFAULT_UNROLL_N’ undeclared (first
> use in this function); did you mean ‘CGEMM_DEFAULT_UNROLL_M’?
>      printf("CGEMM_UNROLL_N=%d\n", CGEMM_DEFAULT_UNROLL_N);
>                                    ^~~~~~~~~~~~~~~~~~~~~~
>                                    CGEMM_DEFAULT_UNROLL_M getarch_2nd.c:21:35: error: ‘ZGEMM_DEFAULT_UNROLL_M’ undeclared (first
> use in this function); did you mean ‘CGEMM_DEFAULT_UNROLL_M’?
>      printf("ZGEMM_UNROLL_M=%d\n", ZGEMM_DEFAULT_UNROLL_M);
>                                    ^~~~~~~~~~~~~~~~~~~~~~
>                                    CGEMM_DEFAULT_UNROLL_M getarch_2nd.c:22:35: error: ‘ZGEMM_DEFAULT_UNROLL_N’ undeclared (first
> use in this function); did you mean ‘ZGEMM_DEFAULT_UNROLL_M’?
>      printf("ZGEMM_UNROLL_N=%d\n", ZGEMM_DEFAULT_UNROLL_N);
>                                    ^~~~~~~~~~~~~~~~~~~~~~
>                                    ZGEMM_DEFAULT_UNROLL_M getarch_2nd.c:69:50: error: ‘SGEMM_DEFAULT_Q’ undeclared (first use in
> this function); did you mean ‘SGEMM_DEFAULT_UNROLL_N’?
>      printf("#define SLOCAL_BUFFER_SIZE\t%ld\n", (SGEMM_DEFAULT_Q * SGEMM_DEFAULT_UNROLL_N * 4 * 1 *  sizeof(float)));
>                                                   ^~~~~~~~~~~~~~~
>                                                   SGEMM_DEFAULT_UNROLL_N getarch_2nd.c:70:50: error: ‘DGEMM_DEFAULT_Q’
> undeclared (first use in this function); did you mean
> ‘SGEMM_DEFAULT_Q’?
>      printf("#define DLOCAL_BUFFER_SIZE\t%ld\n", (DGEMM_DEFAULT_Q * DGEMM_DEFAULT_UNROLL_N * 2 * 1 *  sizeof(double)));
>                                                   ^~~~~~~~~~~~~~~
>                                                   SGEMM_DEFAULT_Q getarch_2nd.c:71:50: error: ‘CGEMM_DEFAULT_Q’ undeclared (first use in
> this function); did you mean ‘DGEMM_DEFAULT_Q’?
>      printf("#define CLOCAL_BUFFER_SIZE\t%ld\n", (CGEMM_DEFAULT_Q * CGEMM_DEFAULT_UNROLL_N * 4 * 2 *  sizeof(float)));
>                                                   ^~~~~~~~~~~~~~~
>                                                   DGEMM_DEFAULT_Q getarch_2nd.c:72:50: error: ‘ZGEMM_DEFAULT_Q’ undeclared (first use in
> this function); did you mean ‘CGEMM_DEFAULT_Q’?
>      printf("#define ZLOCAL_BUFFER_SIZE\t%ld\n", (ZGEMM_DEFAULT_Q * ZGEMM_DEFAULT_UNROLL_N * 2 * 2 *  sizeof(double)));
>                                                   ^~~~~~~~~~~~~~~
>                                                   CGEMM_DEFAULT_Q make: *** [getarch_2nd] Error 1 make -j 4 -f Makefile.install install
> make[1]: Entering directory
> '/home/sid/caffe-mobile/third_party/OpenBLAS-0.2.19'
> Makefile.install:20: *** OpenBLAS: Please run "make" firstly.  Stop.
> make[1]: Leaving directory
> '/home/sid/caffe-mobile/third_party/OpenBLAS-0.2.19' Makefile:309:
> recipe for target 'install' failed make: *** [install] Error 2 CMake
> Warning at third_party/android-cmake/android.toolchain.cmake:324
> (message):   Could not determine machine name for compiler from  
> /home/sid/Android/Sdk/ndk-bundle/toolchains/mips64el-linux-android-4.9/prebuilt/linux-x86_64
> Call Stack (most recent call first):  
> third_party/android-cmake/android.toolchain.cmake:551
> (__DETECT_TOOLCHAIN_MACHINE_NAME)  
> third_party/android-cmake/android.toolchain.cmake:608
> (__GLOB_NDK_TOOLCHAINS)  
> /usr/share/cmake-3.10/Modules/CMakeDetermineSystem.cmake:91 (include) 
> CMakeLists.txt
> 
> 
> CMake Warning at third_party/android-cmake/android.toolchain.cmake:324
> (message):   Could not determine machine name for compiler from  
> /home/sid/Android/Sdk/ndk-bundle/toolchains/mipsel-linux-android-4.9/prebuilt/linux-x86_64
> Call Stack (most recent call first):  
> third_party/android-cmake/android.toolchain.cmake:551
> (__DETECT_TOOLCHAIN_MACHINE_NAME)  
> third_party/android-cmake/android.toolchain.cmake:608
> (__GLOB_NDK_TOOLCHAINS)  
> /usr/share/cmake-3.10/Modules/CMakeDetermineSystem.cmake:91 (include) 
> CMakeLists.txt
> 
> 
> CMake Error at third_party/android-cmake/android.toolchain.cmake:309
> (file):   file STRINGS file  
> "/home/sid/Android/Sdk/ndk-bundle/platforms/android-16/arch-arm/usr/include/android/api-level.h"   cannot be read. Call Stack (most recent call first):  
> third_party/android-cmake/android.toolchain.cmake:821
> (__DETECT_NATIVE_API_LEVEL)  
> /usr/share/cmake-3.10/Modules/CMakeDetermineSystem.cmake:91 (include) 
> CMakeLists.txt
> 
> 
> CMake Error at third_party/android-cmake/android.toolchain.cmake:823
> (message):   Specified Android API level (16) does not match to the
> level found ().   Probably your copy of NDK is broken. Call Stack
> (most recent call first):  
> /usr/share/cmake-3.10/Modules/CMakeDetermineSystem.cmake:91 (include) 
> CMakeLists.txt
> 
> 
> ERRORCould not find libsupc++.a for a chosen platform. Either your NDK
> is not supported or is broken. CMake Deprecation Warning at
> /usr/share/cmake-3.10/Modules/CMakeForceCompiler.cmake:69 (message):  
> The CMAKE_FORCE_C_COMPILER macro is deprecated.  Instead just set  
> CMAKE_C_COMPILER and allow CMake to identify the compiler. Call Stack
> (most recent call first):  
> third_party/android-cmake/android.toolchain.cmake:1146
> (CMAKE_FORCE_C_COMPILER)  
> /usr/share/cmake-3.10/Modules/CMakeDetermineSystem.cmake:91 (include) 
> CMakeLists.txt
> 
> 
> CMake Deprecation Warning at
> /usr/share/cmake-3.10/Modules/CMakeForceCompiler.cmake:83 (message):  
> The CMAKE_FORCE_CXX_COMPILER macro is deprecated.  Instead just set  
> CMAKE_CXX_COMPILER and allow CMake to identify the compiler. Call
> Stack (most recent call first):  
> third_party/android-cmake/android.toolchain.cmake:1158
> (CMAKE_FORCE_CXX_COMPILER)  
> /usr/share/cmake-3.10/Modules/CMakeDetermineSystem.cmake:91 (include) 
> CMakeLists.txt
> 
> 
> CMake Error: CMake was unable to find a build program corresponding to
> "Unix Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need
> to select a different build tool.
> -- Configuring incomplete, errors occurred!

Пожалуйста, помогите.Также попробуйте взглянуть на make-файлы внутри репозитория.Если кто-то знает лучший способ портировать модель кафе на Android, пожалуйста, предложите.

...