计算化学公社

标题: cp2k脚本编译所需文件 [打印本页]

作者
Author:
wangtaochem    时间: 2020-5-6 22:38
标题: cp2k脚本编译所需文件
最近尝试用cp2k7.1源码中的脚本进行编译,本人的机器处理器是AMD的,就没有使用Intel编译器,使用到的是GNU编译器编译,把相关的文件分享给大家,有编译需要的话可以下载。对编译过程需要咨询的也可以联系我。

链接:https://pan.baidu.com/s/1mz_BcmtrCMP3gvo3T8BVFw
提取码:j6bq



作者
Author:
fineren    时间: 2020-5-7 22:33
感谢分享
作者
Author:
MADAOLay    时间: 2020-5-23 13:49
请问大佬可以简单的写一下您编译的过程吗?我用tool chain编译cp2k7.1后使用时总是出现内存错误的问题,popt的test也全部错误,想问下您是怎么编译的呢?
作者
Author:
wangtaochem    时间: 2020-5-24 20:31
MADAOLay 发表于 2020-5-23 13:49
请问大佬可以简单的写一下您编译的过程吗?我用tool chain编译cp2k7.1后使用时总是出现内存错误的问题,pop ...

不会吧!我的机子是8核的,内存16G,小点的算例基本没有问题。
作者
Author:
wanlichuan    时间: 2020-5-25 19:41
本帖最后由 wanlichuan 于 2020-5-26 09:50 编辑


wangtaochem您好,按照您的方法,我先安装GCC和openmpi,很顺利。然后把build.zip解压后得到的所有压缩文件拷到/cp2k-7.1/tools/toolchain/build/文件夹下,接下来就是通过“install_cp2k_toolchain.sh”自动安装,但是cmake和elpa安装失败,后来手动安装这两个模块。手动安装cmake的时候,根据错误提示,发现是一些依赖库找不到,建立软链接后,手动安装成功(用which能找到cmake,查看版本号也能显示)。再次运行“install_cp2k_toolchain.sh”来自动安装,程序还要对cmake重装一遍,当然最终结果也是cmake能安装成功,elpa依然失败。

我的问题是:

1)为什么自动安装程序找不到我已经手动安装成功的cmake呢?第一遍自动安装成功的模块在第二遍自动安装过程中是能被找到的,系统会提示诸如“fftw-3.3.8 is already installed, skippingit.”。

2)您用CentOS7.6虚拟机安装过cp2k-7.1吗?是不是也很顺利?

感谢您提供的这一整套程序。



作者
Author:
wangtaochem    时间: 2020-5-30 23:42
wanlichuan 发表于 2020-5-25 19:41
wangtaochem您好,按照您的方法,我先安装GCC和openmpi,很顺利。然后把build.zip解压后得到的所有压缩文 ...

在开始编译之前,首先需要系统的编译满足, yum install autoconf autogen automake autotools-dev ca-certificates g++ git less libtool make nano pkg-config python python-numpy python3 unzip wget xxd zlib
用这条命令基本可以把需要的编译环境配制完成。
第一个问题,是不是没有设置安装cmake的路径。以下是我安装是输入的安装命令,如果某个程序已经安装好了,就需要设置它的安装路径,把相应的安装命令修改为系统,假如你已经在系统中安装好cmake了,那么需要将--with-cmake=install修改为--with-cmake=system
./install_cp2k_toolchain.sh --with-cmake=install  --with-openmpi=install  --with-libxc=install --with-libint=install --with-fftw=install --with-openblas=install --with-scalapack=install --with-reflapack=no --with-libxsmm=install --with-elpa=install --with-ptscotch=install --with-pexsi=install --with-parmetis=install  --with-superlu=install --with-quip=install --with-plumed=install --with-gsl=install --with-libvdwxc=install --with-spglib=install --with-hdf5=install  --with-spfft=install  -j X,其中X为并行编译使用的核数。
第二个问题,我使用centos 7.7和7.8都可以成功编译,此外,Ubuntu18.4是目前我试过的最容易编译的。

作者
Author:
wanlichuan    时间: 2020-6-1 23:31
wangtaochem 发表于 2020-5-30 23:42
在开始编译之前,首先需要系统的编译满足, yum install autoconf autogen automake autotools-dev ca-ce ...

        Wangtaochem老师您好,非常感谢您细致的解答。
        昨天看了您的答复,本以为已经有如此详细的命令了,成功编译cp2k7.1不会很遥远了。但是这两天我又试了CentOS7.6,7.8, Ubuntu18.04,20.04四种虚拟机,竟然没成功一个。前三种是ELPA失败,Ubuntu20.04则是ScaLAPACK失败,总是差那么一点。ScaLAPACK安装失败的原因是“implicit declaration of function”(见附件make-scalapack.log),也不知道该如何解决。
        还有一个小问题请教,您给的这个配置编译环境的命令“yum install autoconf autogen automake autotools-dev ca-certificates g++ git less libtool make nano pkg-config python python-numpy python3 unzip wget xxd zlib”会在线安装gcc和g++编译器,比如在Ubuntu18.04中安装的是7.5.0版,在Ubuntu20.04中安装的是9.3.0版。用“sudo apt install gcc-8 g++-8”则可以安装8.4.0版,用安装包gcc-8.3.0.tar.gz则安装的是8.3.0版。当然,在编译cp2k的时候可以用指定路径的办法指定用哪一个版本参与编译。我的疑惑是,在不同版本共存的时候,哪怕都指定的是8.3.0版,编译出来的结果也不一样,有时候是这个模块出错,有时候是那个模块出错。这是什么原因呢?是不是用了yum install命令就没必要再安装gcc-8.3.0.tar.gz了?或者说,如果打算使用gcc-8.3.0.tar.gz安装包,就不要用这个命令了(把命令中的g++去掉)?我试着只用Ubuntu20.04中的9.3.0版也能编译cp2k,当然还是有一个模块失败。
        再次感谢您的耐心解答。

作者
Author:
wangtaochem    时间: 2020-6-2 09:51
wanlichuan 发表于 2020-6-1 23:31
Wangtaochem老师您好,非常感谢您细致的解答。
        昨天看了您的答复,本以为已经有如此详 ...

安装高版本的GCC编译器,只有centos 8以下的系统才需要安装,其余的系统都不需要安装,centos 8 及以上和Ubuntu 18.4及以上的系统不需要安装高版本的GCC编译器,用系统自身带的编译器就可以,cp2k编译的时候GCC版本5以上的,都不需要安装高版本的了。对于系统编译环境要求,Ubuntu操作系统:apt-get install autoconf autogen automake autotools-dev ca-certificates g++ git less libtool make nano pkg-config python python-numpy python3 unzip wget xxd zlib1g-dev;centos 操作系统:yum install autoconf autogen automake bzip2 ca-certificates diffutils g++ git less libtool make nano pkg-config python python-numpy python3 unzip vim-common wget which zlib-devel。编译安装包,cmake出错我也遇到过,我的问题是系统磁盘大小不够引起的,ELPA出错是python版本引起的,一般来说python2可以解决。安然虚拟机我不知道和物理机之间的差别有多大,我是使用物理机编译的,都很好编译的。ScaLAPACK安装失败的原因一般是缺乏相应的库文件,只要把系统编译环境配制好了,编译是很容易的。
作者
Author:
wanlichuan    时间: 2020-6-12 16:39
wangtaochem 发表于 2020-6-2 09:51
安装高版本的GCC编译器,只有centos 8以下的系统才需要安装,其余的系统都不需要安装,centos 8 及以上和 ...

       Wangtaochem老师您好,再次感谢您的详细解答。
       最近事情太多,一直没尝试新的安装方法。这两天又安装了几次,尤其是在两台不同操作系统的物理机上装了一下,发现和虚拟机效果一样,相同的步骤和相同的操作系统会产生相同的错误信息。这些错误信息比较棘手的还是ELPA。我参考(https://blog.csdn.net/zh314js/article/details/76258705)博客安装了elpa2019.05.001,openmp版本和单线程版本都装了,感觉安装成功了(因为configure时间约1分钟,make时间约5分钟,make install时间约10秒,均没有报错信息),但是用which指令没有反应,并且接下来安装cp2k时,会有下面的错误信息:
$ ./install_cp2k_toolchain.sh --with-elpa=system
ERROR: (./scripts/install_elpa.sh) ld cannot find -lelpa, please check if ELPA is installed or in system search path
ERROR: (./scripts/install_elpa.sh, line 141) Non-zero exit code detected.

问题:
1)我的elpa2019.05.001算不算安装成功了呢?下面是安装文件夹里的一些文件截图:


2)是不是要修改环境变量或增加cmake的安装路径才能让cp2k的自动安装程序找到elpa2019.05.001呢?具体应该怎么做呢?

3)您曾经提到“使用centos 7.7和7.8都可以成功编译,Ubuntu18.4是目前我试过的最容易编译的”,感觉特别诡异,为什么我尝试了这么多安装方法都难以做到不出错呢?想想看,有类似windows系统下的傻瓜版自动安装程序,并且所有模块都是下载的您的(让程序自动下载也试过不只一次),按说这个流程够透明的了,也并不复杂,为什么这么难?问题到底出在哪儿?想不通。




作者
Author:
wangtaochem    时间: 2020-6-12 22:33
wanlichuan 发表于 2020-6-12 16:39
Wangtaochem老师您好,再次感谢您的详细解答。
       最近事情太多,一直没尝试新的安装方法。 ...

教程里面的安装方法我之前也尝试做,虽然显示安装成功,但是设置完安装路径后,脚本命令显示elpa安装没成功,所有的操作系统里面,Ubuntu 18.4真的是最好安装的,在root权限下执行附件:./install_requirements_ubuntu.sh,就可以成功配制编译环境,然后就是指认一下相关库的安装路径就可以用脚本来进行编译了。
作者
Author:
highlight    时间: 2020-6-13 09:16
wanlichuan 发表于 2020-6-12 16:39
Wangtaochem老师您好,再次感谢您的详细解答。
       最近事情太多,一直没尝试新的安装方法。 ...

分享点我的经验吧,以下经验皆来自 centos7.8 (Ubuntu 当然是最容易,看 install_requirements.sh 就知道脚本作者用的是 Ubuntu
1. 使用高版本编译器有个超简单的方法,不用你自己编译安装:
yum install centos-release-scl
yum install devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-gcc-gfortran

要使用的时候只需要先“scl enable devtoolset-8 bash”即可。(用 8 不用 9 是因为,在某个地方看到过这句话:GNU Fortran version 8.3, 8.4, 9.2, or 9.3 are recommended, 9.1 is not recommended)
2. 这个自动安装脚本确实很“傻瓜”,但代价就是你在输出中一般看不到真正的错误信息。这时需要你自己去读报错位置对应的命令,找到编译时 log 中断的地方。无法提供这里的真正报错信息,别人也给不出有价值的参考意见的。毕竟大家的环境会有或多或少的差异。
3. 粗略来看,你这个 elpa 的报错应该是由于没有读到安装位置。建议试试 --with-elpa=手动安装位置,或暂时把它写进环境变量里。我的经验是 elpa 可以自安装,但要注意一下两点:让脚本自己安装 mpi 和保证使用的时 cmake3 版本是。后者可以看这个:https://stackoverflow.com/questions/48831131/cmake-on-linux-centos-7-how-to-force-the-system-to-use-cmake3
作者
Author:
wanlichuan    时间: 2020-6-22 20:00
本帖最后由 wanlichuan 于 2020-6-23 21:12 编辑

        谢谢两位老师的指导。这个周末我又尝试了一下cp2k7.1版的安装,有进展,但总体来讲还是失败的。详情如下:
        1)首先在Ubuntu18.04.4虚拟机上尝试了在root权限下执行附件:./install_requirements_ubuntu.sh,一开始即使在root账户下也是没有权限的,通过chmod 777赋予权限后,很顺利就完成了(约3分钟,全程无警告无报错)。但是此时直接通过install_cp2k_toolchain.sh安装cp2k会有好几个模块失败,最典型的就是“report_warning 327,No MPI installation detected on your system.”,因此会有ScaLAPACK、ELPA、sirius和spfft等被忽略安装,另外gfortran也找不到。然后不得不手动安装GNU和openMPI,安装完这些后再次运行install_cp2k_toolchain.sh就只有ScaLAPACK和ELPA两个模块失败了。又尝试其他办法【如运行sudo apt-get install libscalapack-openmpi-dev,安装intel PSXA2019update1,参考(https://blog.csdn.net/zh314js/article/details/76258705)博客等,此处感谢highlight老师的建议,通过“--with-elpa=手动安装位置”终于实现了使自动安装脚本找到手动安装的ELPA】可以艰难解决这两个模块,但是make后会有错误:
            cd /home/txj/cp2k/exe/local; ln -sf cp2k.sopt cp2k_shell.sopt
            cd /home/txj/cp2k/exe/local; ln -sf cp2k.ssmp cp2k_shell.ssmp
            make: *** [Makefile:118: all] Error 2

       并且六个执行程序(pdbg、psmp、popt和sdbg、ssmp、sopt)只能产生两个(sopt和ssmp),值得欣慰的是,这两个程序可以执行运算(图):


2)highlight老师的方法我也试了,感觉下面的指令在作用上类似一步安装GNU:
            # yum install centos-release-scl (约1分钟)
            # yum install devtoolset-8-gcc devtoolset-8-gcc-c++devtoolset-8-gcc-gfortran(约1分钟)

仍然难以直接解决最棘手的ELPA的安装。我一直没搞明白怎么“让脚本自己安装 mpi“,我目前只能做到手动安装mpi和”保证使用的是 cmake3 版本”,所以就一直没能解决通过“install_cp2k_toolchain.sh”完成ELPA安装的难题。
        之所以感觉总体还是失败的,原因有二:1)我的安装过程打满了补丁,对ELPA的解决一定是不彻底的,最后没有make出所有六个执行程序大概与此有关。回想cp2k6.1的安装,一气呵成,六个执行程序完美产生,那才算成功安装吧;2)按两位老师的说法,在Ubuntu18.04上安装cp2k7.1是很容易的,我却觉得很难,一定有什么地方不对。留待以后再慢慢摸索吧。
        再次感谢wangtaochem和highlight两位老师的指导。您们的建议让我少走了不少弯路,也学到了很多。



作者
Author:
ilovelr    时间: 2020-7-10 15:30
我觉得与CPU有关,在UBUNTU18.04中,两台电脑都是重装的,一台XEON用toolchain全程无错误,另一台i9-9900K一定会在安装某一个包的过程中出现问题
作者
Author:
yoghurt117    时间: 2020-7-10 23:09
MADAOLay 发表于 2020-5-23 13:49
请问大佬可以简单的写一下您编译的过程吗?我用tool chain编译cp2k7.1后使用时总是出现内存错误的问题,pop ...

以前用6.1编译好的计算,也是内存报错,用5.1就没事
作者
Author:
wanlichuan    时间: 2020-7-16 10:59
ilovelr 发表于 2020-7-10 15:30
我觉得与CPU有关,在UBUNTU18.04中,两台电脑都是重装的,一台XEON用toolchain全程无错误,另一台i9-9900K ...

有可能,我这个笔记本是i5-8250U,那几台物理机也是酷睿系列。改天找个别的cpu电脑试试。
作者
Author:
ykr    时间: 2020-7-16 15:10
我基本上是按wangtaochem来做的,我这边CentOS7.8,gcc,gfortran升级到了8.3.1,root下装cp2k7.1,不过没有用多核安装toolchain,即
./install_cp2k_toolchain.sh --with-cmake=install  --with-openmpi=install  --with-libxc=install --with-libint=install --with-fftw=install --with-openblas=install --with-scalapack=install --with-reflapack=no --with-libxsmm=install --with-elpa=install --with-ptscotch=install --with-pexsi=install --with-parmetis=install  --with-superlu=install --with-quip=install --with-plumed=install --with-gsl=install --with-libvdwxc=install --with-spglib=install --with-hdf5=install  --with-spfft=install
之间有些软件有装着装着就报错的,那就删掉install,build文件中的这部分,再重新toolchain,直到没问题。
然后测试了popt,单核安装,没有报错。但make test时,全部报错,和楼上遇到的情况一样。我不知道是不是因为是root的原因,在普通用户下,这个popt还是能用的,16核,跑64个Si的MD,3秒左右一步,速度应该是正常的。
最后,我想说我没有按楼上说的要yum安装requirements里面的插件,我是Centos,而requirement里面是ubuntu的,很多库本来也没有或者名字不对,比如我就没有装pkg和numpy这两个包,看起来也不影响编译。
作者
Author:
wangtaochem    时间: 2020-7-17 08:39
ykr 发表于 2020-7-16 15:10
我基本上是按wangtaochem来做的,我这边CentOS7.8,gcc,gfortran升级到了8.3.1,root下装cp2k7.1,不过没 ...

pkg包需要下载源码包才能编译,numpy是可以安装的,用pip的那个命令,
作者
Author:
ykr    时间: 2020-7-17 09:43
wangtaochem 发表于 2020-7-17 08:39
pkg包需要下载源码包才能编译,numpy是可以安装的,用pip的那个命令,

恩,yum应该也可以,虽然我没有装,但我这边可以yum install pkgconfig.x86_64 numpy.x86_64 ,可供参考。当时没有安装numpy,主要是不知道它是python2的还是3的,就干脆不装了。如果是普通pip的话,那numpy应该对应的是2了
作者
Author:
@Bruce    时间: 2020-8-1 11:56
老师,您好!
我在尝试源码编译gpu加速的CP2K时,反复出现下列错误,我使用root,重装CUDA等也没用,请问是什么原因导致的呢?
谢谢您的帮助。
make[4]: execvp: /usr/local/cuda/bin: 权限不够
make[4]: *** [acc_init.o] 错误 127
make[3]: *** [libdbcsr] 错误 2
make[2]: *** [dbcsr] 错误 2
make[1]: *** [psmp] 错误 2
make: *** [all] 错误 2
作者
Author:
wangtaochem    时间: 2020-8-1 12:19
@Bruce 发表于 2020-8-1 11:56
老师,您好!
我在尝试源码编译gpu加速的CP2K时,反复出现下列错误,我使用root,重装CUDA等也没用,请问 ...

不好意思哈,我没有编译GPU加速的。此外,在root权限下安装的软件有时不如在普通用户下安装的好。
GPU加速版本的编译可以参考官网的指导说明。
作者
Author:
wangtaochem    时间: 2020-8-1 12:21
ykr 发表于 2020-7-16 15:10
我基本上是按wangtaochem来做的,我这边CentOS7.8,gcc,gfortran升级到了8.3.1,root下装cp2k7.1,不过没 ...

在root权限下编译的软件对自带算例测试会显示运行失败,在普通用户权限下编译出来的执行文件测试算例基本没有问题。
作者
Author:
@Bruce    时间: 2020-8-1 13:06
wangtaochem 发表于 2020-8-1 12:19
不好意思哈,我没有编译GPU加速的。此外,在root权限下安装的软件有时不如在普通用户下安装的好。
GPU加 ...

好的,谢谢您
作者
Author:
gog    时间: 2020-11-3 11:49
ubuntu 20.4 openmpi-4.0.5,gcc9.3+mkl20.2,MKL_ROOT加载正常,toolchain安装,elpa不能通过。手动编译时候,提示:“could not link with blas:speifi path”。--with-openblas=install 到了elpa依旧是scripts line88 报错。这能否解决呢?我在ubuntu 18.04是能toolchain安装elpa2019的。
作者
Author:
wangtaochem    时间: 2020-11-4 23:12
gog 发表于 2020-11-3 11:49
ubuntu 20.4 openmpi-4.0.5,gcc9.3+mkl20.2,MKL_ROOT加载正常,toolchain安装,elpa不能通过。手动编译时 ...

有没有按照刘博的方法修改脚本,只要修改了,基本编译都能通过的,此外,elpa库出错,还可能和Python版本有关系,一般要求版本小于3.0.
作者
Author:
gog    时间: 2020-11-9 20:26
wangtaochem 发表于 2020-11-4 23:12
有没有按照刘博的方法修改脚本,只要修改了,基本编译都能通过的,此外,elpa库出错,还可能和Python版本 ...

ubuntu 20.4 默认版本是2.7,调用命令有些变化:python-is-python-to,可能脚本得修改下。另外系统已安装了python3.8。放弃了,还是老老实实用centos或者redhat安装。
作者
Author:
喵星大佬    时间: 2020-11-9 20:44
wangtaochem 发表于 2020-11-4 23:12
有没有按照刘博的方法修改脚本,只要修改了,基本编译都能通过的,此外,elpa库出错,还可能和Python版本 ...

3.8.6没有任何问题
作者
Author:
gog    时间: 2020-11-13 20:45
总感觉ubuntu上用gcc7.5的故障比较多。可能gcc-9.3的会好很多。
作者
Author:
达斯维达尼亚    时间: 2022-4-21 20:31
本帖最后由 达斯维达尼亚 于 2022-4-21 20:45 编辑

大佬,我最近在用intelmpi编译cp2k9.1,在编译过程中遇到了以下问题,一直没有解决,请问您知道该如何解决吗?拜谢!
以下出错是在输入make -j 36 ARCH=local VERSION="psmp"命令后出现的

ifort: command line warning #10006: ignoring unknown option '-fbacktrace'
ifort: command line warning #10006: ignoring unknown option '-ffree-form'
ifort: command line warning #10006: ignoring unknown option '-fimplicit-none'
ifort: command line warning #10006: ignoring unknown option '-std=f2008'
ifort: command line warning #10157: ignoring option '-W'; argument is of wrong type
ifort: command line warning #10157: ignoring option '-W'; argument is of wrong type
ifort: command line warning #10157: ignoring option '-W'; argument is of wrong type
ifort: command line warning #10157: ignoring option '-W'; argument is of wrong type
ifort: command line warning #10157: ignoring option '-W'; argument is of wrong type
ifort: command line warning #10157: ignoring option '-W'; argument is of wrong type
ifort: command line warning #10157: ignoring option '-W'; argument is of wrong type
ifort: command line warning #10157: ignoring option '-W'; argument is of wrong type
ifort: command line warning #10157: ignoring option '-W'; argument is of wrong type
ifort: command line warning #10157: ignoring option '-W'; argument is of wrong type
ifort: command line warning #10157: ignoring option '-W'; argument is of wrong type
ifort: command line warning #10157: ignoring option '-W'; argument is of wrong type
ifort: command line warning #10157: ignoring option '-W'; argument is of wrong type
ifort: command line warning #10157: ignoring option '-W'; argument is of wrong type
ifort: command line warning #10157: ignoring option '-W'; argument is of wrong type
/home/cp2k-9.1/exts/dbcsr/src/base/dbcsr_machine.F(62): error #7013: This module file was not generated by any release of this compiler.   [LIBXSMM]
      USE libxsmm, ONLY: libxsmm_timer_tick, libxsmm_timer_duration
----------^
/home/cp2k-9.1/exts/dbcsr/src/base/dbcsr_machine.F(67): error #6406: Conflicting attributes or multiple declaration of name.   [LIBXSMM_TIMER_DURATION]
      wt = libxsmm_timer_duration(0_int_8, libxsmm_timer_tick())
-----------^
/home/cp2k-9.1/exts/dbcsr/src/base/dbcsr_machine.F(62): error #6580: Name in only-list does not exist or is not accessible.   [LIBXSMM_TIMER_TICK]
      USE libxsmm, ONLY: libxsmm_timer_tick, libxsmm_timer_duration
-------------------------^
/home/cp2k-9.1/exts/dbcsr/src/base/dbcsr_machine.F(62): error #6580: Name in only-list does not exist or is not accessible.   [LIBXSMM_TIMER_DURATION]
      USE libxsmm, ONLY: libxsmm_timer_tick, libxsmm_timer_duration
---------------------------------------------^
compilation aborted for dbcsr_machine.F90 (code 1)
make[4]: *** [dbcsr_machine.o] Error 1
make[3]: *** [libdbcsr] Error 2
make[2]: *** [dbcsr] Error 2
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [psmp] Error 2
make: *** [all] Error 2




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