董校
vasp 6.3 + ifc2016 编译的问题
2022-1-25 00:49
阅读:3984

相对于过去的版本来说,vasp6.3改动了一些代码,里面用了一些fortran2008标准以上的写法,导致和比较古老的intel编译器(intel17.0-2016.11之前的版本,具体参见 https://community.intel.com/t5/Intel-Fortran-Compiler/bug-error-8259-TBP-def-must-contain-1-binding/td-p/1047332)不兼容,主要问题出现在random.F文件,如果编译报如下错误:

The type bound procedure definition statement must contains only one binding name.

其主要原因是老版的fortran private变量一行只能定义一个,所以必须要把相应的部分拆开,具体来说:

原版的random.F  69-71行 为

        procedure, private :: random_real_scalar, random_real_array

....


需要将相应部分拆开,每行一个变量:

        procedure, private :: random_real_scalar

        procedure, private :: random_real_array

        procedure, private :: uniform_real_scalar

        procedure, private :: uniform_real_array

        procedure, private :: uniform_complex_scalar

        procedure, private :: uniform_complex_array

这样就可以编译通过,目前为止没发现问题。

——————————————————分割线————————————————————————

又折腾了一上午,说来也是奇怪,

SCALAPACK = $(MKL_PATH)/libmkl_scalapack_lp64.a -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core

就识别不了,写成下面这样就可以识别,也是醉了。

SCALAPACK  = \$(MKL_PATH)/libmkl_scalapack_lp64.a -Wl,--start-group \$(MKL_PATH)/libmkl_intel_lp64.a \$(MKL_PATH)/libmkl_intel_thread.a \$(MKL_PATH)/libmkl_core.a \$(MKL_PATH)/libmkl_blacs_intelmpi_lp64.a -Wl,--end-group -lpthread \$(BLACS)

不过终于把它编译好了,也算是大成功。

转载本文请联系原作者获取授权,同时请注明本文来自董校科学网博客。

链接地址:https://wap.sciencenet.cn/blog-382437-1322510.html?mobile=1

收藏

分享到:

当前推荐数:0
推荐到博客首页
网友评论0 条评论
确定删除指定的回复吗?
确定删除本博文吗?