||
相对于过去的版本来说,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)
不过终于把它编译好了,也算是大成功。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-23 09:37
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社