计算化学公社

标题: CP2K第一性原理程序在Linux中的安装方法 [打印本页]

作者
Author:
sobereva    时间: 2021-2-17 06:47
标题: CP2K第一性原理程序在Linux中的安装方法
CP2K第一性原理程序在Linux中的安装方法
Installation method of CP2K first principle program in Linux

文/Sobereva@北京科音
First release: 2021-Feb-16  Last update: 2024-Sep-5


1 前言


CP2K(https://www.cp2k.org)是非常好、功能强大的第一性原理程序,开源免费,跑中、大周期性体系的速度甩基于平面波的程序如Quantum ESPRESSO和VASP一条街。笔者开发的Multiwfn(http://sobereva.com/multiwfn)的创建CP2K输入文件的功能使得CP2K做常见任务用起来非常简单(见《使用Multiwfn非常便利地创建CP2K程序的输入文件》http://sobereva.com/587),而且笔者开设了十分系统深入讲解CP2K使用的北京科音CP2K第一性原理计算培训班(http://www.keinsci.com/KFP),促使CP2K在国内变得相当流行。本文介绍一下CP2K怎么在Linux上进行安装。

最初写本文的时候我用的是CentOS,后来我改用Rocky Linux后实测也可以用与本文完全相同的方式安装。Rocky Linux是我目前最推荐用于科学计算目的计算机的Linux操作系统,没有之一。对于Ubuntu等其它Linux操作系统的用户我无法提供帮助,请参考本文随机应变。

最初写本文的时候CP2K最新的是8.1版。后来以同样的方法,经测试也可以顺利编译从8.2一直到2024.3的全部版本。安装其它版本的情况请随机应变。

CP2K有sopt、ssmp、popt、psmp四种版本,如果你不了解的话,先看一下本文文末附录中的介绍。

CP2K有三种安装方式:
(1)先依次手动编译CP2K所需要的各个库,然后再编译CP2K,具体过程见官方说明https://github.com/cp2k/cp2k/blob/master/INSTALL.md。我不推荐这种做法,因为CP2K涉及的库特别多,一个一个手动编译颇为麻烦。如果你有经验和耐心可以这么鼓捣。
(2)使用CP2K自带的toolchain脚本。toolchain可以自动把CP2K依赖的各种库都一一下载并且自动编译,最后输入几行命令再把CP2K编译出来就OK了。整个过程非常简单省事,下文第2节就介绍这种做法。
(3)直接用官方预编译的ssmp版,下载后直接就能用,极为方便,下文第3节会说具体做法。


2 基于toolchain安装CP2K

2.1 相关知识

CP2K是基于Fortran的程序,但它依赖的一堆库很多都是C/C++写的,所以Fortran和C/C++编译器都得有。CP2K的编译对于编译器有明确的要求,兼容情况见https://www.cp2k.org/dev:compiler_support。可见如果用gcc+gfortran来编译的话,gcc必须>=5.5版。CentOS 7.x自带的gcc是4.8.5版,因此没法直接编译,要么升级gcc编译器(具体做法自行google,有把系统弄出毛病的风险),要么用CentOS >=8.0版。CentOS 8.0自带的gcc是8.3.1,可以非常顺利地结合toolchain编译CP2K。下面笔者所述的情况和编译方式对于CentOS 8.0和CentOS 8 Stream是完全适用的,不适用于更老的CentOS。(PS:常有人问我装CentOS 8的时候应该选什么,建议Base Environment选Workstation,组件选GNOME Applications、Legacy UNIX Compatibility、Development Tools、Scientific Support)

用合适版本的Intel的icc和ifort编译器来编译CP2K及相关的库也可以,这样CentOS 7.x的用户也省得升级gcc或者换系统了。但19.0.1版结合toolchain用的时候笔者发现有的库编译不过去,笔者不打算深究,本文就不说这种做法了。

toolchain运行过程中会自动下载很多库的压缩包,所以必须联网,而且网速还不能太慢,否则有的库半天也下不下来,甚至最终失败。如果你在大陆,强烈建议通过科学的方式加速对外部网络的访问。

关于MKL数学库

CP2K会利用到BLAS和LAPACK标准库中的子程序。默认情况下会用OpenBLAS库提供的这部分子程序,但据说OpenBLAS的LAPACK子程序的效率不如Intel的MKL数学库好,因此改用MKL可能计算速度更快,不过笔者的一些简单的对比测试并未发现用MKL时速度有显著优势。如果你想用MKL的话,那么运行下一节的toolchain前先把MKL装到系统里,即运行下列命令:
dnf config-manager --add-repo https://yum.repos.intel.com/mkl/setup/intel-mkl.repo
rpm --import https://yum.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB
dnf install intel-mkl
此时MKL会被装到/opt/intel/目录下,被装到笔者机子里的是MKL 2018版,占2.2GB硬盘。把下面的语句加入到~/.bashrc文件中,然后重新进入终端使之生效
source /opt/intel/parallel_studio_xe_2018.0.033/bin/psxevars.sh
上面这行语句会使得MKLROOT环境变量指向MKL库的目录。当运行toolchain的时候发现MKLROOT环境变量被指定了,就会自动利用MKL数学库(无需额外写--with-mkl选项)。

如果你想离线安装MKL,可以去Intel官网免费注册并下载Intel OneAPI base toolkit离线安装包。安装的时候只选择安装其中的MKL就够了。装好后把下面这句加入~/.bashrc文件里,然后重新进入终端使之生效
source /opt/intel/oneapi/mkl/[实际版本号]/env/vars.sh
但这样装MKL的情况下,笔者遇到过CP2K 8.1的toolchain在装COSMA库的时候编译不过去的问题。如果你也遇到了此问题,把toolchain的命令后头加上--with-cosma=no避免装COSMA库即可,这对性能影响甚微。

2.2 通过toolchain安装CP2K依赖的库

https://github.com/cp2k/cp2k/releases/下载CP2K压缩包cp2k-8.1.tar.bz2,运行tar -xf cp2k-8.1.tar.bz2命令解压之。下文假设解压后的目录是/sob/cp2k-8.1/。

运行以下命令
cd /sob/cp2k-8.1/tools/toolchain/
./install_cp2k_toolchain.sh --with-sirius=no --with-openmpi=install --with-plumed=install

之后这个toolchain脚本就会依次下载各个库的压缩包到toolchain/build目录下并解压和自动编译,编译产生的可执行文件、库文件、头文件等都自动装到了toolchain/install目录下。在笔者的普通四核机子结合非常畅通的网络下,整个过程耗时约两个小时。其中最耗时的是编译libint那一步,花了一个小时有余,一定要耐心。

以下信息应了解一下
• 如果运行上述脚本后提示ERROR: (./scripts/install_gcc.sh) cannot find gfortran,应当运行dnf install gcc-gfortran先把gfortran编译器装上,然后重新运行脚本。
• 运行./install_cp2k_toolchain.sh --help可以查看toolchain的帮助。可见有的库默认是安装的,有的默认不装,通过选项来决定,可以按需调整。toolchain脚本的使用细节见https://github.com/cp2k/cp2k/blob/master/tools/toolchain/README.md
• --with-sirius=no选项代表不装本来自动会装的SIRIUS库。这个库使得CP2K可以像Quantum ESPRESSO那样完全基于平面波+赝势做计算,但一般这用不上,想做这种计算的人一般直接就用Quantum ESPRESSO了,其安装见《Quantum ESPRESSO在Linux中的安装方法》(http://sobereva.com/562)。
• --with-openmpi=install代表安装OpenMPI库,这使得编译出来的CP2K可以通过MPI方式并行计算。CP2K也支持其它MPI库如Intel MPI和MPICH。我个人比较习惯用OpenMPI,这也是目前最主流的。重要提示:如果你的机子里已经有了OpenMPI,应当用--with-openmpi=system,这使得CP2K直接用机子里现成的OpenMPI,否则额外再自动装一个OpenMPI可能造成一些冲突。
• --with-plumed=install代表安装默认不自动装的PLUMED库,这使得CP2K可以结合PLUMED做增强采样的动力学。如果你不需要此功能的话可以不加这个选项,可以节约少量编译时间。
• 从CP2K 2024.2开始支持了DFT-D4色散校正,这种校正的常识见《DFT-D4色散校正的简介与使用》(http://sobereva.com/464)。想用DFT-D4的话必须再额外带上--with-ninja --with-dftd4。
• toolchain默认用所有CPU核心并行编译,可以自行加上-j [并行核数]来明确指定用多少核。编译的耗时和CPU核数关系很大。笔者在36核机子上也就花了不到20分钟就把toolchain过程全都完成了。
• toolchain默认自动下载和编译cmake。如果你通过yum或dnf已经装过cmake而且其版本较新,可以再加上--with-cmake=system用当前系统里的cmake,能节约编译时间。
• 注意硬盘的空余空间应当足够。对于CP2K 8.1在上述命令执行完毕后,toolchain/build目录约占9GB,toolchain/install目录占约2GB。如果硬盘吃紧,建议toolchain运行成功后把这个build目录删掉,里面的文件之后用不着。
• 如果toolchain运行过程中某个库编译失败,可以去toolchain/build目录下的那个库的目录中去找编译过程输出的log文件,在里面搜error根据报错试图分析原因。toolchain运行失败后可以重新运行,它会根据根据toolchain/build目录的内容做判断,之前已经下载和编译成功的库会自动跳过,而从失败的库继续编译。如果把build和install目录都删了,则toolchain会从头执行。
• 如果在安装某个库的过程中一直卡着,通过top命令发现CPU也没在编译库,那么几乎一定是因为网速太慢导致那些库的压缩包老也下载不完(在大陆区域不可描述的访问国际互联网的条件下尤为常见)。可以去tools/toochain/build目录下看看正在装的这个库的压缩包,如果尺寸特别小,而且尺寸增加得特别缓慢,说明就是这个问题所致。解决方法是开微*N加速访问国际互联网。还一个办法是找个访问国际互联网通畅的机子或者拜托朋友,在那里安装一次当前版本的CP2K,然后把build目录下的.tgz、.tar.gz、.tar.bz2那些库的压缩包拷到之前那个机子的build目录下,这样那个机子在安装CP2K过程中就会直接用这些包而不会试图下载了,对于没法访问Internet的机子也可以这样离线安装CP2K。还有一种方法是直接自己去https://www.cp2k.org/static/downloads/下载CP2K编译过程中要用到的各种包放到build目录下。

2.3 编译CP2K

接着上一节,现在把/sob/cp2k-8.1/tools/toolchain/install/arch/下所有文件拷到/sob/cp2k-8.1/arch目录下。这些文件定义了编译不同版本的CP2K所需的参数,其内容是toolchain脚本根据装的库和当前环境自动产生的。

然后运行以下命令
source /sob/cp2k-8.1/tools/toolchain/install/setup
cd /sob/cp2k-8.1
make -j 4 ARCH=local VERSION="ssmp psmp"

-j后面的数字是并行编译用的核数,机子有多少物理核心建议就设多少。在笔者的普通4核机子上花了40分钟编译完。

注:如果编译中途报错,并且从后往前找error的时候看到cannot find -lz的报错提示,则运行dnf install zlib-devel命令装上zlib库,再重新运行上面的make那行命令即可。

编译出的可执行程序现在都产生在了/sob/cp2k-8.1/exe/local目录下,共1.1GB。这里面cp2k.popt、cp2k.psmp、cp2k.sopt、cp2k.ssmp就是我们所需要的CP2K的可执行文件了(popt和sopt其实分别是psmp和ssmp的符号链接)。

把以下内容加入到~/.bashrc文件里:
source /sob/cp2k-8.1/tools/toolchain/install/setup
export PATH=$PATH:/sob/cp2k-8.1/exe/local

重新进入终端后,就可以通过cp2k.ssmp等命令运行cp2k了。运行诸如cp2k.ssmp -v可以查看CP2K的版本、编译时用的库和参数信息。

注1:上面source这行必须有,因为有的库提供的.so文件是CP2K启动时所需的,source这个脚本使得相应的库的目录被加入到动态库的搜索路径中。而且用了这个之后toolchain过程中装的OpenMPI的可执行文件mpirun等才能直接用。

注2:cp2k-8.1目录下的lib和obj目录分别存的是CP2K编译过程产生的静态库文件和.o文件,总体积不小。由于之后用不着,因此如果想省硬盘可以把这俩目录删掉。


3 直接用官方的预编译版CP2K

对于CP2K 8.1,官方预编译版只提供了ssmp的,并且为了兼容性考虑,编译选项比较保守,没有根据CPU内核进行优化、没有利用SIMD指令集、用的是-O2而非更激进优化的-O3选项,也没用MKL。不过这并不代表官方预编译版的就很慢,笔者对简单任务测试过发现在速度上和自己编译的ssmp版差异不太大。不过,如果对某些类型任务发现ssmp版的CPU占用率普遍较低,吐血建议自己编译popt版,此时有可能二者速度差异超大、用ssmp完全发挥不出CP2K本来的代码效率,甚至可能ssmp版几乎算不动。

使用官方的预编译的ssmp版CP2K的做法如下:
和2.2节所述相同,先下载cp2k-8.1.tar.bz2压缩包并解压到比如/sob/cp2k-8.1目录。
https://github.com/cp2k/cp2k/releases/下载CP2K的预编译版可执行文件cp2k-8.1-Linux-x86_64.ssmp,改名为cp2k.ssmp并随便放到一个位置,假设放到了/sob/cp2k-8.1目录下。
将下面两行加入到~/.bashrc文件中:
export PATH=$PATH:/sob/cp2k-8.1
export CP2K_DATA_DIR=/sob/cp2k-8.1/data

保存后重新进入终端,CP2K就可以通过cp2k.ssmp命令使用了(ssmp版CP2K不是必须叫cp2k.ssmp,也可以改名为cp2k,这样运行更方便)。

为什么设CP2K_DATA_DIR环境变量这里说一下。在CP2K输入文件中,如果诸如BASIS_SET_FILE_NAME、POTENTIAL_FILE_NAME等关键词只定义了文件名而没有给路径,程序默认先在当前目录下搜索相应文件,找不到的话去CP2K_DATA_DIR搜索。CP2K_DATA_DIR对应的是编译的时候CP2K目录下的data目录的路径,但开发者在编译的时候其对应的路径显然跟我们当前情况不符,因此这里通过export来将CP2K_DATA_DIR环境变量改成自己机子里实际的data目录的路径。


4 运行和测试CP2K

这里提供一个简单的输入文件用于测试:http://sobereva.com/attach/586/test.inp。这是Multiwfn生成的2*2*2金刚石超胞做PBE/DZVP-MOLOPT-SR-GTH单点计算的输入文件。

先测试ssmp版。将test.inp放到当前目录下,运行:cp2k.ssmp test.inp |tee test.out。输出信息会在屏幕上显示,也同时写入到了test.out里。默认情况下所有CPU核心都会被用于OpenMP并行计算,如果比如想只用4核,就先运行export OMP_NUM_THREADS=4命令然后再运行CP2K,此时运行过程中CP2K进程的CPU占用率应当在300~400%。

再测试popt版。假设用4核通过MPI方式并行,就执行:mpirun -np 4 cp2k.popt test.inp |tee test.out。在top中看到会有4个cp2k.popt在运行,占用率皆接近100%。

如果你是自己编译的CP2K,建议默认用popt版而不要用ssmp版,因为在某些情况下后者运行效率远不及popt版(但也有些任务二者速度差异不大,看具体情况)。为了运行popt版省事,建议在~/.bashrc里面加入一行alias cp2k='mpirun -np 4 cp2k.popt'。重新进入终端后,只要输入cp2k test.inp |tee test.out就等价于输入mpirun -np 4 cp2k.popt test.inp |tee test.out了,用起来省事多了。

注:跑sopt、popt版时,不管设不设OMP_NUM_THREADS、设多少,OMP_NUM_THREADS都会被强行视为1。


附:CP2K的并行以及四种版本

CP2K支持MPI方式并行也支持OpenMP方式并行。最初CP2K是完全基于MPI并行的,但每个核心对应一个MPI进程来并行跑CP2K的话,对某些任务、较大体系消耗内存较高。CP2K如今很多代码也利用OpenMP方式实现了并行化,OpenMP并行的好处是很多数据可以在不同线程之间共享而不用保存副本,从而比MPI并行明显更节约内存。但由于有些CP2K代码仍只能通过MPI方式并行,因此单纯靠OpenMP并行的话某些任务的速度可能明显不及MPI并行,而且并行核数很多时纯OpenMP的并行效率比纯MPI并行的略低是很多科学计算程序中常见的现象。CP2K也支持MPI和OpenMP混合并行,比如CPU有36核,那么可以比如用9个MPI进程,每个MPI进程下属4个OpenMP线程,这样9*4把36个核都利用上,比直接用36个OpenMP线程并行效率可能明显更高,而比用36个MPI进程则明显更省内存(这对于杂化泛函计算比较重要。杂化泛函耗内存远高于纯泛函,如果借助OpenMP节约内存,使得有足够内存储存所有双电子积分,即in-core方式做SCF,就可以避免每次迭代过程中重算这些积分,令SCF迭代过程耗时低得多)。

MPI或MPI+OpenMP可以跨节点并行(OpenMP限于节点内),而纯OpenMP只能单机并行,因为OpenMP是基于共享内存的并行技术。

根据支持的并行方式的不同,CP2K分为四个版本:
sopt:只能单机单核计算,无法并行。s意为single
ssmp:OpenMP并行,可以单机多核运行。smp意为Symmetric multiprocessing
popt:MPI并行,可以单机并行也可以跨节点并行。p意为parallel
psmp:MPI+OpenMP混合并行,可以单机并行也可以跨节点并行

sopt版严格等价于ssmp版结合OMP_NUM_THREADS=1,popt版严格等价于psmp版结合OMP_NUM_THREADS=1。

实际上还有sdbg和pdbg版,前者相当于ssmp结合debug设置,后者相当于psmp结合debug设置,但这对于开发者调试程序才有意义,所以本文2.3节我们没有编译这俩版本。

作者
Author:
qinzhong605    时间: 2021-2-17 10:43
谢谢分享,社长怎么可以这么多才多艺啊!
作者
Author:
ChemG    时间: 2021-2-17 11:49
社长太强了,这就试试!已经跟着社长学了太多了继续学习!
作者
Author:
gog    时间: 2021-2-17 12:01
本帖最后由 gog 于 2021-2-17 12:02 编辑

“openblas 和mkl性能相差不大”相信很多读者看了这结论,都会有点怀疑——毕竟很多数学库没安装完整,也没有平行测试结果。
作者
Author:
啦啦黑还黑    时间: 2021-2-18 14:22
8.1的toolchain安装支持intel mpi了,就别用openmpi了。
cp2k用intel可以比openmpi快30%
之前7.1版本toolchain不支持intelmpi要自己修改很多地方比较麻烦,8.1现在都自带支持intel mpi还有intel mkl的toolchain编译脚本了。肯定要用呀。
作者
Author:
gog    时间: 2021-2-18 18:50
本帖最后由 gog 于 2021-2-19 09:10 编辑
啦啦黑还黑 发表于 2021-2-18 14:22
8.1的toolchain安装支持intel mpi了,就别用openmpi了。
cp2k用intel可以比openmpi快30%
之前7.1版本tool ...

倒腾8.1好几天,发现好多问题。gcc和openmpi编译psmp后 make test。计算速度真的好些慢。

gcc+openmpi+mkl组合,优势是组件可以全部安装上,缺点是很难改脚本。这个安装方法,在7.1中,已经成功实践。因此,还是很期望这种方法。目前cp2k8.1,还没能成功。


作者
Author:
Penson    时间: 2021-2-18 19:15
请问各位大佬,8.1比7.1有很明显的功能改进不?
作者
Author:
喵星大佬    时间: 2021-2-18 21:07
啦啦黑还黑 发表于 2021-2-18 14:22
8.1的toolchain安装支持intel mpi了,就别用openmpi了。
cp2k用intel可以比openmpi快30%
之前7.1版本tool ...

但是pexsi,quip,plumed和sirius编译会出问题,有的能解决有的解决不了(貌似是全家桶20.4的问题)
作者
Author:
wth1219    时间: 2021-2-18 22:36
gog 发表于 2021-2-18 18:50
倒腾8.1好几天,发现好多问题。gcc和openmpi编译psmp后 make test。计算速度真的好些慢。伤心得很。

我们课题组也遇到了类似的问题,同样的设置和配置跑64H2O的体系,磕磕绊绊编译的CP2K-8.1.psmp计算用时是顺顺利利编译的CP2K-6.1.popt计算用时的将近1.5倍……当然还是比“官方编译”的CP2K-8.1.ssmp要快很多的(CP2K-8.1.psmp计算用时约为CP2K-8.1.ssmp的2/3。)。
作者
Author:
喵星大佬    时间: 2021-2-18 23:25
wth1219 发表于 2021-2-18 22:36
我们课题组也遇到了类似的问题,同样的设置和配置跑64H2O的体系,磕磕绊绊编译的CP2K-8.1.psmp计算用时是 ...

同样用toolchain编译的8.1速度大概只有7.1的一半(用openmpi),intelmpi还没测试。
作者
Author:
wuzhiyi    时间: 2021-2-19 00:49
而且笔者写的Multiwfn(http://sobereva.com/multiwfn)的创建CP2K输入文件的功能使得CP2K做常见任务用起来比较简单

想问一下有没有详细说明multiwfn生成cp2k输入文件的指南?
我刚翻了一下手册,只看到3.100.2有一小段话,但没有详细的说明。
作者
Author:
sobereva    时间: 2021-2-19 07:26
wuzhiyi 发表于 2021-2-19 00:49
而且笔者写的Multiwfn(http://sobereva.com/multiwfn)的创建CP2K输入文件的功能使得CP2K做常见任务用起来 ...

最近几天我会写专门的帖子。

简单来说,载入任意Multiwfn支持的含有结构信息的文件(最好也含有晶胞信息的文件,比如cif、带CRYST1字段的pdb文件、Gaussian的PBC任务的输入文件、CP2K输入文件、GROMACS的gro文件等),在主菜单里输入cp2k即可进入创建输入文件的界面,按提示操作即可。这个功能至少对我自己而言,感觉设计得老方便了,用户只需要选想干什么即可,基本不需要费劲巴拉地查手册查例子一个输入文件写半天了。
作者
Author:
sobereva    时间: 2021-2-19 07:29
gog 发表于 2021-2-17 12:01
“openblas 和mkl性能相差不大”相信很多读者看了这结论,都会有点怀疑——毕竟很多数学库没安装完整,也没 ...

文中说了,用没用MKL我只是做了简单的对比测试(纯泛函GPW做单点),发现结果是如此,差异没超过10%。如果谁有精力做各项任务各种体系的全面对比测试,欢迎贴出来。
文中也说了,OpenBLAS的LAPACK的性能据一些说法不如MKL,文中没有在没有前提的情况下说“openblas和mkl性能相差不大”,而且这句话也不是文中原话。
MKL和OpenBLAS对于CP2K都是提供BLAS和LAPACK标准子程序,用OpenBLAS明显不算“数学库没装完整”。数学库真没装完整的话CP2K根本都编译不过去,更别提计算了。
作者
Author:
sobereva    时间: 2021-2-19 07:35
Penson 发表于 2021-2-18 19:15
请问各位大佬,8.1比7.1有很明显的功能改进不?

https://www.cp2k.org/version_history
我觉得算不上很明显的改进
作者
Author:
sobereva    时间: 2021-2-19 08:40
啦啦黑还黑 发表于 2021-2-18 14:22
8.1的toolchain安装支持intel mpi了,就别用openmpi了。
cp2k用intel可以比openmpi快30%
之前7.1版本tool ...

直接写--with-intelmpi=install会导致报错__INSTALL__ is not supported; please manually install Intel MPI。从toolchain/scripts/install_intelmpi.sh中可见toolchain脚本还没法直接装Intel MPI,只能利用已装好的Intel MPI。CentOS 8我没发现能直接yum/dnf装Intel MPI的方法
作者
Author:
gog    时间: 2021-2-19 08:53
本帖最后由 gog 于 2021-2-19 09:02 编辑
喵星大佬 发表于 2021-2-18 21:07
但是pexsi,quip,plumed和sirius编译会出问题,有的能解决有的解决不了(貌似是全家桶20.4的问题)

pexsi需要两个依赖库,其中的superlu默认版本更新到6.1。superlu对omp支持不好,不管是intelmpi还是openmpi都不编译成功,toolchain中的默认值是不安装该组件。估计得手动关闭omp独立编译该组件。quip是计算原子相互作用的,只支持gcc版本。无法通过的的话, 就选择No,只是少些功能吧。

我编译最成功的的版本,是7.1版本gcc+mkl+opempi编译,用toolchain方法。
作者
Author:
gog    时间: 2021-2-19 09:01
sobereva 发表于 2021-2-19 07:29
文中说了,用没用MKL我只是做了简单的对比测试(纯泛函GPW做单点),发现结果是如此,差异没超过10%。如 ...

被整迷糊了,还以为你用的openblas编译。
其实您用的mkl 2018
作者
Author:
gog    时间: 2021-2-19 09:21
wth1219 发表于 2021-2-18 22:36
我们课题组也遇到了类似的问题,同样的设置和配置跑64H2O的体系,磕磕绊绊编译的CP2K-8.1.psmp计算用时是 ...

博主用的是 mkl 2018编译的。使用的安装组合 gcc+openmpi+mkl。
作者
Author:
wth1219    时间: 2021-2-19 09:50
喵星大佬 发表于 2021-2-18 23:25
同样用toolchain编译的8.1速度大概只有7.1的一半(用openmpi),intelmpi还没测试。

我们尝试用Intel mpi编译popt版本结果失败了,可能是因为集群配置的Intel mpi 2019有问题。祝您好运。
作者
Author:
wth1219    时间: 2021-2-19 09:52
sobereva 发表于 2021-2-19 07:35
https://www.cp2k.org/version_history
我觉得算不上很明显的改进

主要想用其中新加的meta-GGA的stress tensor,结果一通操作下来发现那个可能是有问题的,目前正在测试中。
作者
Author:
wth1219    时间: 2021-2-19 09:55
sobereva 发表于 2021-2-19 08:40
直接写--with-intelmpi=install会导致报错__INSTALL__ is not supported; please manually install Intel ...

卢老师您编译的CP2K 8.1照比先前的版本(6.1、7.1)有变慢吗?
作者
Author:
喵星大佬    时间: 2021-2-19 10:18
sobereva 发表于 2021-2-19 08:40
直接写--with-intelmpi=install会导致报错__INSTALL__ is not supported; please manually install Intel ...

只能写--with-intelmpi=system用已经装好的,但是编译的时候还是会有很多幺蛾子
作者
Author:
乐平    时间: 2021-2-19 12:14
本帖最后由 乐平 于 2021-2-19 09:23 编辑
喵星大佬 发表于 2021-2-19 04:18
只能写--with-intelmpi=system用已经装好的,但是编译的时候还是会有很多幺蛾子

是的,我用的是 gcc9.3.1 + Intel MPI (2018 版) + Intel MKL (2018 版),
  1. scl enable devtoolset-9 bash
复制代码

设置 ./install_cp2k_toolchain.sh --with-mkl=system --with-intelmpi=system ,运行后可以看到如下信息:
  1. ==================== Finding Intel MPI from system paths ====================
  2. path to mpirun is  /public1/apps/intel/compilers_and_libraries_2018.1.163/linux/mpi/intel64/bin/mpirun
  3. path to mpiicc is  /public1/apps/intel/compilers_and_libraries_2018.1.163/linux/mpi/intel64/bin/mpiicc
  4. path to mpiifort is  /public1/apps/intel/compilers_and_libraries_2018.1.163/linux/mpi/intel64/bin/mpiifort
  5. path to mpiicpc is  /public1/apps/intel/compilers_and_libraries_2018.1.163/linux/mpi/intel64/bin/mpiicpc
  6. Found include directory /usr/local/include
  7. Found lib directory /public1/apps/intel/compilers_and_libraries_2018.1.163/linux/mpi/intel64/lib/release_mt
  8. libmpi is found in ld search path
  9. libmpicxx is found in ld search path
  10. Step intelmpi took 0.00 seconds.
  11. Step valgrind took 0.00 seconds.
  12. Step reflapack took 0.00 seconds.
  13. ==================== Finding MKL from system paths ====================
  14. MKLROOT is found to be /public1/apps/intel/compilers_and_libraries_2018.1.163/linux/mkl
  15. libm is found in ld search path
  16. libdl is found in ld search path
  17. Step mkl took 0.00 seconds.
复制代码


但是 toolchain 中的 install_elpa.sh 报错。
查看报错信息
  1. vi build/elpa-2020.05.001/build/configure.log
复制代码
显示的是:

checking whether Fortran compiler infers interfaces ... no
checking for fc option to support OpenMP... -fopenmp
checking for mpiexec.hydra... mpiexec.hydra
checking whether stdout/stderr file redirect should be enabled... no
checking whether ELPA library should contain also single precision functions... no
checking whether Fortran module iso_fortran_env is available... yes
checking whether we can compile a Fortran program using MKL... no
checking for library containing dgemm... none required
checking whether we can link a program with a blas lib... yes
checking for library containing dlarrv... none required
checking whether we can link a program with a lapack lib... yes
checking whether -lmpiscalapack already contains a BLACS implementation... no
checking whether -lscalapack already contains a BLACS implementation... yes
checking for library containing pdtran... none required
checking whether we can link a Fortran program with all blacs/scalapack... yes
checking whether we can use the intrinsic Fortran function "get_environment_variable"... yes
checking whether BAND_TO_FLULL_BLOCKING is requested... yes
checking whether a GPU compute capability is specified... no
checking whether Fortran mpi module can be used... no
configure: error: Could not compile a Fortran program with an 'use mpi' statement. You can try again with --disable-mpi-module

按照提示,在 scripts/install_elpa.sh 的第 100 行里加上 --disable-mpi-module \  之后,编译继续。然后又遇到 libvdwxc 的报错。
报错信息如下:

checking how MPI parameters have been set... yon
checking whether the MPI C compiler is set... yes
checking whether the MPI C compiler is wrapped... no
checking whether the MPI Fortran compiler is set... yes
checking whether the MPI Fortran compiler is wrapped... no
checking mpi.h usability... yes
checking mpi.h presence... yes
checking for mpi.h... yes
checking for MPI_Init... yes
checking whether the MPI C compiler works... yes
checking for a Fortran MPI module... no
checking whether the MPI Fortran compiler works... no
checking whether we have a full MPI support... no
configure: error: in `/public1/apps/cp2k-8.1/tools/toolchain/build/libvdwxc-0.4.0':
configure: error: MPI support is broken - please check your configuration
See `config.log' for more details






作者
Author:
喵星大佬    时间: 2021-2-19 13:05
本帖最后由 喵星大佬 于 2021-2-19 13:07 编辑
乐平 发表于 2021-2-19 12:14
是的,我用的是 gcc9.3.1 + Intel MPI (2018 版) + Intel MKL (2018 版),
设置 ./install_cp2k_toolch ...

写了 --with-intelmpi=system 的情况下默认用的编译器已经是mpiicc,mpiifort,mpiicpc了,所以也不关gcc什么事了。
elpa的问题用http://bbs.keinsci.com/thread-19009-1-1.html这个帖子1楼的方法可解。

作者
Author:
乐平    时间: 2021-2-19 15:03
喵星大佬 发表于 2021-2-19 07:05
写了 --with-intelmpi=system 的情况下默认用的编译器已经是mpiicc,mpiifort,mpiicpc了,所以也不关gcc ...

谢谢回复,但是您给的链接和我的问题不一样。
报错信息显示与 mpi 有关,不是帖子里的 SCALAPACK_LDFLAGS 问题。
作者
Author:
喵星大佬    时间: 2021-2-19 15:10
乐平 发表于 2021-2-19 15:03
谢谢回复,但是您给的链接和我的问题不一样。
报错信息显示与 mpi 有关,不是帖子里的 SCALAPACK_LDFLAG ...

已经找到了mpi不应该出mpi的问题,可能是mpi装的有点问题?

不过不知道是啥设置原因咋的,7.1到8.1同样的输入文件速度慢了不少
作者
Author:
乐平    时间: 2021-2-19 15:24
喵星大佬 发表于 2021-2-19 09:10
已经找到了mpi不应该出mpi的问题,可能是mpi装的有点问题?

不过不知道是啥设置原因咋的,7.1到8.1同 ...

谢谢回复。
也许是 Intel MPI 的问题吧……
我再试试用 CP2K 默认的 openmpi 吧。
作者
Author:
gog    时间: 2021-2-19 17:59
乐平 发表于 2021-2-19 15:24
谢谢回复。
也许是 Intel MPI 的问题吧……
我再试试用 CP2K 默认的 openmpi 吧。

核心的组件,就四五个吧。其他的,是用来加速计算用的。实在安装不上,可以不安装。
作者
Author:
乐平    时间: 2021-2-19 18:35
本帖最后由 乐平 于 2021-2-19 12:49 编辑
喵星大佬 发表于 2021-2-19 09:10
已经找到了mpi不应该出mpi的问题,可能是mpi装的有点问题?

不过不知道是啥设置原因咋的,7.1到8.1同 ...

用了 --with-openmpi=install 参数,过程中没有什么报错,但是……

  1. ==================== generating arch files ====================
  2. arch files can be found in the /public2/wanghuan/cp2k-8.1/tools/toolchain/install/arch subdirectory
  3. Wrote /public2/wanghuan/cp2k-8.1/tools/toolchain/install/arch/local.ssmp
  4. Wrote /public2/wanghuan/cp2k-8.1/tools/toolchain/install/arch/local.sdbg
  5. Wrote /public2/wanghuan/cp2k-8.1/tools/toolchain/install/arch/local.psmp
  6. Wrote /public2/wanghuan/cp2k-8.1/tools/toolchain/install/arch/local.pdbg
  7. Wrote /public2/wanghuan/cp2k-8.1/tools/toolchain/install/arch/local_warn.psmp
  8. Wrote /public2/wanghuan/cp2k-8.1/tools/toolchain/install/arch/local_coverage.pdbg
  9. ========================== usage =========================
  10. Done!
  11. Now copy:
  12.   cp /public2/wanghuan/cp2k-8.1/tools/toolchain/install/arch/* to the cp2k/arch/ directory
  13. To use the installed tools and libraries and cp2k version
  14. compiled with it you will first need to execute at the prompt:
  15.   source /public2/wanghuan/cp2k-8.1/tools/toolchain/install/setup
  16. To build CP2K you should change directory:
  17.   cd cp2k/
  18.   make -j 16 ARCH=local VERSION="ssmp sdbg psmp pdbg"
复制代码


发现居然没有 popt 版……

按上述步骤,
cp /public2/wanghuan/cp2k-8.1/tools/toolchain/install/arch/* ../../arch/
source /public2/wanghuan/cp2k-8.1/tools/toolchain/install/setup

然后在编译的时候加上 popt,感觉应该是不可能的……,因为上面 Wrote 那几行里没有 popt 版

make -j 16 ARCH=local VERSION="ssmp popt psmp"

编译过程中会有报错信息:

  1.    13 |    USE dbcsr_types, ONLY: dbcsr_data_obj, &
  2.       |       1
  3. Fatal Error: Cannot open module file ‘dbcsr_types.mod’ for reading at (1): No such file or directory
  4. compilation terminated.
  5. make[4]: *** [dbcsr_blas_operations.o] Error 1
  6. make[4]: *** Waiting for unfinished jobs....
  7. /public2/wanghuan/cp2k-8.1/exts/dbcsr/src/tas/dbcsr_tas_types.F:16:7:

  8.    16 |    USE dbcsr_types, ONLY: &
  9.       |       1
  10. Fatal Error: Cannot open module file ‘dbcsr_types.mod’ for reading at (1): No such file or directory
  11. compilation terminated.
  12. make[4]: *** [dbcsr_tas_types.o] Error 1
复制代码


果然,在 exe/local 目录中的结果如下:

cp2k_shell.ssmp  cp2k.sopt  
cp2k.ssmp  
dumpdcd.ssmp  
graph.ssmp  
grid_miniapp.ssmp  
grid_unittest.ssmp  
libcp2k_unittest.ssmp  
memory_utilities_unittest.ssmp  
parallel_rng_types_unittest.ssmp  
xyz2dcd.ssmp

没有 popt 版……

作者
Author:
gog    时间: 2021-2-19 18:47
乐平 发表于 2021-2-19 18:35
用了 --with-openmpi=install 参数,过程中没有什么报错,但是……

openmpi 用root权限先编译好啊。
作者
Author:
wuzhiyi    时间: 2021-2-19 18:48
sobereva 发表于 2021-2-19 07:26
最近几天我会写专门的帖子。

简单来说,载入任意Multiwfn支持的含有结构信息的文件(最好也含有晶胞信 ...

非常感谢sob老师!
作者
Author:
乐平    时间: 2021-2-19 20:18
gog 发表于 2021-2-19 12:47
openmpi 用root权限先编译好啊。

自己编译 openmpi 和最后没有 popt 有必然联系?
作者
Author:
乐平    时间: 2021-2-19 21:12
gog 发表于 2021-2-19 12:47
openmpi 用root权限先编译好啊。

重新编译了一次

  1. ./install_cp2k_toolchain.sh --with-mkl=system --with-openmpi=install --with-libsmm=install --with-ptscotch=install --with-superlu=install --with-pexsi=install --with-plumed=install
复制代码


直接用 CP2K 提供的 VERSION,没有自作主张加上 popt

  1. make -j 40 ARCH=local VERSION="ssmp psmp"
复制代码


得到 exe/local 目录下的结果:

  1. memory_utilities_unittest.ssmp
  2. parallel_rng_types_unittest.ssmp
  3. graph.ssmp
  4. memory_utilities_unittest.psmp
  5. parallel_rng_types_unittest.psmp
  6. graph.psmp
  7. grid_miniapp.ssmp
  8. grid_unittest.ssmp
  9. grid_miniapp.psmp
  10. grid_unittest.psmp
  11. dumpdcd.ssmp
  12. xyz2dcd.ssmp
  13. xyz2dcd.psmp
  14. dumpdcd.psmp
  15. libcp2k_unittest.ssmp
  16. cp2k.ssmp
  17. cp2k.sopt -> cp2k.ssmp   # 软链接
  18. cp2k_shell.ssmp -> cp2k.ssmp # 软链接
  19. cp2k.psmp
  20. libcp2k_unittest.psmp
  21. cp2k_shell.psmp -> cp2k.psmp # 软链接
  22. cp2k.popt -> cp2k.psmp # 软链接
复制代码


可以发现,8.1 版默认用软链接把 psmp 版作为 popt 版了。

作者
Author:
gog    时间: 2021-2-19 21:39
乐平 发表于 2021-2-19 20:18
自己编译 openmpi 和最后没有 popt 有必然联系?

软件迭代更新、去掉了吧。刘博士的帖子回复,intelmpi编译的,也没有popt。
作者
Author:
Penson    时间: 2021-2-19 22:59
sobereva 发表于 2021-2-19 07:35
https://www.cp2k.org/version_history
我觉得算不上很明显的改进

了解,谢谢社长
作者
Author:
乐平    时间: 2021-2-19 23:13
本帖最后由 乐平 于 2021-2-19 17:14 编辑

想请教一下 sob 老师,跨节点并行应该怎么设置?用的是 openmpi 4.0.1

比如,我的服务器单个节点 16-core
mpirun -np 16 cp2k.popt -i H2O-128.inp -o H2O-128.out
可以正常运行。

如果我希望用跨两个节点,调用 32-core 应该怎么设置呢?

我尝试了用
mpirun -np 32 cp2k.popt -i H2O-128.inp -o H2O-128.out
或者
mpirun -np 32 cp2k.psmp -i H2O-128.inp -o H2O-128.out

但是任务都没法运行。

作者
Author:
sobereva    时间: 2021-2-20 15:22
乐平 发表于 2021-2-19 23:13
想请教一下 sob 老师,跨节点并行应该怎么设置?用的是 openmpi 4.0.1

比如,我的服务器单个节点 16-cor ...

https://www.open-mpi.org/faq/?ca ... pirun-specify-hosts
作者
Author:
乐平    时间: 2021-2-20 16:35
sobereva 发表于 2021-2-20 09:22
https://www.open-mpi.org/faq/?category=running#mpirun-specify-hosts

谢谢,不过似乎没看太明白。这个链接里(9)说的是在某些指定的 hosts 运行 mpi,一下小节(10)说的是在多个 hosts 上运行 mpi
openmpi 官网的帖子里说得好复杂,对于新手太不友好……



我把我的 PBS 文件修改了一下,可以跨两个节点运行了,如下。

  1. #!/bin/bash
  2. #PBS -N cp2k_H2O-512
  3. #PBS -l nodes=2:ppn=16
  4. #PBS -j n
  5. #PBS -e ${PBS_JOBNAME}.e
  6. #PBS -o ${PBS_JOBNAME}.o
  7. #PBS -q v3

  8. module load gcc/9.3.1
  9. module load openmpi/4.0.1
  10. source /public1/apps/cp2k-8.1/tools/toolchain/install/setup


  11. cd $PBS_O_WORKDIR
  12. EXEC=/public1/apps/cp2k-8.1/exe/local/cp2k.popt

  13. mpirun -np 32 $EXEC -i H2O-512.inp -o H2O-512.out
复制代码



修改的地方如下:
【1】 #PBS -l nodes=2:ppn=16
修改之前是 nodes=1 ,所以只能在一个节点上运行。

【2】mpirun -np 32
32 = 2 * 16,也就是节点数乘以每个节点上的 CPU 核心数,之前只改了这里,没有改 【1】的项目,故导致任务无法运行。
作者
Author:
ball2006    时间: 2021-3-24 16:22
编译QUIP模块,编译不过去
==================== Installing QUIP ====================
QUIP-1ff93b3400b83e804f0f2e857e70c5e4133d9705.tar.gz is found
Installing from scratch into /share/apps/soft/cp2k81/tools/toolchain/install/quip-1ff93b3400b83e804f0f2e857e70c5e4133d9705
ERROR: (./scripts/install_quip.sh, line 100) Non-zero exit code detected.

make.log有如下报错

Making Programs

********************************************
rm -f /share/apps/soft/cp2k81/tools/toolchain/build/QUIP-1ff93b3400b83e804f0f2e857e70c5e4133d9705/build/linux_x86_64_gfortran/Makefile
cp /share/apps/soft/cp2k81/tools/toolchain/build/QUIP-1ff93b3400b83e804f0f2e857e70c5e4133d9705/src/Programs/Makefile /share/apps/soft/cp2k81/tools/toolchain/build/QUIP-1ff93b3400b83e804f0f2e857e70c5e4133d9705/build/linux_x86_64_gfortran/Makefile
make -C /share/apps/soft/cp2k81/tools/toolchain/build/QUIP-1ff93b3400b83e804f0f2e857e70c5e4133d9705/build/linux_x86_64_gfortran QUIP_ROOT=/share/apps/soft/cp2k81/tools/toolchain/build/QUIP-1ff93b3400b83e804f0f2e857e70c5e4133d9705 VPATH=/share/apps/soft/cp2k81/tools/toolchain/build/QUIP-1ff93b3400b83e804f0f2e857e70c5e4133d9705/src/Programs -I/share/apps/soft/cp2k81/tools/toolchain/build/QUIP-1ff93b3400b83e804f0f2e857e70c5e4133d9705 -I/share/apps/soft/cp2k81/tools/toolchain/build/QUIP-1ff93b3400b83e804f0f2e857e70c5e4133d9705/arch
make[1]: Entering directory `/share/apps/soft/cp2k81/tools/toolchain/build/QUIP-1ff93b3400b83e804f0f2e857e70c5e4133d9705/build/linux_x86_64_gfortran'
gfortran  -x f95-cpp-input -ffree-line-length-none -ffree-form -fno-second-underscore -fPIC -g  -I/share/apps/soft/cp2k81/tools/toolchain/build/QUIP-1ff93b3400b83e804f0f2e857e70c5e4133d9705/src/libAtoms -I/share/apps/soft/cp2k81/tools/toolchain/build/QUIP-1ff93b3400b83e804f0f2e857e70c5e4133d9705/src/fox/objs.linux_x86_64_gfortran/finclude -O3  -DGETARG_F2003 -DGETENV_F2003 -DGFORTRAN -DFORTRAN_UNDERSCORE -D'GIT_VERSION="NOT_A_GIT_REPOSITORY"'  -D'QUIP_ARCH="linux_x86_64_gfortran"' -D'SIZEOF_FORTRAN_T=2' -DHAVE_PRECON -DHAVE_QR  -c  /share/apps/soft/cp2k81/tools/toolchain/build/QUIP-1ff93b3400b83e804f0f2e857e70c5e4133d9705/src/Programs/vacancy_map_mod.f95 -o vacancy_map_mod.o
gfortran  -x f95-cpp-input -ffree-line-length-none -ffree-form -fno-second-underscore -fPIC -g  -I/share/apps/soft/cp2k81/tools/toolchain/build/QUIP-1ff93b3400b83e804f0f2e857e70c5e4133d9705/src/libAtoms -I/share/apps/soft/cp2k81/tools/toolchain/build/QUIP-1ff93b3400b83e804f0f2e857e70c5e4133d9705/src/fox/objs.linux_x86_64_gfortran/finclude -O3  -DGETARG_F2003 -DGETENV_F2003 -DGFORTRAN -DFORTRAN_UNDERSCORE -D'GIT_VERSION="NOT_A_GIT_REPOSITORY"'  -D'QUIP_ARCH="linux_x86_64_gfortran"' -D'SIZEOF_FORTRAN_T=2' -DHAVE_PRECON -DHAVE_QR  -c  /share/apps/soft/cp2k81/tools/toolchain/build/QUIP-1ff93b3400b83e804f0f2e857e70c5e4133d9705/src/Programs/quip.f95 -o quip.o
gfortran  -o quip  quip.o vacancy_map_mod.o -L. -lquiputils -lquip_core  -latoms   -O3  -L/share/apps/soft/cp2k81/tools/toolchain/build/QUIP-1ff93b3400b83e804f0f2e857e70c5e4133d9705/src/fox/objs.linux_x86_64_gfortran/lib -lFoX_sax -lFoX_wxml -lFoX_utils -lFoX_common -lFoX_fsys  /opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_scalapack_lp64.so -Wl,--start-group /opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_gf_lp64.so /opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_sequential.so /opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_core.so /opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so -Wl,--end-group -lpthread -lm -ldl  
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Waitall'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `ompi_mpi_comm_null'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Abort'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Waitany'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Comm_f2c'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Wtime'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Comm_dup'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `ompi_mpi_double'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Op_free'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Comm_create'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Group_incl'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Comm_get_attr'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `ompi_mpi_dblcplex'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Init'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Type_create_struct'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Bcast'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Alltoallv'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Cart_create'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Scatterv'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Initialized'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Type_free'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Iprobe'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Testall'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Allgatherv'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Comm_group'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Cart_sub'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Comm_split'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Send'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Allreduce'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `ompi_mpi_packed'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `ompi_mpi_op_max'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `ompi_mpi_op_maxloc'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `ompi_mpi_op_min'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Rsend'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `ompi_mpi_byte'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Irecv'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Type_contiguous'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Recv'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Comm_free'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `ompi_mpi_comm_world'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Comm_compare'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `ompi_mpi_float'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Reduce'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Pack'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `ompi_request_null'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `ompi_mpi_cplex'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `ompi_mpi_unsigned_short'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Comm_c2f'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Gatherv'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Get_address'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Wait'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Allgather'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Type_create_resized'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `ompi_mpi_double_int'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Op_create'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `ompi_mpi_int'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Pack_size'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `ompi_mpi_long_long_int'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Unpack'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `ompi_mpi_integer'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Test'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `ompi_mpi_dblprec'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Isend'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Type_f2c'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Op_f2c'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Type_vector'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Alltoall'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Finalize'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Sendrecv'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `ompi_mpi_op_sum'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Op_c2f'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Comm_size'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `ompi_mpi_real'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Group_free'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Type_indexed'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Barrier'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Type_commit'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Type_c2f'
/opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/libmkl_blacs_openmpi_lp64.so: undefined reference to `MPI_Comm_rank'
collect2: error: ld returned 1 exit status
make[1]: *** [quip] Error 1
make[1]: Leaving directory `/share/apps/soft/cp2k81/tools/toolchain/build/QUIP-1ff93b3400b83e804f0f2e857e70c5e4133d9705/build/linux_x86_64_gfortran'
make: *** [Programs] Error 2

麻烦老师们看看是啥原因

作者
Author:
sobereva    时间: 2021-3-25 07:02
ball2006 发表于 2021-3-24 16:22
编译QUIP模块,编译不过去
==================== Installing QUIP ====================
QUIP-1ff93b3400 ...

跟MPI库链接有问题。检查MPI方面的安装和设置

如果只有这一个过不去并且你并不使用经验势做计算,QUIP也可以不装
作者
Author:
ball2006    时间: 2021-3-25 11:11
好的,sob老师。
我再查查,多谢。
作者
Author:
yiranfengbai    时间: 2021-3-26 15:33
老师,编译make -j 4 时出现了这个问题,该怎么解决呢
Traceback (most recent call last):
  File "/calc/msi/cp2k-8.1/tools/build_utils/check_archives.py", line 69, in <module>
    main()
  File "/calc/msi/cp2k-8.1/tools/build_utils/check_archives.py", line 49, in main
    output = check_output([ar_exe, "t", archive_fn], encoding="utf8")
  File "/usr/local/lib/python3.5/subprocess.py", line 626, in check_output
    **kwargs).stdout
  File "/usr/local/lib/python3.5/subprocess.py", line 693, in run
    with Popen(*popenargs, **kwargs) as process:
TypeError: __init__() got an unexpected keyword argument 'encoding'
make[2]: *** [makedep] 错误 1
make[2]: *** 正在等待未完成的任务....
Traceback (most recent call last):
  File "/calc/msi/cp2k-8.1/tools/build_utils/check_archives.py", line 69, in <module>
    main()
  File "/calc/msi/cp2k-8.1/tools/build_utils/check_archives.py", line 49, in main
    output = check_output([ar_exe, "t", archive_fn], encoding="utf8")
  File "/usr/local/lib/python3.5/subprocess.py", line 626, in check_output
    **kwargs).stdout
  File "/usr/local/lib/python3.5/subprocess.py", line 693, in run
    with Popen(*popenargs, **kwargs) as process:
TypeError: __init__() got an unexpected keyword argument 'encoding'
make[2]: *** [makedep] 错误 1
make[2]: *** 正在等待未完成的任务....
Resolving dependencies ...
Resolving dependencies ...
make[1]: *** [ssmp] 错误 2
make[1]: *** 正在等待未完成的任务....
make[1]: *** [psmp] 错误 2
make: *** [all] 错误 2
作者
Author:
sobereva    时间: 2021-3-26 19:32
yiranfengbai 发表于 2021-3-26 15:33
老师,编译make -j 4 时出现了这个问题,该怎么解决呢
Traceback (most recent call last):
  File "/cal ...

信息不足,无法判断。什么系统什么编译器具体怎么编译的都得交代非常清楚

系统不要装成中文语言
作者
Author:
yiranfengbai    时间: 2021-3-26 22:44
sobereva 发表于 2021-3-26 19:32
信息不足,无法判断。什么系统什么编译器具体怎么编译的都得交代非常清楚

系统不要装成中文语言

抱歉老师,系统是centos7.6, gcc9.3.1。我通把这个关键词删掉之后,这个问题暂时没出来了,不知道是否正确
作者
Author:
abin    时间: 2021-3-30 20:06
本帖最后由 abin 于 2021-4-17 21:37 编辑
ball2006 发表于 2021-3-24 16:22
编译QUIP模块,编译不过去
==================== Installing QUIP ====================
QUIP-1ff93b3400 ...

我记得,
使用intel2020u2没有问题。修正一下,
intel2020u2, 运行某些计算会遇到内存爆浆的问题. 请谨慎使用.   

intel2020u4, u3都有很多坑。

另,
我有编译好的
cp2k v7.1 v8.1, 分别针对E5 v3/v4 或者新的AVX2/AVX512优化的编译版本。
可以有偿提供。
需要目标机器有root授权才能完成部署。

作者
Author:
abin    时间: 2021-3-30 20:10
喵星大佬 发表于 2021-2-19 15:10
已经找到了mpi不应该出mpi的问题,可能是mpi装的有点问题?

不过不知道是啥设置原因咋的,7.1到8.1同 ...

能提供算例我试试吗?

可以发送到 hpc4you@163.com

我仅仅简单测试了算例, make test那个。
所有算例都通过, 时间没有明显区别。

有人提及是cosma模块导致的问题。
不过我用Mar-20-2021克隆的开发版,编译后,是否开启cosma模块,
速度没有差异。 也许修正了。
作者
Author:
abin    时间: 2021-3-30 20:14
ball2006 发表于 2021-3-24 16:22
编译QUIP模块,编译不过去
==================== Installing QUIP ====================
QUIP-1ff93b3400 ...

回复需要审核,

所以再写一份给你,以免一会就忘记了。

我的记忆中, 使用intel2020u2可以搞定。
使用intel2020u4需要修正源码。

不要迷信intel编译器的威力。
也许使用gcc10+MKL最新版+MPICH,就很棒了。
作者
Author:
waitingseven    时间: 2021-4-1 14:53
安装之后只有psmp版本成功,直接cp2k.psmp xxx.inp | tee xxx.out运行之后发现明明有36个核心,cpu利用率一直浮动,有时候用1个,有时候7个,最多用20多个,没有用满,如果加上mpirun -np 36的话要么运行停止不动,要么运行过程输出跟测试文件结果不一样,用vasp可以36个核直接用满,不知道是不是编译出问题了还是这个软件本身就这样
作者
Author:
sobereva    时间: 2021-4-1 15:02
waitingseven 发表于 2021-4-1 14:53
安装之后只有psmp版本成功,直接cp2k.psmp xxx.inp | tee xxx.out运行之后发现明明有36个核心,cpu利用率一 ...

用popt版
有些代码没有用OpenMP并行化,所以psmp有可能对某些情况的计算占用率显著低于popt
popt版本质上等价于OpenMP线程数为1的psmp版,不可能只有psmp版能用

作者
Author:
waitingseven    时间: 2021-4-1 15:06
sobereva 发表于 2021-4-1 15:02
用popt版
有些代码没有用OpenMP并行化,所以psmp有可能对某些情况的计算占用率显著低于popt

多谢社长回复,我按照社长的方法用的with-openmpi=install安装出来的popt版不知道是否是其他版友提到的是psmp的软链接版,psmp的计算效率确实愁人,明明这么多核却不用
作者
Author:
abin    时间: 2021-4-1 15:30
waitingseven 发表于 2021-4-1 15:06
多谢社长回复,我按照社长的方法用的with-openmpi=install安装出来的popt版不知道是否是其他版友提到的是 ...

cp2k.popt -> cp2k.psmp
8.x版本就是如此。

对应关系如下:
popt         --> MPI + OpenMP + OMP_NUM_THREADS=1
psmp --> MPI + OpenMP
作者
Author:
haisenburg    时间: 2021-4-11 22:53
waitingseven 发表于 2021-4-1 14:53
安装之后只有psmp版本成功,直接cp2k.psmp xxx.inp | tee xxx.out运行之后发现明明有36个核心,cpu利用率一 ...

psmp 是 MPI+OpenMP 混编的,模式情况下  psmp  使用的 线程等于计算机的核算,如果用mpirun -np xx  的话,会导致top 查看  cpu 超过100% 且不断浮动,计算速度巨慢!  这是时候强制 OpenMP 超线程等于1 即可,即 使用  mpirun -np xx -x OMP_NUM_THREADS=1  cp2k.psmp     这是时候 等价于 mpirun -np xx  cp2k.popt    这个时候,速度就很快了,大家可以对比下这个时候8.1是不是还比7.1 慢很多???
作者
Author:
waitingseven    时间: 2021-4-12 09:07
haisenburg 发表于 2021-4-11 22:53
psmp 是 MPI+OpenMP 混编的,模式情况下  psmp  使用的 线程等于计算机的核算,如果用mpirun -np xx  的 ...

多谢回复,请问mpirun -np xx -x OMP_NUM_THREADS=1  cp2k.psmp 这条命令中 xx 和 -x 分别是多少核和多少线程的意思吗?
作者
Author:
haisenburg    时间: 2021-4-12 20:11
waitingseven 发表于 2021-4-12 09:07
多谢回复,请问mpirun -np xx -x OMP_NUM_THREADS=1  cp2k.psmp 这条命令中 xx 和 -x 分别是多少核和多少 ...

mpirun -np 20 -machinefile $PBS_NODEFILE -x OMP_NUM_THREADS=1 /opt/cp2k-8.1/exe/local/cp2k.psmp -i geo-opt.inp > geo-opt.out

这是我的一个命令
作者
Author:
elpa    时间: 2021-4-13 13:50
官网下的cp2k 缺少DSCBR 还得另装
https://cp2k.github.io/dbcsr/dev ... allation/index.html
作者
Author:
sobereva    时间: 2021-4-14 07:09
waitingseven 发表于 2021-4-12 09:07
多谢回复,请问mpirun -np xx -x OMP_NUM_THREADS=1  cp2k.psmp 这条命令中 xx 和 -x 分别是多少核和多少 ...

-x是让后面的环境变量设置在运行命令时生效。每个cp2k.psmp MPI进程的下属OpenMP并行线程数由OMP_NUM_THREADS决定。

-np后面的值(CP2K的MPI进程数)与OMP_NUM_THREADS的乘积不应超过CPU物理核心数
作者
Author:
elpa    时间: 2021-4-14 09:56
Installing cosma ====================
cosma-2.2.0.tar.gz: OK
Checksum of cosma-2.2.0.tar.gz Ok
Installing from scratch into /home/xxx/cp2k8/cp2k-8.1/tools/toolchain/install/cosma-2.2.0
ERROR: (./scripts/install_cosma.sh, line 48) Non-zero exit code detected.
请问intelmpi+mkl  编不了cosma有办法解决吗?
作者
Author:
sobereva    时间: 2021-4-14 12:47
elpa 发表于 2021-4-14 09:56
Installing cosma ====================
cosma-2.2.0.tar.gz: OK
Checksum of cosma-2.2.0.tar.gz Ok

不编译COSMA就完了,影响不大
作者
Author:
waitingseven    时间: 2021-4-15 15:13
本帖最后由 waitingseven 于 2021-4-15 15:16 编辑
sobereva 发表于 2021-4-14 07:09
-x是让后面的环境变量设置在运行命令时生效。每个cp2k.psmp MPI进程的下属OpenMP并行线程数由OMP_NUM_THR ...

多谢社长回复,我重新装了一下系统,从centos 7.6升级到 Centos 8,按照社长的方法装发现到fftw就停了,没办法就按照make ARCH=Linux-x86-64-intel-minimal VERSION=psmp -j 36这个命令装,出现了cp2k.psmp和popt版,目前测试了社长发出来的几个输入文件没发现啥问题,也不知道这种方法装的会不会有什么缺陷,比如会不会有些东西算不了。
先运行export OMP_NUM_THREADS=1, 然后运行mpiexec -np 36 cp2k.popt xxx.inp |tee xxx.out发现所有核的占用率都是100%,比之前psmp版本效率高不少,用的是intel的oneapi.
作者
Author:
sobereva    时间: 2021-4-16 09:24
waitingseven 发表于 2021-4-15 15:13
多谢社长回复,我重新装了一下系统,从centos 7.6升级到 Centos 8,按照社长的方法装发现到fftw就停了, ...

没什么事
fftw的问题得看具体报错判断。你也可以自己手动编译fftw,让toolchain直接链接机子里已有的fftw
作者
Author:
ball2006    时间: 2021-4-22 16:20
abin 发表于 2021-3-30 20:14
回复需要审核,

所以再写一份给你,以免一会就忘记了。

感谢大佬的提醒,已经找别的方法越过去了。
作者
Author:
Penson    时间: 2021-5-12 23:17
我想在超算上自己尝试编译gcc版本的cp2k 8.1,重新安装并修改了默认的gcc,g++和gfortran版本都为8.3,但是用toolchain安装cmake的时候还是出现非零值错误,估计是和系统原来的cmake冲突了,查了一下是2.8版本的,远低于要求的版本。请问有什么合适的解决办法呢?
作者
Author:
sobereva    时间: 2021-5-13 07:19
Penson 发表于 2021-5-12 23:17
我想在超算上自己尝试编译gcc版本的cp2k 8.1,重新安装并修改了默认的gcc,g++和gfortran版本都为8.3,但是 ...

toolchain安装cmake的时候出错和系统里的cmake冲突应该没关系,看看log文件里具体报错提示
作者
Author:
Penson    时间: 2021-5-13 08:52
本帖最后由 Penson 于 2021-5-13 14:01 编辑
sobereva 发表于 2021-5-13 07:19
toolchain安装cmake的时候出错和系统里的cmake冲突应该没关系,看看log文件里具体报错提示

好的,社长。我看了log,是写着bootstrapping CMake时,运行初始的CMAKE的出错了
(, 下载次数 Times of downloads: 111)

作者
Author:
sobereva    时间: 2021-5-13 19:06
Penson 发表于 2021-5-13 08:52
好的,社长。我看了log,是写着bootstrapping CMake时,运行初始的CMAKE的出错了

系统太老,找不到相应的GLIBCXX库
尝试自行编译cmake,然后把cmake可执行文件的目录加到PATH环境变量最前面使其优先级高于超算的cmake,然后让toolchain使用自己机子上的cmake。

作者
Author:
Penson    时间: 2021-5-13 19:18
sobereva 发表于 2021-5-13 19:06
系统太老,找不到相应的GLIBCXX库
尝试自行编译cmake,然后把cmake可执行文件的目录加到PATH环境变量最 ...

好的,我尝试过自己编译cmake,好像也得经历./bootstrap这一步,然后也是在这一步出错
作者
Author:
abin    时间: 2021-5-13 19:32
Penson 发表于 2021-5-13 19:18
好的,我尝试过自己编译cmake,好像也得经历./bootstrap这一步,然后也是在这一步出错

什么系统?
作者
Author:
Penson    时间: 2021-5-14 00:03
abin 发表于 2021-5-13 19:32
什么系统?

Red Hat Enterprise Linux Server release 6.2 (Santiago)
作者
Author:
abin    时间: 2021-5-14 07:44
Penson 发表于 2021-5-14 00:03
Red Hat Enterprise Linux Server release 6.2 (Santiago)

系统太老了……

作者
Author:
Penson    时间: 2021-5-14 11:49
abin 发表于 2021-5-14 07:44
系统太老了……

没办法,学校的超算,这个没法改
作者
Author:
taopan    时间: 2021-5-14 12:57
本帖最后由 taopan 于 2021-5-14 13:00 编辑

虚拟机中centos7 intel i7 cp2k8.1编译libint有问题
  1. make: *** [src/CR_DerivGaussP0InBra_aB_d001__0__m__1___TwoPRep_s__0__s__1___Ab__up_0.lo] Error 1
复制代码
  1. ./install_cp2k_toolchain.sh --with-sirius=no --with-openmpi=install --with-plumed=install --with-cmake=system
  2. MPI is detected and it appears to be Intel MPI
  3. nvcc not found, disabling CUDA by default
  4. Compiling with 8 processes.
  5. Step gcc took 0.00 seconds.
  6. ==================== Getting proc arch info using OpenBLAS tools ====================
  7. OpenBLAS detected LIBCORE = haswell
  8. OpenBLAS detected ARCH    = x86_64
  9. ==================== Finding CMake from system paths ====================
  10. path to cmake is  /usr/local/bin/cmake
  11. Step cmake took 0.00 seconds.
  12. ==================== Installing OpenMPI ====================
  13. openmpi-4.0.5 is already installed, skipping it.
  14. Step openmpi took 0.00 seconds.
  15. Step valgrind took 0.00 seconds.
  16. Step reflapack took 0.00 seconds.
  17. ==================== Finding MKL from system paths ====================
  18. MKLROOT is found to be /opt/intel/compilers_and_libraries_2018.0.128/linux/mkl
  19. libm is found in ld search path
  20. libdl is found in ld search path
  21. Using MKL provided ScaLAPACK and BLACS
  22. Step mkl took 0.00 seconds.
  23. ==================== Installing FFTW ====================
  24. fftw-3.3.8 is already installed, skipping it.
  25. Step fftw took 0.00 seconds.
  26. ==================== Installing LIBINT ====================
  27. libint-v2.6.0-cp2k-lmax-6.tgz is found
  28. Installing from scratch into /taopan/cp2k-8.1/tools/toolchain/install/libint-v2.6.0-cp2k-lmax-6
  29. ERROR: (./scripts/install_libint.sh, line 82) Non-zero exit code detected.
复制代码


(, 下载次数 Times of downloads: 1) (, 下载次数 Times of downloads: 0)





作者
Author:
喵星大佬    时间: 2021-5-15 21:50
啦啦黑还黑 发表于 2021-2-18 14:22
8.1的toolchain安装支持intel mpi了,就别用openmpi了。
cp2k用intel可以比openmpi快30%
之前7.1版本tool ...

但是toolchian完了之后local.psmp那几个脚本还是要手改
作者
Author:
abin    时间: 2021-5-15 21:54
喵星大佬 发表于 2021-5-15 21:50
但是toolchian完了之后local.psmp那几个脚本还是要手改

是吗?
不是直接可用吗?还改啥呀?

用intel工具套装,那是要修改的。
作者
Author:
喵星大佬    时间: 2021-5-15 22:59
abin 发表于 2021-5-15 21:54
是吗?
不是直接可用吗?还改啥呀?

我就是说toolchian设置了intelmpi的情况
作者
Author:
yoghurt117    时间: 2021-6-22 14:31
My OS is Mint20. But according to your method ,it shows errors like this:
mint@i5:~/sci_soft/cp2k/code/8.2/cp2k-8.2.0$ make -j 4 ARCH=local VERSION="ssmp sdbg psmp pdbg"
Discovering programs ...
/home/mint/sci_soft/cp2k/code/8.2/cp2k-8.2.0/exts/Makefile.inc:2: *** "No DBCSR submodule available, please run 'git submodule update --init --recursive'".  Stop.
/home/mint/sci_soft/cp2k/code/8.2/cp2k-8.2.0/exts/Makefile.inc:2: *** "No DBCSR submodule available, please run 'git submodule update --init --recursive'".  Stop.
make[1]: *** [/home/mint/sci_soft/cp2k/code/8.2/cp2k-8.2.0/Makefile:126: psmp] Error 2
make[1]: *** Waiting for unfinished jobs....
make[1]: *** [/home/mint/sci_soft/cp2k/code/8.2/cp2k-8.2.0/Makefile:126: ssmp] Error 2
/home/mint/sci_soft/cp2k/code/8.2/cp2k-8.2.0/exts/Makefile.inc:2: *** "No DBCSR submodule available, please run 'git submodule update --init --recursive'".  Stop.
make[1]: *** [/home/mint/sci_soft/cp2k/code/8.2/cp2k-8.2.0/Makefile:126: sdbg] Error 2
/home/mint/sci_soft/cp2k/code/8.2/cp2k-8.2.0/exts/Makefile.inc:2: *** "No DBCSR submodule available, please run 'git submodule update --init --recursive'".  Stop.
make[1]: *** [/home/mint/sci_soft/cp2k/code/8.2/cp2k-8.2.0/Makefile:126: pdbg] Error 2
make: *** [Makefile:121: all] Error 2

Sorry , My linux Chinese input is not ok, so i have to use English.
作者
Author:
Akaiconan    时间: 2021-7-9 15:20
社长好,我按照您的方法编译完成以后,跑一些输入文件时(popt版本),用命令“mpirun -np 4 cp2k.popt test.inp |tee test.out ”时,总是出程序停止的问题。改成不加‘mpirun -np 4’,只写'cp2k.popt test.inp |tee test.out',就能运行的很顺利,想请问一下这两者的区别在哪。
如果因为上述操作没有造成计算效率的严重下降,我也就不细究出问题的原因了,如果会造成,还得请教一下改善的方法。
非常感谢!
作者
Author:
sobereva    时间: 2021-7-10 09:41
Akaiconan 发表于 2021-7-9 15:20
社长好,我按照您的方法编译完成以后,跑一些输入文件时(popt版本),用命令“mpirun -np 4 cp2k.popt tes ...

不写mpirun -np x相当于串行运行CP2K
mpirun -np 4老出现问题而且和不写的时候速度差不多,大概率是根本没有正常并行运行,四个进程没有协同工作而是相当于单独算了四个串行进程。仔细检查MPI库,确保当前激活的MPI和编译时用的MPI是同一个
作者
Author:
alonewolfyang    时间: 2021-7-30 16:13
本帖最后由 alonewolfyang 于 2021-7-31 09:34 编辑
sobereva 发表于 2021-7-10 09:41
不写mpirun -np x相当于串行运行CP2K
mpirun -np 4老出现问题而且和不写的时候速度差不多,大概率是根本 ...

请教老师,我在CentOS 7 上编译了CP2K 7.1,也产生了四个版本的CP2K,在使用您给的例子test.inp的时候提示root权限下mpi不能用,这和ORCA的编译那好像一样,我用root权限做的,怎么能改改呀,没看懂系统给的解决办法,是直接把这两行玩意加到bashrc里面还是咋回事,后来改了也不行
作者
Author:
alonewolfyang    时间: 2021-7-31 16:34
alonewolfyang 发表于 2021-7-30 16:13
请教老师,我在CentOS 7 上编译了CP2K 7.1,也产生了四个版本的CP2K,在使用您给的例子test.inp的时候提 ...

结合本帖子和其他资源,问题已解决
作者
Author:
丁越    时间: 2021-9-29 22:28
啦啦黑还黑 发表于 2021-2-18 14:22
8.1的toolchain安装支持intel mpi了,就别用openmpi了。
cp2k用intel可以比openmpi快30%
之前7.1版本tool ...

请问刘博用Intel编译器编译的CP2K-8.2/1有popt版本么,还是只有一个ssmp版本的?如果有的话还请老师指点下编译过程
作者
Author:
陪锂到天边    时间: 2021-10-11 13:57
社长您好,我是非管理员用户,能否用toolchain脚本进行cp2k的安装呢? 我等了好久 他都安不起
作者
Author:
sobereva    时间: 2021-10-11 19:54
陪锂到天边 发表于 2021-10-11 13:57
社长您好,我是非管理员用户,能否用toolchain脚本进行cp2k的安装呢? 我等了好久 他都安不起

可以
作者
Author:
yzy1995123    时间: 2021-12-15 13:38
求助,我根据您的方法安装的,用openmpi和mkl,到了编译elpa库的时候一直错误,toolchain/build目录下库中也没有编译过程输出的log文件,想知道该怎么解决
作者
Author:
sobereva    时间: 2021-12-16 07:34
yzy1995123 发表于 2021-12-15 13:38
求助,我根据您的方法安装的,用openmpi和mkl,到了编译elpa库的时候一直错误,toolchain/build目录下库中 ...

把patch装上再试
yum install patch
作者
Author:
yzy1995123    时间: 2021-12-16 12:26
sobereva 发表于 2021-12-16 07:34
把patch装上再试
yum install patch

还是不太行,同样的错误,line 67变成了line 100

作者
Author:
sobereva    时间: 2021-12-16 14:48
yzy1995123 发表于 2021-12-16 12:26
还是不太行,同样的错误,line 67变成了line 100

看报错随机应变
不可能同样的错误,只可能是依然有错误。patch命令都能用了怎么还可能提示没有。交代问题时候注意语言表达准确
作者
Author:
yzy1995123    时间: 2021-12-16 16:24
sobereva 发表于 2021-12-16 14:48
看报错随机应变
不可能同样的错误,只可能是依然有错误。patch命令都能用了怎么还可能提示没有。交代问 ...

不好意思老师,可能我表述的不够准确,现在报错是这样的
作者
Author:
sobereva    时间: 2021-12-16 16:57
yzy1995123 发表于 2021-12-16 16:24
不好意思老师,可能我表述的不够准确,现在报错是这样的

仔细看ELPA部分安装过程的日志
要么干脆别装ELPA,对绝大多数情况没什么用处
作者
Author:
yzy1995123    时间: 2021-12-16 18:58
sobereva 发表于 2021-12-16 16:57
仔细看ELPA部分安装过程的日志
要么干脆别装ELPA,对绝大多数情况没什么用处

好的,感谢老师

作者
Author:
annaqz    时间: 2022-1-1 11:36
社长,想请教一下,我按照帖子方法编译的CP2K 8.2,Centos系统是8.5。安装完后进行简单例子测试的时候没有问题。后续在计算实际例子以及CP2K官网的算例时,发现总会卡住。提交命令是nohup mpirun -np 4 cp2k.popt xxx.inp |tee xxx.out &。卡壳的地方如下图所示,不知道这个是什么原因造成的。查看的时候,发现cp2k一直在运行。运行一段时间后会自行终止。
作者
Author:
sobereva    时间: 2022-1-1 23:59
annaqz 发表于 2022-1-1 11:36
社长,想请教一下,我按照帖子方法编译的CP2K 8.2,Centos系统是8.5。安装完后进行简单例子测试的时候没有 ...

我没遇见过
尝试对角化能否正常运行
作者
Author:
丁越    时间: 2022-1-2 17:44
annaqz 发表于 2022-1-1 11:36
社长,想请教一下,我按照帖子方法编译的CP2K 8.2,Centos系统是8.5。安装完后进行简单例子测试的时候没有 ...

编译的时候写--with-elpa=no,OT卡住是elpa库的bug导致
作者
Author:
annaqz    时间: 2022-1-3 10:34
sobereva 发表于 2022-1-1 23:59
我没遇见过
尝试对角化能否正常运行

好的,那我试试,谢谢社长!
作者
Author:
annaqz    时间: 2022-1-3 10:35
丁越 发表于 2022-1-2 17:44
编译的时候写--with-elpa=no,OT卡住是elpa库的bug导致

好的,感谢回复!我运行过几次算例,差不多5次有3次会出现这种情况。那这样的话我是需要重新编译安装cp2k是吗?
作者
Author:
sobereva    时间: 2022-1-3 21:27
annaqz 发表于 2022-1-3 10:35
好的,感谢回复!我运行过几次算例,差不多5次有3次会出现这种情况。那这样的话我是需要重新编译安装cp2k ...

现在有CP2K 9.1了,你可以先编译个新版本试试
作者
Author:
丁越    时间: 2022-1-4 09:16
annaqz 发表于 2022-1-3 10:35
好的,感谢回复!我运行过几次算例,差不多5次有3次会出现这种情况。那这样的话我是需要重新编译安装cp2k ...

可以参考一下这个:
http://bbs.keinsci.com/forum.php ... 3&fromuid=21263


作者
Author:
annaqz    时间: 2022-1-4 12:39
sobereva 发表于 2022-1-3 21:27
现在有CP2K 9.1了,你可以先编译个新版本试试

对,我昨天也是发现了。我试试去。
作者
Author:
annaqz    时间: 2022-1-4 12:40
丁越 发表于 2022-1-4 09:16
可以参考一下这个:
http://bbs.keinsci.com/forum.php?mod=viewthread&tid=25553&fromuid=21263

好的,收到。谢谢
作者
Author:
annaqz    时间: 2022-1-4 12:42
sobereva 发表于 2022-1-3 21:27
现在有CP2K 9.1了,你可以先编译个新版本试试

对了社长,我要编译这个最新版的,那我之前编译的那个8.2版本的CP2K,需要先卸载一下吗?
作者
Author:
sobereva    时间: 2022-1-5 00:50
annaqz 发表于 2022-1-4 12:42
对了社长,我要编译这个最新版的,那我之前编译的那个8.2版本的CP2K,需要先卸载一下吗?

不用
环境变量指向新安装的CP2K的目录就完了




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3