美文网首页
How to build OpenBLAS for iPhone

How to build OpenBLAS for iPhone

作者: 赵坪生 | 来源:发表于2017-10-24 13:37 被阅读0次

    OpenBLAS 介绍

    OpenBLAS是由中科院软件所并行软件与计算科学实验室发起的基于GotoBLAS2 1.13 BSD版的开源BLAS库高性能实现.
    

    OpenBLAS源码地址

    OpenBLAS地址:https://github.com/xianyi/OpenBLAS/tree/release-0.2.21

    build OpenBLAS for iPhone

    1.下载源码,下载之后如下图所示:


    WX20171024-104921@2x.png

    2.找到c_check文件,在这段代码的后面

    $cross_suffix = "";
         if (dirname($compiler_name) ne ".") {
             $cross_suffix .= dirname($compiler_name) . "/";
         }
         if (basename($compiler_name) =~ /([^\s]*-)(.*)/) {
             $cross_suffix .= $1;
         }
    

    添加如下代码:

     $cross_suffix = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/";
    

    3.新建一个openBlasBuild.sh文件,写入如下代码:

    TOOLCHAIN_PATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
    SYSROOT_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.0.sdk
    make TARGET=ARMV8 BINARY=64 HOSTCC=clang CC="$TOOLCHAIN_PATH/clang -isysroot $SYSROOT_PATH -arch arm64 -miphoneos-version-min=8.0 -O2" NOFORTRAN=1 libs
    

    参数说明TOOLCHAIN_PATH xcode安装目录,SYSROOT_PATH iOS SDK目录,make编译,TARGET目标架构(可以是ARMV8,x86_64等),-arch arm64可以是arm64、armv7、arm7s。
    4.把openBlasBuild.sh执行文件放到刚刚下载的OpenBLAS源码根目录下,如下图所示:

    WX20171024-112904@2x.png

    赋予openBlasBuild.sh文件可执行权限:

    chmod a+x openBlasBuild.sh
    

    然后运行:

    ./openBlasBuild.sh
    

    等待编译完成,在OpenBLAS源码根目录下就生成了libopenblas_armv8p-r0.2.20.a文件。

    如何使用

    刚刚生成的是一个libopenblas_armv8p-r0.2.20.a静态库,需要的头文件如下图所示:(在OpenBLAS源码目录下都可以找得到这些头文件)


    WX20171024-114218@2x.png

    把这个文件夹加入到iOS工程引头文件就可以使用了,注意需要把用到的那个类的后缀名改为.mm,这样xcode才可以编译通过,因为这个库是c++写的。

    编译支持模拟器x86_64

    需要支持模拟器的把步骤3的代码改为:

    TOOLCHAIN_PATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
    SYSROOT_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk
    make TARGET=x86_64 BINARY=64 HOSTCC=clang CC="$TOOLCHAIN_PATH/clang -isysroot $SYSROOT_PATH -arch x86_64 -miphoneos-version-min=8.0 -O2" NOFORTRAN=1 libs
    

    新下载一份OpenBLAS源码,按照234步骤编译。通过lipo -create -output命令把两个.a合在一块就可以同时支持模拟器与真机了(iPhone5s以上机型与模拟器)。
    两个.a文件合并完成了,还需要合并用到的头文件中的config.h文件,每次生成.a文件都会生成对应的config.h文件。config.h里面是定义的宏,我们用#if !TARGET_IPHONE_SIMULATOR预编译宏区别是真机还是模拟器。把两个config.h文件的内容合并为一个如下图所示:

    WX20171024-120503@2x.png
    WX20171024-120701@2x.png

    制作好的openBlas库git地址:https://github.com/PingshengZhao/openBlasForiOS

    相关文章

      网友评论

          本文标题:How to build OpenBLAS for iPhone

          本文链接:https://www.haomeiwen.com/subject/lbjtpxtx.html