首先我是一个linux 小白,只接触过linux 的基本用法, 听说VASP 编译很复杂,故想学习之。 如果大神见了,请直接飘过,非常期待和大家互动交流。

下面就直接进入主题。 如何在linux 下面安装VASP,首先我想说说什么叫编译? 为什么要编译呢?

说到编译,我们就先说说编译器 (Compiler),它是一种计算机程序,它会将用某种语言写成的源代码(原始语言),转换成另一种编程语言(目标语言)。它主要的目的是将便于人编写,阅读,维护的高级计算机语言所写作的源代码程序,翻译为计算机能解读、运行的低阶机器语言的程序,也就是可执行文件。

举个例子大家来理解下, 我有一个test.f90 的fortran 文件,经过编译在 window 生成 test.obj文件,在linux 下生成test.o 文件,注意这两个文件的格式是完全不同的。 这里有人就会问,那么.lib 是干什么?  比如我们的代码需要执行一些 open 语句,write 语句,read 语句等,编译器的生产厂家会把这些语句写在 .lib 运行时库里面(runtime.lib),当时我们可能在整个运行过程中需要调用第三方函数库(如IMSL、MKL等),编译器会一起链接(组装)成一个可执行文件。

我们可能后期会修改一个程序,我们可以再重新修改编译,没有修改的就不用编译,这样可以大幅度提高速度。

编译、链接、运行是三个基本步骤

编译是针对一个源文件,输出为目标代码

链接是针对一个或多个目标代码,也可以包含一个或多个库文件,输出为可执行程序

编译、链接是生成可执行文件(程序)的过程,是开发者应该做的事情

运行是使用可执行程序的过程,是用户应该做的事情

我们应该既要会安装VASP,也要会使用VASP

我们要安装VASP 需要什么呢?

1) 首先是编译环境的配置:

VASP 并行版本的编译(串行版本的不常用)需要如下工具:

Intel Fortran Compiler : ifort

并行编译器:mpif90 或者 mpiifort (上海超算是mpif90)

2)数学库:一般常用Intel MKL,如果有其他的当然也可以

3)VASP 源代码 下载 VASP 源码包,VASP 并不是免费软件,大家应该可以找到。我这里是vasp.5.2.12.tar.gz 和 vasp.5.lib.tar.gz

关于 Fortran 编译器,我们一般Intel架构的机器好像只能使用ifort来编译,如果使用GNU开发的gfortran编译,就是一个大大的杯具。从Intel 官网上可以下载Fortran编译器:

http://software.intel.com/en-us/ ... -evaluation-options

安装Fortran 编译器的时候好像会自动把MKL安装上,很是省事。当然,编译器和数学库的安装是需要许可证的,这个事情 … 大家都是电脑上从来不安装正版软件的盗版砖家,神通广大,深藏不露,这里我就不罗嗦了!其实Intel会有提供30天的试用版本,可以尝试。

关于并行编译器,可以使用 openmpi mpich IntelMPI 等等,安装的事情我不想多说了,DEB系列的系统直接apt-get install,其他系列的我不是很了解。当然可以从源代码编译安装,或者比如Intel的并行开发运行环境,从官网或者其他途径下载安装包,安装起来应该不是特别复杂。

需要注意的是,使用哪种MPI编译,就要使用对应的mpirun来并行运行,它们互相之间好像是不兼容,记得好好设置 PATH LD_LIBRARY_PATH 两个变量。VASP 运行时是一扑成吊丝,还是一飞成高富帅,它们有关键性的作用。

这个如果大家都弄好的话,请检查编译器,运行库,路径无误

Intel Fortran Compiler

[tongji005@login1 vasp.5.lib]$ which ifort

/public/software/compiler/intel/composer_xe_2015.2.164/bin/intel64/ifort

并行编译器:

[tongji005@login1 vasp.5.lib]$ which mpirun

/public/software/mpi/openmpi/1.6.5/intel/bin/mpirun

[tongji005@login1 vasp.5.lib]$ which mpif90

/public/software/mpi/openmpi/1.6.5/intel/bin/mpif90

which mpiifort

/share/apps/intel/impi/4.1.0.030/intel64/bin/mpiifort

关于 VASP 的编译

1,解压:tar zxvf FileName.tar.gz

tar zxvf vasp.5.2.12.tar.gz    tar zxvf vasp.5.lib.tar.gz

2,编译库文件, 简单, 直接使用makefile.linux_ifc_P4

将19行FC=ifc改为FC=mpiifort

make -f makefile.linux_ifc_P4

得libdmy.a和linpack_double.o, 即成功

注意你在编译过程中可能会遇到:

rm: cannot remove `libdmy.a': No such file or directory

make: [libdmy.a] Error 1 (ignored)

ar vq libdmy.a preclib.o timing_.o derrf_.o dclock_.o  diolib.o dlexlib.o drdatab.o

ar: creating libdmy.a

这是一个可以忽略的错误,不用理它。

3,编译主程序, 复杂, 牵涉到数学库, FFT库, 并行库的选择, 需要修改makefile.linux_ifc_P4.

原则是尽可能使用Intel自家的东西, 简单且效率好, 故使用MKL及其自带的FFTW, 并行库使用IntelMPI

编译器选项可在Intel官网查询

一份修改好的makefile及其简单注释如下

将其保存为makefile

注意,我在关键部分做个注释。

makefile 文件中的修改部分:

修改1,先把BLAS (Basic Linear Algebra Subprograms) 这个库的位置修改

修改2,修改LAPACK 数学库的位置

修改3,修改MKL 数学库的位置

修改4,修改FT3D的位置(做傅里叶变换用的)

退出保存

make

等待结果。

没有错误提示,证明VASP 编译成功。

说在后面

关于 makefile 中变量的设置,就说这么多。这里面的事情,参考着上面给出的示例,自己捉摸一下应该没有太大的问题,都懂的,说太多就没意思了,点到为止。

好吧,再唠叨几句:

如果不是使用 mpiifort 来编译的话,比如是 mpif90,记得将其调用的 fortran 编译器设置为 ifort 。有两种方式:一是重新编译并行编译器,在编译选项中指定其调用的Fortran编译器,这种方式可能有点麻烦;二是采用比较取巧的方法,由于mpif90默认调用gfortran作为Fortran编译器,那我们做一个符号链接就可以了:gfortran -> ifort。另外需要注意的是,可能同时得修改 BLAS LAPACK 和 SCA 变量中的部分链接库名字,详情请参考 makefile ,因为其中默认是使用 mpif90 编译器。

到这里,关于makefile的修改应该就差不多了,保存退出后执行 make ,如果人品足够好,一般等上十分钟的就可以得到编译好的可执行 vasp 二进制文件。这里有一个小技巧:直接执行make编译是顺序进行的,如果使用 make -j N ,则可以同时并发N个编译,速度会快上很多(N倍?)。但是由于makefile中没有针对并发编译做特殊的处理,所以这样操作很容易出错。当然,出来混,拼的就是人品!如果出错退出了,不用捉急,一般是由于编译过程的冲突导致的,再执行make顺序编译过这一段,接下来再并发编译,照样是可以的。

最后,编译过程中遇到问题的时候,不要难过,搞个两三天甚至几周才编译通过是很正常的事情,要淡定,要多上网搜,要多看VASP the GUIDE中的第三节:The installation of VASP,其中有很详细的解释。另外,VASP the GUIDE中有一些关于优化执行效率的讨论,很有参考价值,要认真学习,深入领会精神!

如果大家想要知道如何写 makefile 的话,请下载附件。  附件会教你一步一步如何写makefile 《跟我一起写 Makefile》

祝编译顺利,VASP开发小组与我们同在!

新手linux安装vasp_一步一步教你如何在linux 下安装VASP 【真的是从零开始】相关推荐

  1. linux卸载欧朋浏览器,如何在Centos下安装opera浏览器

    如何在Centos下安装opera浏览器 ,Opera目前是Linux平台上性能最优的浏览器,而且Opera中国团队本身即定位于Opera的研发中心,主要也是负责全球Linux平台项目的开发,这个版本 ...

  2. mysql数据库安装以及登录(如何在windows下安装mysql数据库,以及解决mysql8登录报错问题,绝对是保姆级别的,不要错过哦)

    目录 概述 MySQL的卸载(选看) 停止MySQL服务 软件的卸载 方式1:通过控制面板方式 方式2:通过360或电脑管家等软件卸载 方式3:通过安装包提供的卸载功能卸载 残余文件的清理 清理注册表 ...

  3. 如何在windows下安装CentOS7.7

    如何在windows下安装CentOS7.7 一.下载Oracle VM VirtualBox和CentOS7.7 1.先从官网上下载和自己Windows系统对应的版本 最新的版本是 6.0 下载地址 ...

  4. 教你如何在win7中安装cygwin64

    教你如何在win7中安装cygwin64 首先,说说我们为什么要安装cygwin吧,长期在win7下开发的人员可能不习惯使用unix系统,但由于工作问题,你又被逼要在unix环境下开发,那该如何是好啊 ...

  5. Docker知识4:如何在win10下安装 / 使用ubuntu ?应用WSL2

    官方文档:Install WSL on Windows 10 | Microsoft Docs 提要: 本文是关于docker的专题讨论,作者用一组文档尽可能保证完整地阐述Docker到底是啥?如何使 ...

  6. 教你如何在linux 下批量卸载

    教你如何在linux 下批量卸载 最 近本来想在linux 下配置 JDK 6.0 用来开发java,然后遇到很多麻烦,一开始的时候屁颠屁颠的到SUN的网站去下载个 JRE 的bin 文件,这个文件比 ...

  7. 如何在Debian下安装Webmin

    http://teddysun.com/403.html 首页 文学 相册 关于 RSS订阅 如何在Debian下安装Webmin 2015年3月11日 / 技术 / Debian, webmin / ...

  8. 如何在windows下安装cygwin

    如何在windows下安装cygwin 转载于:https://www.cnblogs.com/zhujiabin/p/5747580.html

  9. 手把手教你在Windows10环境下安装深度学习框架(pytorch or tensorflow)

    手把手教你在Windows10环境下安装深度学习框架(pytorch or tensorflow) 1. 安装Anaconda:(常用的python版本和各类包管理器) 1.1. 下载地址: 1.2. ...

  10. ubuntu安装python库_Python安装:如何在ubuntu下安装python库

    上面介绍到了python安装中如何在Windows下按章python库,接下来上海python培训小编介绍另外一种方法:如何在ubuntu下安装python库. 在ubuntu下进行python库的安 ...

最新文章

  1. 分布式事务之最终一致的Mq实现
  2. php使用array_filter()和回调删除数组中的某个元素
  3. 方法重载,new,override
  4. 电脑键盘上每个键的作用_眼看着淡出大众视野 键盘上Esc键的隐秘往事
  5. 数据库中的索引原理阅读
  6. escilpse 连接mysql,浅谈docker-compose网络设置之networks
  7. AcWing 91. 最短Hamilton路径(状态压缩DP+哈密顿回路)
  8. Redis主从架构和哨兵架构模式
  9. Java视频教程从入门到精通(2021完整版)
  10. C语言求1000以内完数
  11. (二)NI采集卡应用学习:使用NI MAX创建测量任务及常见错误
  12. 我国的省级行政区中,哪些邻省最多,哪些最少?
  13. HashMap 的Value排序
  14. PHP微信h5棋牌搭建sprintf()函数的使用
  15. Element Plus的分页组件el-pagination显示英文
  16. linux系统电视u盘安装教程,linux系统U盘安装教程
  17. 360全景倒车影像怎么看_360全景影像和倒车影像有什么区别
  18. 需要系数 计算机房,计算电流及需要系数表.xls
  19. ShaderToy的使用方法
  20. 如何知晓计算机的字长,计算机字长是什么意思,如何判断指令格式是单字长还是双字长...

热门文章

  1. 全网都在讲迁移学习,可你会写代码了吗?收藏我这个,10分钟开始你的迁移学习训练
  2. 分治法——查找最大最小元素(Python)
  3. 许昌学院计算机宿舍,许昌学院宿舍条件及图片
  4. 如何复制百度文库中的文章。。。
  5. INET的定制使用OMNET++
  6. VB.NET读取版本信息
  7. java爬虫:Heritrix教程
  8. springboot vue婚纱摄影师作品展示网站系统javaweb项目
  9. tuxedo服务配置
  10. python关于通讯录模型_python写一个通讯录 - wtwexile - 博客园