インストール環境の概要:
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.a、liblapack.aとlibtmglib.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をインストールします
これは私が最も多くのピットを踏んだ場所です、インストールするために以下のステップに必ず従ってください。
-
ダウンロードダウンロード
を開始する予定がありませんでした。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つしかありません(もう文句を言いたくない)
-
コンパイル
おめでとうございます、基本的に後で他の質問はありません、続けましょう!
$ 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
以下は技術的な要約です
次のエラーが発生した場所は覚えていませんが、解決策は引き続き使用できます。
-
「__has_include」オペランドの前に「(」
がない場合、エラーが発生したファイルを見つけ、その中のifステートメントを調整して、主に__has_includeを含むステートメントに注釈を付けますが、それでも判定結果を正確に保つ必要があります。 -
libint_f.modが見つかりません
このエラーの理由は、libintオフィシャルを使用しているためです。解決策は、libintの再インストールの記事を参照してください。 -
'dfftw_plan_with_nthreads_'へ
の未定義の参照このエラーの理由は、fftwのインストール時に–enable-threadsが追加されなかったためです。解決策はfftwを再インストールすることです。 -
コンパイル後の実行時のエラー: `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.aをlibelpa.aに変更しました。コンパイルは成功しましたが、実行できませんでした。 。このエラーの原因を見つけるのに2日かかりました。とても痛いです。
転載元をご記入ください、よろしくお願いします。