在Ubuntu下安裝DeepMD-kit

在Ubuntu下安裝DeepMD-kit

DeePMD-kit是一個流行的多體(many-body)深度學習勢(deep learning potential)框架,需要從頭安裝tensorflow,比較繁瑣,官網的安裝教程也有一些暗坑,本文主要講解如何在Ubuntu下順利安裝DeePMD-kit,主要參考資料[安裝deepmd]和[原始碼安裝TensorFlow]

https://blog。csdn。net/xszyqbr/article/details/82961934

https://github。com/deepmodeling/deepmd-kit/blob/master/doc/install-tf。1。12。md

線上安裝必須的工具

#automake 工具sudo apt-get install autoconf automake libtool#根據是否已經安裝make,git和cmake決定是否安裝sudo apt-get install make cmake git

安裝JAVA環境

安裝OpenJDK 8 JDK sudo apt install openjdk-8-jdk設定JAVA_HOME變數#檢視java可執行檔案的實際目錄,一般指向/etc/alternatives/javals -lrt /usr/bin/java#檢視/etc/alternatives/java的實際目錄ls -lrt /etc/alternatives/java#一般指向 [/usr/lib/jvm/java-1。8。0-openjdk。x86_64](接下來用的到的)/bin/javaexport JAVA_HOME=/usr/lib/jvm/java-1。8。0-openjdk。x86_64export JRE_HOME=/usr/lib/jvm/java-1。8。0-openjdk。x86_64/jreexport CLASSPATH=。:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH

安裝bazel,必須安裝0。15。0及以上版本

參考安裝deepmd教程安裝,但版本不一樣,如果安裝失敗,按照方法2安裝使用預編譯好的0。15。0版本的bazel二進位制版本(https://blog。csdn。net/darkrabbit/article/details/81262556)安裝完成後,將bazel位置放在環境變數裡,方法2預設會自動把可執行檔案放到 /home/usr/bin目錄下,如果預設這個目錄已經在PATH裡無需主動新增。

安裝Anaconda3。5,並用conda安裝blas

按照[安裝deepmd]安裝Anaconda,並加入到環境變數使用conda安裝blas sudo conda install ——channel https://conda。anaconda。org/anaconda blas按照[原始碼安裝TensorFlow]教程使用pip安裝tensorflow1。12。0

下載tensorflow原始碼,安裝tensorflow的C++介面

進入想放置tensorflow安裝包的目錄,比如cd ~git clone https://github。com/tensorflow/tensorflow tensorflow -b v1。12。0 ——depth=1cd tensorflow。/configure,有較多的選項,參考部落格(https://blog。csdn。net/yhily2008/article/details/79967118)選擇配置。使用bazel 編譯tensorflow,可以控制編譯時的所用資源 等待非常久的時間bazel build -c opt ——verbose_failures //tensorflow:libtensorflow_cc。so設定tensorflow的主安裝目錄,我裝在使用者目錄~/tensorflow_root下export tensorflow_root=~/tensorflow_rootmkdir -p ${tensorflow_root}在當前目錄下下載tensorflow的依賴檔案:Protobuf, Eigen, nsync and absl

Protobuf#設定在${tensorflow_root}目錄下新建tmps資料夾用於放置中間檔案mkdir -p ${tensorflow_root}/tmpsmkdir -p ${tensorflow_root}/tmps/protosed -i ‘s;PROTOBUF_URL=。*;PROTOBUF_URL=\“https://mirror。bazel。build/github。com/google/protobuf/archive/v3。6。0。tar。gz\”;g’ tensorflow/contrib/makefile/download_dependencies。shtensorflow/contrib/makefile/download_dependencies。shcd tensorflow/contrib/makefile/downloads/protobuf/。/autogen。sh。/configure ——prefix=${tensorflow_root}/tmps/protomakemake installEigenmkdir -p ${tensorflow_root}/tmps/eigencd 。。/eigenmkdir build_dircd build_dircmake -DCMAKE_INSTALL_PREFIX=${tensorflow_root}/tmps/eigen/ 。。/make installnsyncmkdir -p ${tensorflow_root}/tmps/nsynccd 。。/。。/nsyncmkdir build_dircd build_dircmake -DCMAKE_INSTALL_PREFIX=${tensorflow_root}/tmps/nsync/ 。。/makemake installabslcd 。。/。。/abslbazel buildmkdir -p ${tensorflow_root}/include/sudo rsync -avzh ——include ‘*/’ ——include ‘*。h’ ——exclude ‘*’ absl ${tensorflow_root}/include/cd 。。/。。/。。/。。/。。將以上庫檔案複製到tensorflow的安裝目錄mkdir -p ${tensorflow_root}/libcp bazel-bin/tensorflow/libtensorflow_cc。so ${tensorflow_root}/lib/cp bazel-bin/tensorflow/libtensorflow_framework。so ${tensorflow_root}/lib/cp ${tensorflow_root}/tmps/proto/lib/libprotobuf。a ${tensorflow_root}/lib/cp ${tensorflow_root}/tmps/nsync/lib/libnsync。a ${tensorflow_root}/lib/#可能是nsync/lib64/libnsync。a然後複製標頭檔案mkdir -p ${tensorflow_root}/include/tensorflowcp -r bazel-genfiles/* ${tensorflow_root}/include/cp -r tensorflow/cc ${tensorflow_root}/include/tensorflowcp -r tensorflow/core ${tensorflow_root}/include/tensorflowcp -r third_party ${tensorflow_root}/includecp -r ${tensorflow_root}/tmps/proto/include/* ${tensorflow_root}/includecp -r ${tensorflow_root}/tmps/eigen/include/eigen3/* ${tensorflow_root}/includecp -r ${tensorflow_root}/tmps/nsync/include/*h ${tensorflow_root}/include清理標頭檔案目錄下的原始檔cd ${tensorflow_root}/includefind 。 -name “*。cc” -type f -delete可以刪除所有依賴的快取檔案rm -fr ${tensorflow_root}/tmps/eigen ${tensorflow_root}/tmps/nsync ${tensorflow_root}/tmps/proto

安裝DeePMD-kit

先在${tensorflow_root}的上級目錄克隆DeePMD-kit原始碼cd ${tensorflow_root} && cd 。。/git clone https://github。com/deepmodeling/deepmd-kit。git deepmd-kit透過deepmd_source_dir變數記錄原始碼的位置cd deepmd-kitexport deepmd_source_dir=`pwd`cd ${deepmd_source_dir}/sourcemkdir buildcd build設定deepmd-kit的主安裝目錄,我裝在使用者目錄~/deepmd_root下,執行cmake,export deepmd_root=~/deepmd_rootmkdir -p ${deepmd_root}#如果用gcc>5。0 去掉選項-DTF_GOOGLE_BIN=true,如果執行時出現deepmd-kit/lib/deepmd/libop_abi。so: undefined symbol:請開啟選項-DTF_GOOGLE_BIN=truecmake -DTF_GOOGLE_BIN=true -DTENSORFLOW_ROOT=${tensorflow_root} \-DCMAKE_INSTALL_PREFIX=${deepmd_root} 。。如果cmake執行成功,make以及make installmakemake install如果一切順利地話,你將在$deepmd_root/bin目錄下找到以下可執行檔案$ ls ${deepmd_root}/bindp_frz dp_ipi dp_test dp_train#可以加入系統PATHecho ‘PATH=’${deepmd_root}‘/bin:$PATH’ >> ~/。bashrcsource ~/。bashrc

Install LAMMPS’s DeePMD-kit module

參考官方安裝教程,首先得學會lammps的安裝。

Build DeePMD-kit with GPU support

參考官方安裝教程。