目录

  • 编译安装VASP
    • 源码文件
    • 编译器及依赖
    • 编译VASP
    • 另外两个软件
      • Linux链接器ld
      • [Environment Modules](https://modules.sourceforge.net)
    • 提交VASP任务

编译安装VASP

最近要做密度泛函理论(density functional theory)计算,导师让学习一下vasp的使用,于是找了网上的vasp.5.4.4,在超算上自行安装了了一下。稍微记录一下,权当知识拓展。

源码文件

源码文件找的是网上流传版本最为广泛的5.4.4,里面自带了linux下并行编译的makefile,在一般超算上应该都可以直接使用,非常地人性化。

其实伴随着这个源码,已经有前辈给过编译方案,甚至有视频教程。但是鉴于intel直接把Parallel Studio做成oneapi,并且只有买了licsense的才可以下载历史版本(Intel这波做的真的恶心),所以对于编译器的安装部分,还是和前辈所用的略有不同,这里将自己的编译安装过程整理一下,或许也能帮助到后人。

编译器及依赖

VASP是用fortran编写的,所以自然需要fortran编译器。另外在超算上运行并行计算程序还需要相应的mpi(Message Passing Interface),以及Intel的数学库。

  • Intel® oneAPI Base Toolkit: 提供Intel MKL
  • Intel® oneAPI HPC Toolkit: 提供Intel MPI
  • Intel® Fortran Compiler Classic and Intel® Fortran Compiler: 提供Intel fortran编译器ifort

需要注意的是,2023版的oneAPI不支持我们的操作系统,安装的时候会提示:

This machine uses operating system “CentOS version 7”. Compatibility issues may occur.
Installation can continue; however, product functionality may not meet expectations because this product is untested on this operating system. Suggestion: Check the Release Notes for a list of supported operating systems and install this product on a compliant system.

以及,虽然HPC toolkit里面已经内置了fortran编译器,但是实践下来,不独立安装fortran编译器会将不会通过编译。。。
Intel oneapi的安装真的非常容易,只需要照着官网上的流程走。

  1. 点「下载」跳转到相应的下载界面
  2. 选择对应的操作系统和安装包类型。我们超算是CentOS version 7就选Linux,因为超算本身可以联网,安装包类型就选在线版。
  3. 选好之后网页会自动生成一个下载链接,拷贝对应的链接,在超算上运行wget命令,后面的链接替换成网页上给的链接,就像这样: wget https://registrationcenter-download.intel.com/akdlm/irc_nas/17977/l_BaseKit_p_2021.3.0.3219_offline.sh
  4. 这里*.sh的文件就可以理解为安装包,三个安装包都下载好之后,拷贝到超算上,运行sh *.sh -a --silent --eula accept直接安装(超算上没有超级用户权限,直接安装在个人文件夹)。
  5. 安装完成后用户目录底下会有一个intel的文件夹,我们进入到其中oneapi的文件夹,准备一下modulefiles。cd ~/intel/oneapi && sh modulefiles-setup.sh

编译VASP

VASP的编译前人已经已经趟过水了,我们直接运行:

. ~/intel/oneapi/setvars.sh    #将编译要用的intel的包都加入环境变量
tar -xvf vasp.5.4.4.tar.gz
cd vasp.5.4.4
mv arch/makefile.include.linux_intel makefile.include

然后用用vim(或者任何一款你熟悉的编辑器)打开这个文件makefile.include,在20行OFLAG这里,多加一个参数-xhost

改好之后我们就可以直接编译了,直接进行一个make all,亲测要等待一两个小时,而且使用诸如make -j 16 all等多线程编译会报错;所以还是建议大家多等等。编译成功的话,在vasp.5.4.4这个文件夹底下就会生成一个bin文件夹,我们编译好的可执行文件就在这里了。

最后我们将这个三个可执行文件移动到我们用户可执行文件目录。

mv ~/vasp.5.4.4/bin* ~/.local/bin

另外两个软件

Linux链接器ld

笔者编译的过程中,make all给报了一个错误:

ld:~/intel/oneapi/compiler/2022.2.1/linux/compiler/lib/intel64_lin/libifcoremt.a(cvtas_a_to_s.o):unrecognized relocation (0x2a) in section 'text'
ld: final link failed: Bad value

据StackOverflow上的大佬指点,是超算上装的ld的版本太老了的原因。
这个时候需要将超算上的ld替换成新版本的。

  1. 首先去GUN官网下载binutils的源码。
  2. 上传源码到超算上之后,解压、编译、安装。
tar -xvf binutils-2.39.tar.gz
mkdir .binutils         #创建安装文件夹
cd binutils-2.39
./configure --prefix=$HOME/.binutils #制定安装目录这里可能需要自己输入一下刚刚创建的文件夹路径
make all-ld
make install-ld

安装完成后,在我们的安装文件夹.binutils下,就能找到目录bin,这时候只需要将这个目录加入到环境变量去覆盖掉原来操作系统提供的ld就行。在~/.bashrc中加入这行:

export PATH=$HOME/.binutils/bin:$PATH

然后重新进入终端或者执行. ~/.bashrc。这个时候再重新编译就不会报错了。

Environment Modules

超算上的环境变量一般使用Environment Modules来管理,Intel的库也提供了对应的modulefiles(之前我们已经准备好),搭配使用非常顺滑。
而且不知道是什么原因,在笔者用的超算上运行编译好的的vasp_std的时候,必须要既使用Environment Modules来加载库文件,又要使用之前的. ~/intel/oneapi/setvars.sh来加载,按理说本来两者只需要一个的。
这个软件的安装方法也和ld没差多少,我们直接下载他的源码,拷贝到超算上,解压、编译、安装:

tar -xvf modules-5.2.0.tar
mkdir .modules
cd modules-5.2.0
./configure --prefix=$HOME/.modules
make all
make install

提交VASP任务

如前所述,运行VASP,环境变量稍有一点误差就会报错,好在这几天超算比较闲,我就多试了几次,总结出了一个提交脚本:

#!/bin/bash#SBATCH --job-name=vasp_test
#SBATCH -p cpu
#SBATCH --workdir=YOUR_WORK_DIR_PATH
#SBATCH --output=%j.out
#SBATCH --error=%j.err
#SBATCH --mail-type=ALL
#SBATCH --mail-user=YOUR_EMAIL_ADDRulimit -s unlimited
ulimit -l unlimited#接下来这段因各超算不同而可能需要有所改变,主要是清空超算上原有的配置
export MANPATH=/opt/gridview/clusquota/man
export PATH=/usr/lib64/qt-3.3/bin:$HOME/perl5/bin:/opt/gridview/slurm/bin:/opt/gridview/slurm/sbin:/opt/gridview/munge/bin:/opt/gridview/munge/sbin:/opt/gridview/clusquota//bin:/opt/gridview/clusquota//sbin:/opt/gridview/clusconf/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/ibutils/bin:$HOME/.local/bin
export LD_LIBRARY_PATH=
export MODULEPATH=#然后重新载入我们的配置
source $HOME/.modules/init/profile.sh
module use $HOME/intel/oneapi/modulefilesmodule load compiler
module load tbb
module load mkl
module load mpi
module listsource  $HOME/intel/oneapi/setvars.sh --force
mpirun -np 4 vasp_gam

将这段代码保存成文件如my_vasp_job.sh,然后使用sbatch my_vasp_job.sh提交任务即可。

编译安装vasp|使用oneAPI|老超算相关推荐

  1. Centos+Nginx+PHP7.0编译安装(和PHP5.6老版本共存)

    来源:http://blog.csdn.net/liuxinmingcode/article/details/50319145 场景 LNMP  当前版本:PHP 5.5.7  为了体验PHP7的速度 ...

  2. Ubuntu编译安装VASP

    一.前言 本文描述了如何在一台Ubuntu主机上编译vasp5.4.4,大致为intel并行环境的安装及vasp编译测试. 二.准备 前提条件及准备如下: ①Ubuntu主机一台 ②intel并行环境 ...

  3. CentOS 6下编译安装Nginx

    CentOS 6下编译安装Nginx  By:老宁 一.准备make环境  yum -y install gcc gcc-c++ automake autoconf libtool make 二.准备 ...

  4. 基于oneAPI的HPL.2.3编译安装

    基于oneAPI的HPL.2.3编译安装 1 环境准备 1.1 激活oneAPI环境变量 1.2 下载 HPL 2.3 源码包 1.3 解压缩 HPL 2.3 源码包 2 编译 2.1 复制模板到主目 ...

  5. web-httpd2.4编译安装

    httpd-2.4特性 (1) MPM支持运行DOS机制 (2) 支持event MPM (3) 支持异步读写 (4) 支持每模块及每个目录分别使用各自的日志级别 (5)  每请求配置:<if& ...

  6. rpm、yum、编译安装轻松管理centos7程序包

    程序包管理器之RPM 一.rpm是什么 RPM 是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的.RPM ...

  7. CentOS 6.4下编译安装MySQL 5.6.14

    概述: CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.14. 正文: 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server ...

  8. 程序包管理rpm、yum与简单编译安装程序

    Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个l ...

  9. linux系统软件包分类,Linux软件包管理和编译安装

    软件包介绍 开源软件最初只提供了.tar.gz的打包的源码文件,用户必须自已编译每个想在GNU/Linux上运行的软件.用户急需系统能提供一种更加便利的方法来管理这些软件,当Debian诞生时,这样一 ...

最新文章

  1. 任意的android程序,Android任意位置获取应用Context
  2. windowserver2008官方不提供POP3服务
  3. ThinkJava-复用类
  4. mysql默认排序规则_mysql 字符集与排序规则的简单了解
  5. 新书《编写可测试的JavaScript代码 》出版,感谢支持
  6. 前端学习(2131):作用域插槽的使用
  7. java 删除txt,如何从.txt文件中删除2个值
  8. 常用选择器(CSS+JQuery)
  9. 网络分裂(network partition)
  10. 使用trilium搭建专属知识库
  11. 那些唱衰智能电视的砖家们可以闭嘴了
  12. opengl es坐标变换理解1
  13. php stack trace,PHP 异常处理
  14. 计算机搜索功能在分区里失灵,DiskGenius搜索已丢失分区(重建分区表)
  15. 程序员必须要做的颈椎操
  16. 我的自学全栈路(从0元自学到转行IT)
  17. 给的再多,不如懂我——Gif录制工具,这两个就够了
  18. 个人网上银行常见问题
  19. java.lang.NoSuchMethodError: breeze.linalg.DenseVector$.canSetD()
  20. 硬盘引导二合一安装黑群晖

热门文章

  1. Github+VNote搭建个人笔记
  2. pip 安装库时磁盘空间不足怎么办?如何从指定位置安装相应的包
  3. python中小r 的用法
  4. IDEA EasyCode安装及详细配置说明
  5. 使用 Lambda 函数URL + CloudFront 实现S3镜像回源
  6. python 堆排序_堆排序用python
  7. 我的世界中国版怎么更改java_我的世界中国版Java 不删档测试问题指引
  8. 我用领英开发成交超过20个客户,告诉你用领英开发客户哪些事情能做,哪些事情不能做
  9. notebook pip install 只有星号_只有给淘宝店铺精准打标,才能“快速获得优质流量”...
  10. 回头再说说电影--电影英文名