编译和安装

操作步骤

  1. 使用PuTTY工具,以root用户登录服务器。
  2. 执行以下命令进入主程序安装目录。

    cd /path/to/DEEPMDKIT

  3. 执行以下命令创建虚拟python环境。

    python3 -m venv test
    source test/bin/activate

  4. 执行以下命令配置环境变量。

    export CC=gcc CXX=g++ FC=gfortran

  5. 执行以下命令创建并进入bazel目录。

    mkdir bazel
    cd bazel

  6. 执行以下命令下载bazel。

    wget https://github.com/bazelbuild/bazelisk/releases/download/v1.16.0/bazelisk-linux-arm64

  7. 执行以下命令进入配置bazel。

    chmod a+x bazelisk-linux-arm64
    ln -sf bazelisk-linux-arm64 bazel
    export PATH=`pwd`:$PATH

  8. 执行以下命令创建并进入tensorflow目录。

    cd ..
    mkdir tensorflow
    cd tensorflow/

  9. 执行以下命令下载tensorflow源码包。

    git clone https://github.com/tensorflow/tensorflow tensorflow -b v2.8.0 --depth=1

  10. 执行以下命令进入tensorflow源码目录并配置。

    cd tensorflow/
    ./configure

  11. 配置选项可以参考下图。

  12. 执行以下命令构建 TensorFlow的共享库。

    bazel build -c opt --verbose_failures //tensorflow:libtensorflow_cc.so

  13. 如出现证书验证问题,可以通过以下命令导入证书。

    vim ~/.bazelrc
    输入以下内容, /path/to/jre/lib/security/cacerts为java证书路径,示例中使用默认密码changeit。
    startup --host_jvm_args=-Djavax.net.ssl.trustStore=/path/to/jre/lib/security/cacerts --host_jvm_args=-Djava.net.ssl.trustStorePassword=changeit

  14. 执行以下命令重启bazel。

    bazel shutdown

  15. 执行以下命令将库文件复制到TensorFlow的安装目录。

    export tensorflow_root=/path/to/DEEPMDKIT/tensorflow/tensorflow_root
    mkdir -p $tensorflow_root/lib
    cp -d bazel-bin/tensorflow/libtensorflow_cc.so* $tensorflow_root/lib/
    cp -d bazel-bin/tensorflow/libtensorflow_framework.so* $tensorflow_root/lib/
    cp -d $tensorflow_root/lib/libtensorflow_framework.so.2 $tensorflow_root/lib/libtensorflow_framework.so

  16. 执行以下命令复制头文件。

    mkdir -p $tensorflow_root/include/tensorflow
    rsync -avzh --exclude '_virtual_includes/' --include '*/' --include '*.h' --include '*.inc' --exclude '*' bazel-bin/ $tensorflow_root/include/
    rsync -avzh --include '*/' --include '*.h' --include '*.inc' --exclude '*' tensorflow/cc $tensorflow_root/include/tensorflow/
    rsync -avzh --include '*/' --include '*.h' --include '*.inc' --exclude '*' tensorflow/core $tensorflow_root/include/tensorflow/
    rsync -avzh --include '*/' --include '*' --exclude '*.cc' third_party/ $tensorflow_root/include/third_party/
    rsync -avzh --include '*/' --include '*' --exclude '*.txt' bazel-tensorflow/external/eigen_archive/Eigen/ $tensorflow_root/include/Eigen/
    rsync -avzh --include '*/' --include '*' --exclude '*.txt' bazel-tensorflow/external/eigen_archive/unsupported/ $tensorflow_root/include/unsupported/
    rsync -avzh --include '*/' --include '*.h' --include '*.inc' --exclude '*' bazel-tensorflow/external/com_google_protobuf/src/google/ $tensorflow_root/include/google/
    rsync -avzh --include '*/' --include '*.h' --include '*.inc' --exclude '*' bazel-tensorflow/external/com_google_absl/absl/ $tensorflow_root/include/absl/

  17. 执行以下命令进入DEEPMDKIT源码目录。

    cd /path/to/DEEPMDKIT/deepmd-kit/source

  18. 执行以下命令创建并进入编译目录。

    mkdir build 
    cd build

  19. 执行以下命令生成makefile。

    cmake -DTENSORFLOW_ROOT=$tensorflow_root -DCMAKE_INSTALL_PREFIX=/path/to/DEEPMDKIT/deepmdkit_install ..

  20. 执行以下命令编译DEEPMDKIT。

    make 
    make install