24小时热门版块排行榜    

查看: 9670  |  回复: 85
本帖产生 1 个 1ST强帖 ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

[资源] ifort(10.1.012) + MKL(10.0.2.018) + OpenMPI(1.4.4)编译并行vasp-5.2.2

ifort,MKL以及OpenMPI的安装不多赘述,可以参考
http://muchong.com/bbs/viewthread.php?tid=1930406
http://muchong.com/bbs/viewthread.php?tid=4433857

0.编译MKL中的fftw 3.x Fortran wrapper library
cd /opt/intel/mkl/10.1.0.015/interfaces/fftw3xf
make libem64t compiler=intel
如果没有安装icc的话,需要使用gcc,则
make libem64t compiler=gnu

1.解压vasp软件包
tar zxvf vasp.5.2.tar.gz
tar zxvf vasp.5.lib.tar.gz

2. 编译 VASP带的lib得到libdmy.a

cd vasp.5.lib
cp makefile.linux_ifc_P4 makefile
vi makefile
修改
FC=ifort
make

3.编译vasp
cd vasp.5.2
cp makefile.linux_ifc_P4 makefile
修改整个文件如附件
主要要修改的地方如下:(一定注意将重复的部分去掉,因为这个makefile的模版比较杂乱,可以直接用附件的文件根据自己情况修改)
FC=mpif90
FCL=$(FC)

CPP_ =  ./preprocess <$*.F | /usr/bin/cpp -P -C -traditional >$*$(SUFFIX)

CPP    = $(CPP_) -DMPI  -DHOST=\"LinuxIFC\" -DIFC \
     -Dkind8 -DCACHE_SIZE=4000 -DPGF90 -Davoidalloc -DNGZhalf \
     -DMPI_BLOCK=8000 \
     -DRPROMU_DGEMV  -DRACCMU_DGEMV  -DscaLAPACK

FFLAGS =  -I/opt/intel/mkl/10.0.2.018/include/fftw -FR -lower_case

OFLAG=-O3

OFLAG_HIGH = $(OFLAG)
OBJ_HIGH =
OBJ_NOOPT =
DEBUG  = -FR -O0
INLINE = $(OFLAG)

BLAS= -L/opt/intel/mkl/10.0.2.018/lib/em64t -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread

LAPACK= -L/opt/intel/mkl/10.0.2.018/lib/em64t -lmkl_intel_lp64  -lmkl_sequential -lmkl_core -lpthread

SCA= /opt/intel/mkl/10.0.2.018/lib/em64t/libmkl_scalapack_lp64.a /opt/intel/mkl/10.0.2.018/lib/em64t/libmkl_blacs_openmpi_lp64.a


LIB     = -L../vasp.5.lib -ldmy  \
      ../vasp.5.lib/linpack_double.o $(LAPACK) \
      $(SCA) $(BLAS)

FFT3D   = fftmpi.o fftmpi_map.o fftw3d.o fft3dlib.o  /opt/intel/mkl/10.0.2.018/lib/em64t/libfftw3xf_intel.a

编译完毕.
make ~/bin
cp vasp ~/bin

测试:(测试文件见附件)
mpirun -np 8 ~/bin/vasp >vasp.out &[ Last edited by zhangguangping on 2012-6-6 at 21:33 ]

需要注意的是在编译intel的fftw3xf的时候,虽然有两种方法:
make libem64t compiler=intel

make libem64t compiler=gnu,
如果你没有icc,也不要使用gnu的这个命令,因为编译到最后会报如下错误:
fftw3d.o: In function `fftmakeplan_': 。。。等等
这个时候需要的是修改makefile为:
ifeq ($(compiler),gnu)
override CC=gcc -D_GNU
else
override compiler=intel
override CC=gcc
endif

或者把gnu下面的gcc的参数去掉:
ifeq ($(compiler),gnu)
override CC=gcc
else
override compiler=intel
override CC=icc
endif

这样的话,make libem64t compiler=gnu编译也是可以的。
也就是说即使指明用intel,也要用gcc编译。这样生成的文件大小和用gnu大小都是不一样的。

[ Last edited by zhangguangping on 2014-1-11 at 12:11 ]

vasp 5.3.2编译时不能直接用vasp 5.2的makefile.附件中上传了5.3.2的makefile.其中,
FC=mpif90 -I/home/software/intel/composer_xe_2013.5.192/mkl/include/fftw中的-I/home/software/intel/composer_xe_2013.5.192/mkl/include/fftw是为了编译fftmpiw.F时用的。因为编译fftmpiw.F的规则是
fftmpiw.o : fftmpiw.F
        $(CPP)
        $(FC) -FR -lowercase -O1 $(INCS) -c $*$(SUFFIX)
或者将/home/software/intel/composer_xe_2013.5.192/mkl/include/fftw目录下的fftw3.f文件拷贝到当下编译目录中也可以。[ Last edited by zhangguangping on 2014-12-11 at 07:19 ]
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : lib-makefile
  • 2012-06-06 20:49:29, 1.78 K
  • 附件 2 : 1_7_H2O.rar
  • 2012-06-06 20:53:41, 87.86 K
  • 附件 3 : vasp-makefile
  • 2012-06-06 21:33:27, 6.3 K
  • 附件 4 : makefile-5.3.2
  • 2014-12-11 07:16:30, 6.44 K

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

beyond7765

新虫 (初入文坛)


86楼2016-11-04 22:02:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 86 个回答

★★★★★ 五星级,优秀推荐

guangping兄辛苦了!
2楼2012-06-06 21:06:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

乐石||

木虫 (正式写手)


★★★★★ 五星级,优秀推荐

最好不要用ifort(10.1.012)编译,用11会好些
3楼2012-06-06 21:12:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
引用回帖:
3楼: Originally posted by 乐石|| at 2012-06-06 21:12:01
最好不要用ifort(10.1.012)编译,用11会好些

这个版本的编译存在什么已知的问题呢?请指教!
4楼2012-06-06 21:34:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
简单回复
2012-06-07 13:51   回复  
五星好评  顶一下,感谢分享!
lwk20513楼
2012-06-09 18:36   回复  
五星好评  顶一下,感谢分享!
☆ 无星级 ★ 一星级 ★★★ 三星级 ★★★★★ 五星级
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见