背景:
多数同学在入门计算时,无法获得个人的linux服务器,或者没有独立的linux系统作为入门学习。WSL (windows sub linux)系统基于更为底层的虚拟化,其计算性能优于虚拟机,略弱于纯linux物理机。是作为计算入门的可选系统。
这里,我们探究了cp2k-9.1在ubuntu18.4(wsl)的安装过程,如果是ubuntu物理机编译方法也是适用的。
备注:以前的文章说wsl无法识别双路cpu,结论是不严谨的,应该是wsl不能准确识别amd新架构的双路cpu,对于intel 双路cpu的识别是很准确的。
编译:
Enable-WindowsOptionalFeature-Online -FeatureName Microsoft-Windows-Subsystem-Linux
如果RestartNeeded:TRUE,则执行后需要重启下电脑
Invoke-WebRequest-Uri https://aka.ms/wsl-ubuntu-1804 -OutFile Ubuntu.appx -UseBasicParsing
Add-AppxPackageUbuntu.appx #添加ubuntu包ubuntu1804.exe #powershell自动安装ubuntu
安装时,会要求输入用户名(本次我们的用户名为lz),即密码
ubuntu换软件源
关闭powershell,在win10开始菜单输入bash,点击进入ubuntu18.04
sudo apt install gedit #安装gedit编辑器 初学者可以使用gedit图形话文本编辑工具sudo gedit /etc/apt/sources.list #打开/etc/apt/sources.list删除之前软件源记录,替换如下中科大软件源
删除原有的内容,添加下面
debhttps://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
debhttps://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universemultiverse
debhttps://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universemultiverse
debhttps://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universemultiverse
debhttps://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universemultiverse
deb-srchttps://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-srchttps://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universemultiverse
deb-srchttps://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universemultiverse
deb-srchttps://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universemultiverse
deb-srchttps://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universemultiverse
方式二:利用cat工具直接导入
sudo su #切换到root用户
全部拷贝如下命令,粘贴到ubuntu终端,enter执行,就好
cat<< EOF > /etc/apt/sources.listdeb https://mirrors.ustc.edu.cn/ubuntu/bionic main restricted universe multiversedebhttps://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universemultiversedebhttps://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universemultiversedebhttps://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universemultiversedebhttps://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universemultiversedeb-srchttps://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiversedeb-srchttps://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universemultiversedeb-srchttps://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universemultiversedeb-srchttps://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universemultiversedeb-srchttps://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universemultiverseEOF
方式三:利用vim工具打开/etc/apt/sources.list并替换为上述中科大源
sudo vi /etc/apt/sources.list
软件源替换后,执行软件源更新,及软件更新
sudo apt update && sudo apt upgrade
MKL-2022(intel oneAPI)安装
下载并安装oneapi
wget https://registrationcenter-download.intel.com/akdlm/irc_nas/18487/l_BaseKit_p_2022.1.2.146.shsudo sh./l_BaseKit_p_2022.1.2.146.sh
注意:这里我们只选了mkl,因为兼容性问题,目前我们只能证明mkl2022是兼容cp2k-9.1的(部分老版本parallel studio也是支持的,这里不做讨论),按提示完成安装。
cp2k下载与安装
su lz #由之前root账户切换到普通用户lzmkdir ~/app #新建app文件夹(路径/home/lz/app)cd ~/app #进入app文件夹wget https://github.com/cp2k/cp2k/releases/download/v9.1.0/cp2k-9.1.tar.bz2 #下载cp2k源码包tar -xvf cp2k-9.1.tar.bz2 #解压cd cp2k-9.1/tools/toolchain #进入cp2k的toolchain目录sed -i -e '83 s/^/#/' scripts/stage8/install_spfft.sh #注释掉spfft安装文件的83行sed -i -e '81 s/^/#/' scripts/stage8/install_spla.sh #注释掉spfft安装文件的81行source /opt/intel/oneapi/mkl/2022.0.2/env/vars.sh #加载mkl到环境变来呢过./install_cp2k_toolchain.sh \ --math-mode=mkl \--with-mkl=system \--with-openblas=no \--with-gcc=system \--with-scalapack=no \--with-ptscotch=install \--with-superlu=install \--with-quip=install \--with-plumed=install cp ~/app/cp2k-9.1/tools/toolchain/arch/* ~/app/cp2k-9.1/arch source ~/app/cp2k-9.1/tools/toolchain/install/setup #加载cp2k环境cd ~/app/cp2k-9.1/make -j 20 ARCH=local VERSION=ssmp #用20个线程开始编译make -j 20 ARCH=local VERSION=ssmp test #计算测试
备注:
sed -i -e '83 s/^/#/' scripts/stage8/install_spfft.sh 与sed -i -e '81 s/^/#/' scripts/stage8/install_spla.sh 是注释掉spff和spla安装文件中的一个文件剪贴操作,cp2k安装文件声称该剪贴操作是为了解决相应的bug,但是目前该bug已经不存在,反而执行剪贴操作成了安装的bug,需要注释掉。该类描述可见spff安装文件:~/app/cp2k-9.1/tools/toolchain/scripts/stage8/install_spfft.sh
此处我们编译ssmp版本cp2k(基于openmp多线程并行)。我们尝试过编译openmpi版本的psmp,但是mkl2022+openmpi4.1+gnu7.5/9.3+cp2k9.1在计算测试时具有较多的测试失败情况。问题原因可能出在mkl2022版本。大家可以尝试用parallel studio2018等版本的mkl。
注意单台服务器下,基于openmp线程的ssmp并行效率并不比基于mpi的 psmp低。
intel mkl数学库性能优于开源openblas数学库,各位优先编译mkl版本的cp2k。
cp2k执行:
source ~/app/cp2k-9.1/tools/toolchain/install/setup #加载cp2k依赖工具的环境export PATH=~/app/cp2k-9.1/exe/local:$PATH #将cp2k执行文件加入环境变量export OMP_NUM_THREADS=20 #设置20线程cp2k.ssmp **inp #计算