编译和安装

操作步骤

当在x86机器上安装时,忽略步骤28910操作。

  1. 使用PuTTY工具,以root用户登录服务器。
  2. 执行以下命令添加依赖sse2neon。

    cd /path/to/KMERSGWAS
    wget https://github.com/DLTcollab/sse2neon/archive/master.tar.gz --no-check-certificate -O sse2neon-master.tar.gz
    tar -zxf sse2neon-master.tar.gz
    export CPLUS_INCLUDE_PATH=/path/to/KMERSGWAS/sse2neon-master/:$CPLUS_INCLUDE_PATH
    export C_INCLUDE_PATH=/path/to/KMERSGWAS/sse2neon-master/:$C_INCLUDE_PATH

  3. 执行以下命令解压kmersGWAS安装包。

    cd /path/to/KMERSGWAS
    tar -zxf kmersGWAS-0.2-beta.tar.gz

  4. 执行以下命令将KMC包拷贝到kmersGWAS里。

    tar -zxf KMC-3.1.2rc1.tar.gz
    cp -rf KMC-3.1.2rc1/* kmersGWAS-0.2-beta/include/KMC/

  5. 执行以下命令将CTPL包拷贝到kmersGWAS里。

    tar -zxf CTPL-v.0.0.2.tar.gz
    cp -rf CTPL-v.0.0.2/* kmersGWAS-0.2-beta/include/CTPL/

  6. 执行以下命令将cxxopts包拷贝到kmersGWAS里。

    tar -zxf cxxopts-2.2.1.tar.gz
    cp -rf cxxopts-2.2.1/* kmersGWAS-0.2-beta/include/cxxopts/

  7. 执行以下命令进入kmersGWAS安装目录。

    cd kmersGWAS-0.2-beta

  8. 执行以下命令删除编译项“-msse4.2”

    sed -i 's/-msse4.2//g' Makefile

  9. 执行以下命令添加编译优化参数。

    sed -i 's/-O3/-O3 -march=armv8.2-a -mtune=tsv110/g' Makefile

  10. 执行以下命令将x86“nmmintrin.h”引用文件替换掉。

    • 将“nmmintrin.h”和“smmintrin.h”注释掉:
      sed -i 's/#include <nmmintrin.h>/\/\/#include <nmmintrin.h>/g;s/#include <smmintrin.h>/\/\/#include <smmintrin.h>/g' src/kmers_multiple_databases.cpp
      sed -i 's/#include <smmintrin.h>/\/\/#include <smmintrin.h>/g' src/snps_multiple_databases.cpp
    • 引入头文件“sse2neon.h”:
      sed -i '/#include <nmmintrin.h>/ i\#include "sse2neon.h"' src/kmers_multiple_databases.cpp
      sed -i '/#include <smmintrin.h>/ i\#include "sse2neon.h"' src/snps_multiple_databases.cpp

  11. 执行以下命令进行编译安装。

    make -j

  12. 执行以下命令删除原有的“gemma_0_96”并创建新的软连接。

    cd /path/to/KMERSGWAS/kmersGWAS-0.2-beta/external_programs
    rm -rf gemma_0_96
    ln -s /path/to/GEMMA/bin/gemma gemma_0_96