hahaha

hahaha

vasp 5.4.4 在win10/Ubuntu 18.04上的安裝

vasp 5.4.4 在 win10/Ubuntu 18.04 上的安裝#

linux 命令全部黑體表示,目錄、文件用斜體表示。

更新:ubuntu 20.04 不可以安裝 parallel studio

win10 1903 開啟 wsl 後下載 Ubuntu 18.04 lts 並關閉 windows defender 的即時保護(可選,不然 linux 系統下 io 不行)。新版本的 Ubuntu 登錄後首先需要自己創建一個用戶,設置 sudo 密碼。你可以載設置 root 密碼(可選)

sudo passwd root

進入系統後安裝 Intel Parallel Studio XE 配置編譯環境。

本次不使用 gnu 安裝的原因是個人嘗試多次都編譯報錯,待有空研究一下。理論上 gnu 安裝是最方便的,只需要 apt-get 少數幾個包後就能編譯。

Intel Parallel Studio X 用 edu.cn 郵箱註冊教育賬號後下載在線安裝包,大小 18 MB。wgettar -xzvf 解壓,進入目錄。用 root 權限運行 install.sh(當然你也可以修改安裝目錄後只為當前用戶安裝)

sudo ./install.sh

一路按照要求進行安裝,注意後面選擇自定義安裝,把不需要的組件全部取消選擇(硬碟空間大除外)。編譯 vasp 的環境只需要:Intel C++,Intel fortran,math kernel for fortran,以及 Intel mpi 。當然 math kenel for C++ 建議安裝上,其他軟件可以使用。總共安裝五個組件,大小約為 3 GB。(完整的是 11 GB )

安裝完後配置環境變量,在_~/.bashrc_ 內添加如下內容:

source /opt/intel/compilers_and_libraries_2019.4.243/linux/bin/compilervars.sh intel64
source /opt/intel/compilers_and_libraries_2019.4.243/linux/bin/iccvars.sh intel64
source /opt/intel/compilers_and_libraries_2019.4.243/linux/bin/ifortvars.sh intel64
source /opt/intel/compilers_and_libraries_2019.4.243/linux/mkl/bin/mklvars.sh intel64
source /opt/intel/impi/2019.4.243/intel64/bin/mpivars.sh    

本次安裝的是 2019.4.243 版本的 Parallel Studio XE ,添加的內容需要根據實際情況變化。添加完 source 一下更新變量,隨後 which icc ifort icpc mpiifort 檢查是否完成。

之後需要編譯並行 fftw ,進入目錄:

cd /opt/intel/compilers_and_libraries_2019.4.243/linux/mkl/interfaces/fftw3xf

進入後切換為 root 用戶,並 source /home/user/.bashrc ,隨後才能編譯 fftw3xf :

make libintel64

需要切換 root 的原因是直接 make 會提示權限不足(因為當前操作在_/opt_ 內)。提權 sudo make 時,由於 root 用戶沒有配置環境變量,導致無法編譯。編譯結束後 exit 退出 root 用戶,該目錄下出現文件:libfftw3xf_intel.a

另一個做法是安裝 Intel 庫時就不以 root 權限安裝,丟到自己目錄下,兩個方法都行。

隨後下載 vasp 文件,tar 解壓, cd 入目錄。將 makefile.iclude copy 出來:

cp arch/makefile.include.linux_intel makefile.include

修改少數內容即可。首先是數學庫的位置(就添加了一行代碼):

MKLROOT    = /opt/intel/compilers_and_libraries_2019.4.243/linux/mkl
MKL_PATH   = $(MKLROOT)/lib/intel64
BLAS       =
LAPACK     =
BLACS      = -lmkl_blacs_intelmpi_lp64
SCALAPACK  = $(MKL_PATH)/libmkl_scalapack_lp64.a $(BLACS)

當然第一行也可以不在 makefile.iclude 中加,直接加到 ~/.bashrc 中(因為 $MKLROOT 是一個環境路徑)。如果你不會這樣操作還是老老實實加在這裡。

最後 fftm 配置需要修改為:

OBJECTS    = fftmpiw.o fftmpi_map.o fft3dlib.o fftw3d.o \
           $(MKLROOT)/interfaces/fftw3xf/libfftw3xf_intel.a

沒錯,你只需要修改兩個位置就可以完成。網上的那些首先安裝 ifort ,然後編譯 openmpi ,然後編譯 fftm ,然後編譯 vasp 的教程是針對無法取得 Parallel Studio XE 的情況下寫的。個人使用的話,上 Parallel Studio XE 就行,簡單粗暴。

隨後 make all 或者 make std ,取決於你需要什麼版本。編譯時不能用,不能用,不能用 -j 指令,因為 vasp 包內依賴關係嚴重,加指令會導致編譯失敗。單線程編譯三個包約一個小時。如果編譯不成功可能是有些依賴包沒安裝,apt-get 一下就好。

編譯完成後配置環境變量,運行方法可以使用 mpirun 或者直接 vasp

完整的 makefile.iclude 如下:

# Precompiler options
CPP_OPTIONS= -DHOST=\"LinuxIFC\"\
             -DMPI -DMPI_BLOCK=8000 \
             -Duse_collective \
             -DscaLAPACK \
             -DCACHE_SIZE=4000 \
             -Davoidalloc \
             -Duse_bse_te \
             -Dtbdyn \
             -Duse_shmem

CPP        = fpp -f_com=no -free -w0  $*$(FUFFIX) $*$(SUFFIX) $(CPP_OPTIONS)

FC         = mpiifort
FCL        = mpiifort -mkl=sequential -lstdc++

FREE       = -free -names lowercase

FFLAGS     = -assume byterecl -w
OFLAG      = -O2
OFLAG_IN   = $(OFLAG)
DEBUG      = -O0

MKLROOT    = /opt/intel/compilers_and_libraries_2019.4.243/linux/mkl
MKL_PATH   = $(MKLROOT)/lib/intel64
BLAS       =
LAPACK     =
BLACS      = -lmkl_blacs_intelmpi_lp64
SCALAPACK  = $(MKL_PATH)/libmkl_scalapack_lp64.a $(BLACS)

OBJECTS    = fftmpiw.o fftmpi_map.o fft3dlib.o fftw3d.o \
           $(MKLROOT)/interfaces/fftw3xf/libfftw3xf_intel.a

INCS       =-I$(MKLROOT)/include/fftw

LLIBS      = $(SCALAPACK) $(LAPACK) $(BLAS)


OBJECTS_O1 += fftw3d.o fftmpi.o fftmpiw.o
OBJECTS_O2 += fft3dlib.o

# For what used to be vasp.5.lib
CPP_LIB    = $(CPP)
FC_LIB     = $(FC)
CC_LIB     = icc
CFLAGS_LIB = -O
FFLAGS_LIB = -O1
FREE_LIB   = $(FREE)

OBJECTS_LIB= linpack_double.o getshmem.o

# For the parser library
CXX_PARS   = icpc

LIBS += parser
LLIBS += -Lparser -lparser -lstdc++ 
# Normally no need to change this 
SRCDIR = ../../src 
BINDIR = ../../bin

筆記本雙核四線程,mpirun -np 2 運行結果顯示 CPU 占用僅有 50%,但超線程 cpu 不應該設置為 - np 兩倍核心數,所以就按 50% 跑吧。

另外在 Ubuntu 機器下,用非 root 方法安裝之後,在一個四核機器上能跑到 8 線程。因此更可能是 wsl 系統的問題

另外,說一下一些 bug 的解決。如果不開跨節點,需要刪除相應配置文件。自己電腦上運行可能會報內存不夠的錯,此時用 mpirun 不能直接用 vasp_std 。另外對於大體系需要修改 stack 大小,例如改成 256 MB ,不然會內存溢出。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。