歴史上最も完全なCP2K7.1.0インストールチュートリアル

インストール環境の概要:
CPU:AMD
OS:CentOS 7
MPI:OpenMPI 4.0.4
GCC:10.2.0

実際に最初からインストールします(新しいマシン、OpenMPIとGccのみがインストールされます)。理論的には、この方法はすべてのマシンに適用できます。OpenMPIとGccのインストールに問題はありません。注意が必要なのは、OpenMPIをインストールするときに、古いバージョンの構文をサポートするオプションをオンにする必要があることだけです。そうしないと、構文エラーが発生する可能性があります。その時点でソースを変更するだけです。コードは正常にインストールできますが、これは非常に面倒です。

CP2K 7.1.0ソースコードをダウンロードし、必要な依存ライブラリを表示します

ソースコードはgithubにあります。ここで注意すべき点は、gitコマンドを使用してソースコードをダウンロードする必要があるということです。

	$ git clone --recursive -b support/v7.1 https://github.com/cp2k/cp2k.git cp2k

githubページの右側にあるリリースから直接.gz圧縮パッケージをダウンロードすると、コンパイルを開始したときに一部のファイルが欠落していることを確認するメッセージが表示されます。プロンプトによると、ダウンロードするにはgitコマンドを使用する必要があります。これにより、ダウンロードにgitコマンドを使用しなかった場合、圧縮パッケージが解凍された後のフォルダーはgitリポジトリではないため、ダウンロードできません。ダウンロードしました。

解決策:.githubフォルダーをgitリポジトリから削除し、解凍したフォルダーに配置します(実験なし、理論は実行可能です)

次に実行します

    $ git submodule update --init --recursive

これにより、サブモジュールが自動的にダウンロードされます

cp2k / archフォルダーに必要な構成ファイルがあるかどうかを確認します。たとえば、必要な構成ファイルはLinux-x86-64-gfortran.psmpです。

開くと、このインストールに必要な他のパッケージの情報が上部に表示されます。次に例を示します。

  • GFortran 7.4.0
  • MPICH 3.3
  • LAPACK 3.8.0
  • ScaLAPACK 2.0.2、
  • FFTW 3.3
  • Libint 2.6.0
  • Libxc 4.3.4
  • libxsmm 1.14
  • ELPA 2019.05.001
  • プルーム2.5.2
  • SPGLIB 1.12.2

次に行う必要があるのは、上記のすべてのパッケージを順番にダウンロードしてインストールし(超無敵の巨大なピット!!!)、99%のピットを回避するために記事を段階的に実行することです。

以下のすべてのダウンロードおよび解凍プロセスは無視します(特別な場合はテキストで説明します)。すべての圧縮パッケージを解凍した後、それらを同じディレクトリに配置します。インストール手順は少し面倒で、ある程度の量です。忍耐とケアが必要です。

lapack-3.8.0をインストールします

	$ cd lapack-3.8.0/
	$ cp make.inc.example make.inc
	$ vim make.inc
	# 修改下面几处
	CC      = mpicc
	CFLAGS = -O3 -fPIC
	FORTRAN = mpifort
	OPTS    = -O2 -frecursive -fallow-argument-mismatch -fPIC
	NOOPT   = -O0 -frecursive -fallow-argument-mismatch -fPIC
	LOADER   = mpifort
	LOADOPTS = -fallow-argument-mismatch -fPIC
	# 最下方还有一处需要更改
	BLASLIB = ../../libblas.a

ここで、すべてのコンパイルオプションの後に-fPICを追加する必要があることに注意してください。そうしないと、後で再コンパイルするように通知され、最後に変更する必要がある場所はlibrefblas.aです。lapackライブラリは、後で-lblasを使用して他のソフトウェアをコンパイルするときに主に使用されます。変更しないと、usr / bin / ld:not find-lblasエラーが発生します。

	$ make -j 32

コンパイル後、あなたが見ることができます:3つのライブラリファイルが良いlibblas.aliblapack.alibtmglib.aを

scalapack-2.0.2をインストールします

ライブラリをコンパイルしなくてもCP2Kのコンパイル時にエラーが発生しないようですが、念のためインストールしてください。

	$ vim SLmake.inc
	# 修改下面几处
	FC            = mpif90
	CC            = mpicc
	# 最下方还有一处需要更改
	LIBS          = -L../lapack-3.8.0/ $(LAPACKLIB) $(BLASLIB)	

ここでの最後の変更は、インストールしたばかりのlapack-3.8.0のパスを追加することです。

	$ make -j 32

コンパイルが完了すると、libscalapack.aが表示されます。

fftw-3.3.8をインストールします

	$ cd fftw-3.3.8
	$ ./configure --prefix=./install --enable-threads --enable-avx512 --enable-avx2 --enable-avx --enable-sse2
	$ make -j 32
	$ make install

ここで、。/ configureに–enable-threadsオプションを追加する必要があることに注意してください。そうしないと、libfftw3_threads.laライブラリが後で失われます。

libxc-4.3.4をインストールします

ここでは、直接実行できるシェルスクリプトを提供します

#!/bin/bash
###############################################################################
# Copyright (c) Intel Corporation - All rights reserved.                      #
# This file is part of the XCONFIGURE project.                                #
#                                                                             #
# For information on the license, see the LICENSE file.                       #
# Further information: https://github.com/hfp/xconfigure/                     #
# SPDX-License-Identifier: BSD-3-Clause                                       #
###############################################################################
# Hans Pabst (Intel Corp.)
###############################################################################

if [ "" = "$1" ]; then PRFX=gnu-; else PRFX=$1-; shift; fi
HERE=$(cd $(dirname $0); pwd -P)
DEST=${HERE}/../libxc/${PRFX}skx

if [ ! -e ${HERE}/configure.ac ] || [ "${HERE}" != "$(pwd -P)" ]; then
  echo "Error: XCONFIGURE scripts must be located and executed in the application folder!"
  exit 1
fi

if [ "${HERE}" = "${DEST}" ]; then
  echo "Warning: LIBXC source directory equals installation folder!"
  read -p "Are you sure? Y/N" -n 1 -r
  if [[ ! $REPLY =~ ^[Yy]$ ]]; then
    exit 1
  fi
fi

CONFOPTS=""
TARGET="-mavx512f -mavx512cd -mavx512dq -mavx512bw -mavx512vl -mfma -L../lapack-3.8.0 -L../scalapack-2.0.2"

export FLAGS="-O3 ${TARGET}"
export LDFLAGS="-llapack -blas"
export CFLAGS="${FLAGS}"
export CXXFLAGS="${FLAGS}"
export FCFLAGS="${FLAGS}"
export LIBS=""

export AR="gcc-ar"
export FC="mpifort"
export CC="mpicc"
export CXX="mpicxx"

libtoolize
aclocal
autoheader
automake -a
autoconf

./configure \
  --prefix=./install \
  CC=mpicc CXX=mpicxx FC=mpifort \
  $*

ここでの注意点1.コンパイラをmpiコンパイラに変更します。2。以前にインストールしたlapackとscalapackを追加する必要があります。
このスクリプトのソースコードはhttps://github.com/hfp/xconfigure/raw/master/configにありますが、元のスクリプトはバージョン4.3.4のコンパイル時にエラーを報告します。

それをlibxc-4.3.4フォルダーにコピーし、make.shとして保存します。

	$ chmod +x make.sh
	$ ./make.sh
	$ make -j 32
	$ make install

spglib-1.12.2をインストールします

ここで注意することは何もありません。

	$ cd spglib-1.12.2
	$ mkdir _build
	$ cd _build
	$ cmake -DCMAKE_INSTALL_PREFIX="../install" ..
	$ make -j 32
	$ make install

elpaをインストールします-2019.05.001

使用できるスクリプト、リファレンスインストール4.3.4-libxcの使用も提供されています


export LDFLAGS="-fPIC -L../lapack-3.8.0 -L../scalapack-2.0.2"
export CFLAGS="-march=knl -fPIC -L../lapack-3.8.0 -L../scalapack-2.0.2"
export CXXFLAGS="-march=knl -fPIC -L../lapack-3.8.0 -L../scalapack-2.0.2"
export FCFLAGS="-march=knl -fPIC -fallow-argument-mismatch -L../lapack-3.8.0 -L../scalapack-2.0.2 -L/path/to/zlib/lib"
export LIBS="-llapack -lblas"

export AR="gcc-ar"
export FC="mpifort"
export CC="mpicc"
export CXX="mpicxx"

./configure 
	--enable-openmp \
	--enable-shared=no \
	--disable-sse --disable-sse-assembly \
	--disable-avx --disable-avx2 \
	--prefix=./install 

コンパイラ、インストールパス、およびLDFLAGSなどのコンパイルオプションをここで変更する必要があります。今回インストールされるマシンはAMDのCPUであるため、-march = knlオプションが必要です。そうでない場合、エラーが報告されます:avx512 。(特定のエラーは覚えていません)。

実行するためのスクリプトを実行した後32 -jメイクをメイクをインストールします

gsl-2.6をインストールします

ここで注意することは何もありません。

	$ cd spglib-1.12.2
	$ ./configure --prefix=./install CC=mpicc CXX=mpicxx FC=mpifort 
	$ make -j 32
	$ make install

plumed2-2.5.5をインストールします

ここでは、lapack、fftw、gslのパスを追加するために注意を払う必要があるだけです。

	$ cd spglib-1.12.2
	$ ./configure --prefix=./install CXX=mpicxx CC=mpicc LDFLAGS="-L../lapack-3.8.0 -L../fftw-3.3.8/install/lib -L../gsl-2.6/install/lib" LIBS="-llapack -lblas -lfftw3" --enable-gsl
	$ make -j 32
	$ make install

libxsmm-1.16をインストールします

$ cd libxsmm-1.16
$ make INTRINSICS=1  SSE=2 AVX=2 ROW_MAJOR=0 INDICES_M="$(echo $(seq 1 24))" INDICES_N="$(echo $(seq 1 24))" INDICES_K="$(echo $(seq 1 24))"

ここではgccのハイバージョンが使用されており、具体的な手順はlibxsmmの公式Webサイトで説明されているためINTRINSICS = 1オプションには特別な注意を払う必要があります。

下位バージョンのgccを使用している場合、このオプションを追加するとエラーが報告されることがあります。このオプションを削除するだけです。

boost-1_74_0をインストールします

システムにBoostがあり、バージョンが1.30以上の場合、Boostをインストールする必要はありません。
ブーストのインストールプロセスは他のソフトウェアとは異なりますが、特に注意する必要はありません。

	$ cd boost_1_74_0/
	$ ./bootstrap.sh --with-libraries=all --with-toolset=gcc
	# 这时候会出现一个新的文件 b2
	$ ./b2 install --prefix=./install

gmp-6.2.0をインストールします

一部の学生はここで質問があるかもしれません:なぜgmpをインストールするのですか?gccをインストールしたときに、すでにインストールしていませんか?

理由:システムのgccは管理者によってコンパイルされ、gmpはインストールされていますが、インストールプロセス中にC ++構文がサポートされていないため、mpicxxを使用してプログラムをコンパイルするとエラーが発生します。システムのgmp / libすでにlibgmpxx.soが含まれている場合は、ここでgmpを再インストールする必要はありません。

gmpをインストールするプロセスは複雑ではありません。

	$ cd gmp-6.2.0
	$ ./configure --prefix=./install  --enable-cxx
	$ make -j 32
	$ make install

必ず-enable-cxxオプションを追加してください。そうしないと、上記のエラーが引き続き発生します。

libint-v2.6.0をインストールします

これは私が最も多くのピットを踏んだ場所です、インストールするために以下のステップに必ず従ってください。

  1. ダウンロードダウンロード
    を開始する予定がありませんでした。githubの公式バージョンlibintはインストールされているcp2k-7.1.0には適用されません。https://github.com/cp2k/libintをコンパイルするために提供されている特定のインストールパッケージcp2kを使用する必要があります-cp2k / releases / tag /v2.6.0。

    ネチズンによると、公式版もコンパイルに失敗するという。一度コンパイルできたのは幸運だったのかもしれない。

    ダウンロードしたバージョンはlibint-v2.6.0-cp2k-lmax-6.tgzです。公式バージョンは全部で4つあります。ランダムに1つ選んで成功しました。とても感動しました。

    ここに間違ったソースコードを書かないでください。無関係なファイルは3つしかありません(もう文句を言いたくない)

  2. コンパイル
    おめでとうございます、基本的に後で他の質問はありません、続けましょう!

	$ cd libint-v2.6.0-cp2k-lmax-6
	$ ./configure --prefix=./install  --enable-fortran CC=mpicc CXX=mpicxx CXXFLAGS="-O3 -I../gmp-6.2.0/install/include -L../gmp-6.2.0/install/lib -L/apps/software/zlib/1.2.11/gcc/10.2.0/lib" CFLAGS="-O3 -I../gmp-6.2.0/install/include -L../gmp-6.2.0/install/lib -L/apps/software/zlib/1.2.11/gcc/10.2.0/lib" --with-boost=../boost_1_74_0/install FC=mpifort FCFLAGS="-O3 -I../gmp-6.2.0/install/include -L../gmp-6.2.0/install/lib -L/apps/software/zlib/1.2.11/gcc/10.2.0/lib"
	$ make -j 32
	$ make install

ここで使用するzlibはシステムに付属しています。システムにzlibがない場合は、自分でインストールできます。これは非常に簡単です。

CP2Kをインストールする

最後に、私たちの主人公がステージに立っています。インストールプロセスは実際には非常に高速で簡単ですが、ここでの面倒な手順は本当に法外です。

まず、必要な構成ファイルを変更します。ここではarch /Linux-x86-64-gfortran.psmpを使用しています。

CC          = mpicc
FC          = mpif90
LD          = mpif90
AR          = ar -r

include     /path/to/plumed2-2.5.5/install/lib/plumed/src/lib/Plumed.inc.static

ELPA_VER    = 2019.05.001
ELPA_INC    =  /path/to/elpa-2019.05.001/install/include/elpa_openmp-$(ELPA_VER)
ELPA_LIB    =  /path/to/elpa-2019.05.001/install/lib

FFTW_INC    =  /path/to/fftw-3.3.8/install/include
FFTW_LIB    =  /path/to/fftw-3.3.8/install/lib

LIBINT_INC  =  /path/to/libint-v2.6.0-cp2k-lmax-6/install/include
LIBINT_LIB  =  /path/to/libint-v2.6.0-cp2k-lmax-6/install/lib

LIBXC_INC   =  /path/to/libxc-4.3.4/install/include
LIBXC_LIB   =  /path/to/libxc-4.3.4/install/lib

LIBXSMM_INC =  /path/to/libxsmm-1.16/include
LIBXSMM_LIB =  /path/to/libxsmm-1.16/lib

SPGLIB_INC  =  /path/to/spglib-1.12.2/install/include
SPGLIB_LIB  =  /path/to/spglib-1.12.2/install/lib

# 下面这些是原来没有的,请自行添加

LAPACK_LIB  =  /path/to/lapack-3.8.0
SCALA_LIB   =  /path/to/scalapack-2.0.2
GSLBLAS_LIB =  /path/to/gsl-2.6/install/lib
GSLBLAS_INC =  /path/to/gsl-2.6/install/include
ZLIB_LIB    =  /path/to/zlib-1.2.11/lib
PLUMED_LIB  =  /path/to/plumed2-2.5.5/install/lib
PLUMED_INC  =  /path/to/plumed2-2.5.5/install/include


CFLAGS      = -O2 -g -mtune=native

DFLAGS      = -D__ELPA -D__FFTW3 -D__LIBINT -D__LIBXC -D__LIBXSMM
DFLAGS     += -D__MPI_VERSION=3 -D__PLUMED2 -D__SPGLIB
DFLAGS     += -D__parallel -D__SCALAPACK

FCFLAGS     = $(CFLAGS) $(DFLAGS)
FCFLAGS    += -ffree-form -ffree-line-length-none
FCFLAGS    += -fopenmp -fallow-argument-mismatch
FCFLAGS    += -ftree-vectorize -funroll-loops -std=f2008
FCFLAGS    += -I$(ELPA_INC)/elpa -I$(ELPA_INC)/modules
FCFLAGS    += -I$(FFTW_INC) -I$(LIBINT_INC) -I$(LIBXC_INC) -I$(LIBXSMM_INC) -I$(GSLBLAS_INC) -I$(PLUMED_INC) -I$(SPGLIB_INC)

LDFLAGS     = $(FCFLAGS) -static-libgfortran

LIBS        = -L$(PLUMED_LIB) -L$(GSLBLAS_LIB) -L$(ZLIB_LIB) -lgsl -lgslcblas -lz -L$(LIBXSMM_LIB) -L$(FFTW_LIB)
LIBS       += $(ELPA_LIB)/libelpa_openmp.a
LIBS       += $(LIBXC_LIB)/libxcf03.a
LIBS       += $(LIBXC_LIB)/libxc.a
LIBS       += $(LIBINT_LIB)/libint2.a
LIBS       += $(SPGLIB_LIB)/libsymspg.a
LIBS       += $(LIBXSMM_LIB)/libxsmmf.a
LIBS       += $(LIBXSMM_LIB)/libxsmm.a
LIBS       += $(FFTW_LIB)/libfftw3.a
LIBS       += $(FFTW_LIB)/libfftw3_threads.a
LIBS       += $(SCALA_LIB)/libscalapack.a
LIBS       += $(LAPACK_LIB)/liblapack.a
LIBS       += $(LAPACK_LIB)/libblas.a
LIBS       += -ldl -lpthread -lstdc++

上記の設定ファイルは、/ path / toを自分のアドレスに変更するだけで済みます。

 	$ make ARCH=Linux-x86-64-gfortran VERSION=psmp -j 32

ダウンロードを直接実行するだけで、gitコマンドを実行するように求められる場合があります。マシンがインターネットに接続できない場合は、ネットワーク環境で実行が完了した後、再度アップロードできます。

次に、インストールが完了するまで静かに待つ必要があります。

インストールが完了すると、exe / Linux-x86-64-gfortranフォルダーに実行可能ファイルcp2k.psmpが表示されます。

この時点で、インストールはすべて終了します

使用する

上記のインストール済みの依存ライブラリ/ libフォルダはすべてLD_LIBRARY_PATHに追加する必要があり、依存ライブラリ/ binはPATHに追加する必要があります

涙目、花を振りかけるQAQ

以下は技術的な要約です

次のエラーが発生した場所は覚えていませんが、解決策は引き続き使用できます。

  1. 「__has_include」オペランドの前に「(」
    がない場合、エラーが発生したファイルを見つけ、その中のifステートメントを調整して、主に__has_includeを含むステートメントに注釈を付けますが、それでも判定結果を正確に保つ必要があります。

  2. libint_f.modが見つかりません
    このエラーの理由は、libintオフィシャルを使用しているためです。解決策は、libintの再インストールの記事を参照してください

  3. 'dfftw_plan_with_nthreads_'へ
    未定義の参照このエラーの理由は、fftwのインストール時に–enable-threadsが追加されなかったためです。解決策はfftwを再インストールすることです。

  4. コンパイル後の実行時のエラー: `cp2k-7.1 / exe / Linux-x86-64-gfortran / cp2k.psmp 'の
    エラー:munmap_chunk():無効なポインター:0x000000000e9d1800このエラーは、-enable-を追加せずにelpaライブラリをコンパイルする場合に発生します。 openmpオプション、数日前(2020.09.27)このエラーにとても混乱していたので、理由はわかりません。elpaライブラリをコンパイルするときにこのオプションを追加せず、arch / Linux-x86-64-gfortran.psmp構成ファイルのlibelpa_openmp.alibelpa.aに変更しました。コンパイルは成功しましたが、実行できませんでした。 。このエラーの原因を見つけるのに2日かかりました。とても痛いです。

転載元をご記入ください、よろしくお願いします。

おすすめ

転載: blog.csdn.net/qq_32115939/article/details/108751525