vasp编译正常测试出错的解决办法
冬夜秋雾
2021年10月01日 09:52
收录于文集
共10篇

==================================================================

SUMMARY:

==================================================================

The following tests failed, please check the output file manually:

andersen_nve_constrain_fixed andersen_nve_constrain_fixed_MDALGO=11 andersen_nve_constrain_fixed_MDALGO=11_RPR andersen_nve_constrain_fixed_RPR andersen_nve_fixed andersen_nve_fixed_MDALGO=11 andersen_nve_fixed_MDALGO=11_RPR andersen_nve_fixed_RPR andersen_nvt_fixed andersen_nvt_fixed_MDALGO=11 andersen_nvt_fixed_MDALGO=11_RPR andersen_nvt_fixed_RPR

在新出的一些CPU上采用VASP默认的makefile.include编译后,执行测试test-suite

代码块
Shell
自动换行
复制代码
make test
复制成功

会无法通过一些测试,主要是anderson系列,比如:

代码块
Shell
自动换行
复制代码
andersen_nve_constrain_fixed andersen_nve_constrain_fixed_MDALGO=11 andersen_nve_constrain_fixed_MDALGO=11_RPR andersen_nve_constrain_fixed_RPR andersen_nve_fixed andersen_nve_fixed_MDALGO=11 andersen_nve_fixed_MDALGO=11_RPR andersen_nve_fixed_RPR andersen_nvt_fixed andersen_nvt_fixed_MDALGO=11 andersen_nvt_fixed_MDALGO=11_RPR andersen_nvt_fixed_RPR
复制成功

这主要是AVX512指令集导致的bug,解决办法如下:

修改src目录下的mymath.F文件

代码块
Shell
自动换行
复制代码
diff --git a/src/mymath.F b/src/mymath.F
index f46d930b..919fda62 100644
--- a/src/mymath.F
+++ b/src/mymath.F
@@ -1449,9 +1449,7 @@
           Ltxyz=1
           DO i=1,T_INFO%NIONS
             DO j=1,3
-              IF (.NOT. T_INFO%LSFOR(j,i)) THEN
-                Ltxyz(j)=0
-              ENDIF
+              IF (.NOT. T_INFO%LSFOR(j,i) .AND. Ltxyz(j)==1) Ltxyz(j)=0
             ENDDO
           ENDDO
复制成功

就是把

代码块
Shell
自动换行
复制代码
IF (.NOT. T_INFO%LSFOR(j,i)) THEN
	Ltxyz(j)=0
ENDIF
复制成功

替换为

代码块
Shell
自动换行
复制代码
IF (.NOT. T_INFO%LSFOR(j,i) .AND. Ltxyz(j)==1) Ltxyz(j)=0
复制成功

重新编译VASP后,就能正常通过

代码块
Shell
自动换行
复制代码
==================================================================
SUCCESS: ALL SELECTED TESTS PASSED
==================================================================
复制成功