|
本帖最后由 丁越 于 2021-10-3 13:16 编辑
使用intel全家桶编译cp2k8.2
一、前言
cp2k.8.x的toolchain安装支持intel mpi了,使用Intel mpi的cp2k要比open mpi的要快不少。同时,自2021年intel全家桶(我们通常指的“Intel Parallel Studio XE”)现在已经免费了,而且延续多年的集成了Icc,ifort,Mkl,intel mpi的Intel Parallel Studio XE已经升级成为了intel oneAPI HPC toolkit,里面包含了oneAPI Base Toolkit和oneAPI HPC Toolkit两块,前者包含了icc,DPC++/C++编译器和MKL数学库等却不含有MPI库,后者包含了DPC++/C++、fortran编译器等却不含有MKL库,因此要想安装完整的Intel全家桶就得把这两者都安装上,而且后者依赖前者。下面结合社长编译cp2k的博文谈谈如何安装Intel mpi的cp2k。
二、安装步骤
1.安装intel oneAPI HPC toolkit
官网网址是https://software.intel.com/content/www/us/en/develop/articles/free-intel-software-developer-tools.html#,在intel oneAPI HPC toolkit中先选择get the base kit,操作系统选linux,distribution选择默认的recommand即可,安装类型推荐使用online,前提是服务器的网络连接状况良好。在右侧还给出了wget下载方式(wget https://registrationcenter-downl ... _p_2021.3.0.3219.sh) ,这里我们在服务器上直接wget下载最为方便。接下来下载HPC toolkit,同上,我们这里直接wget下载(wget https://registrationcenter-downl ... _p_2021.3.0.3230.sh)。并且将下载好的两个.sh安装包赋予可执行权限(chmod +x xxx)。
为了方便intel oneAPI HPC toolkit的安装,强烈推荐使用服务器图形界面安装,首先安装oneAPI Base Toolkit,输入./l_BaseKit_p_2021.3.0.3219.sh,接下来就是一路确认就行(第一步在安装中会有一个小三角的警示符,不用管)。如果你是个人用户安装,默认安装目录是~/Intel/oneapi,如果是root用户,默认安装目录是/opt/intel/oneapi。安装完成后进行oneAPI HPC Toolkit的安装,输入./l_HPCKit_p_2021.3.0.3230.sh,一路确认即可。
安装完成后,在~/.bashrc中加入source /home/xxx/intel/oneapi/setvars.sh(路径更具实际情况修改)。
2、编译cp2k.8.2
关于cp2k的具体编译操作,这里就不再累述,这里只对社长编译cp2k的博文做一些修改的地方加以说明,其他操作与博文一致即可。
首先确保~/.bashrc的环境变量里把其他的MKL,MPI库的路径注释,断开终端重新进入后,若发现:: initializing oneAPI environment ...
-bash: BASH_VERSION = 4.4.20(1)-release
:: advisor -- latest
:: ccl -- latest
:: clck -- latest
:: compiler -- latest
:: dal -- latest
:: debugger -- latest
:: dev-utilities -- latest
:: dnnl -- latest
:: dpcpp-ct -- latest
:: dpl -- latest
:: inspector -- latest
:: intelpython -- latest
:: ipp -- latest
:: ippcp -- latest
:: ipp -- latest
:: itac -- latest
:: mkl -- latest
:: mpi -- latest
:: tbb -- latest
:: vpl -- latest
:: vtune -- latest
:: oneAPI environment initialized ::
这样就表示编译cp2k所需的intel MKL和intel MPI已经准备好了。进入到cp2k-8.2/tools/toolchain/目录下,然后输入./install_cp2k_toolchain.sh --with-sirius=no --with-intelmpi=system --with-plumed=install 开始编译。注意的一点是,尽管 make -j 4 ARCH=local VERSION="ssmp psmp"中写明了要编译ssmp和psmp两个版本,但是最终在exe/local目录下我们只看到了ssmp版本,这是因为cp2k.8.2版本默认只配置ssmp版本,所以用这个即可。
另外的一点改动是将export OMP_NUM_THREADS=提交任务核心数 加入到~/.bashrc(对于个人用户来说)。尽管cp2k.ssmp提交任务默认使用全部核心,简单测试了一个任务(机子36核),我发现不使用export OMP_NUM_THREADS=36时,cp2k.ssmp用36核计算每轮SCF时长平均为5.3s,而export OMP_NUM_THREADS=36后,每轮SCF平均时间缩短为了3.5s。
下面是使用intel mpi的cp2k.8.2和社长《使用Multiwfn非常便利地创建CP2K程序的输入文件》中的几个例子简单比较下每轮SCF平均时长(社长博文文件中的几个例子用的是E5-2696v3,openmpi的cp2k.8.1)。测试使用的机子是E5-2696v3,36核,128GB,cp2k.8.2,cp2k.ssmp。
| intel mpi | open mpi | COF-PBE | 3.6s | 10.9s | COF-B97M-rV | 16.8s | 23.9s | Cu | 0.6s | 2.2s |
小菜鸟一个,如果有写的不对的地方还请各位老师批评指正^-^
|
评分 Rate
-
查看全部评分 View all ratings
|