乐于分享
好东西不私藏

VASP 5.4.4 AMD 编译安装指南

VASP 5.4.4 AMD 编译安装指南

软件安装实战系列· 04

Ubuntu 22.04 + AOCC 3.2.0 + AOCL 3.2.0 + OpenMPI 4.1.4

从编译链隔离、VASP 三版本构建,到 VTST 扩展与集群验收

适用系统

Ubuntu 22.04Ubuntu 24.04 可参考,命令和依赖版本需按实际环境调整

编译体系

AMD AOCC 3.2.0 + AOCL 3.2.0 + AOCC 编译的 OpenMPI 4.1.4

编译目标

vasp_std / vasp_gam / vasp_ncl,以及独立的 vasp_VTST

环境管理

Environment Modules 分层管理 compiler / math / mpi / env / vasp

文章定位

可操作安装教程 + 原理解释 高频故障排查 交付验收标准

云算科技

高性能计算|科研服务|软件支持

版本:20267

写在前面

 AMD 服务器上编译 VASP,最容易产生的误解是:只要安装了 AOCC 和 AOCL,再把编译器名字换成 clangflang,就算完成了“AMD 优化。实际上,真正决定安装是否可靠的,不是软件名称,而是整条编译链是否一致。

AOCC 负责 CC++ 和 Fortran 编译;AOCL 提供 BLASLAPACKScaLAPACK 与 FFTW 等数学库;OpenMPI 又必须由同一套 AOCC 编译。只要其中一环误用了系统 GCC、另一套 OpenMPI 或 Ubuntu 自带数学库,编译阶段就可能出现找不到库、符号未定义,甚至能够编译但运行不稳定的问题。

本文的核心目标

不仅让命令能够执行,还要让读者学会确认:clang/flang 来自哪里、mpif90 背后调用谁、AOCL 库到底安装在哪个目录、最终可执行文件运行时是否仍有缺失动态库。

本文基于 Ubuntu 22.04AOCC 3.2.0AOCL 3.2.0OpenMPI 4.1.4 和 VASP 5.4.4 展开,并包含 VTST 扩展流程。我们已将环境探测、路径识别、编译配置、日志保存、modulefile 生成和验收测试封装为一键安装脚本,也可提供远程部署服务;但文章仍完整说明关键步骤,方便读者自行安装和判断结果。

文章目录

1.理解 AMD 编译路线:AOCCAOCLOpenMPI 与 VASP 的关系

2.安装包、授权与目录规划

3.安装基础工具和 Environment Modules

4.安装并验证 AOCC 3.2.0

5.安装 AOCL 3.2.0,并确认真实库路径

6.创建 AOCCAOCL 与 OpenMPI modulefile

7.使用 AOCC 编译 OpenMPI 4.1.4

8.创建统一 AMD 编译环境 env/aocc/3.2.0

9.准备 VASP 5.4.4 源码与 makefile.include

10.编译 vasp_stdvasp_gamvasp_ncl

11.创建 VASP modulefile 并完成运行验收

12.配置赝势库与 Si 最小测试

13.可选扩展:VASP 5.4.4 + VTST

14.Slurm 作业脚本示例

15.高频报错与排查顺序

16.一键安装脚本应具备的能力

17.最终验收清单与服务说明

1. 理解 AMD 编译路线:四层环境必须保持一致

组件

作用

本流程中的要求

AOCC

提供 clangclang++flang

三个编译器必须来自同一 AOCC 安装目录

AOCL

提供 BLISlibFLAMEScaLAPACKFFTW

链接路径以实际 find 结果为准,不照抄不存在的统一 lib 目录

OpenMPI

提供 mpiccmpif90mpirun

必须使用 AOCC 编译,mpif90 后端必须是 flang

VASP

生成 stdgamncl 三种主程序

makefile.include 只链接本套 AOCL 与 OpenMPI

VTST

 NEBDimer 等过渡态功能提供源码补丁和脚本

复制原版源码后单独打补丁、单独编译

这条依赖关系可以理解成一列火车:AOCC 是机车,OpenMPI 与 AOCL 是中间车厢,VASP 是最后的载荷。每一节车厢都必须使用同一套连接标准。编译器混用通常不会在第一条命令就暴露,而是在 OpenMPI configureVASP 链接或多进程运行时才出现。

判断环境是否干净的关键命令

不要只看 which mpif90。还要执行 mpif90 --showme:command,确认 MPI wrapper 最终调用的是 AOCC flang,而不是 gfortran

2. 安装包、授权与目录规划

2.1 需要准备的安装包

aocc-compiler-3.2.0.taraocl-linux-aocc-3.2.0.tar.gzopenmpi-4.1.4.tar.gzvasp.5.4.4.tar.gzvtstcode-179.tgzvtstscripts.tgz 可选,VTST 辅助脚本potpaw_PBE*.tar.gz 可选,合法赝势库

授权说明

VASP 源码与赝势库属于授权内容,必须由用户或机构从合法渠道取得。安装服务可以完成本地编译、环境配置和测试,但不应代替用户提供未授权源码或赝势。

2.2 推荐目录

/opt/software 安装包与临时源码/opt/AMD # AOCL 等 AMD 软件/opt/openmpi/4.1.4-aocc # AOCC 编译的 OpenMPI/opt/vasp/vasp.5.4.4 # VASP 原版源码/opt/vasp/vasp.5.4.4-vtst # VASP + VTST 源码/opt/vasp/potpaw_PBE # PBE 赝势库示例/opt/vtst/vtstcode-179 # VTST 编译补丁/opt/vtst/vtstscripts # VTST 辅助脚本/opt/modulefiles # modulefile 根目录

建议让源码目录、最终运行目录和 modulefile 保持固定关系。路径规划看似只是整理文件,实际上会直接影响后续升级、回滚、并存多版本和集群普通用户使用。

3. 安装基础工具和 Environment Modules

sudo apt updatesudo apt install -y \build-essential make perl python3 python3-pip \m4 autoconf automake libtool wget curl tar gzip bzip2 xz-utils \pkg-config libnuma-dev zlib1g-dev ca-certificates \environment-modulessource /etc/profile.d/modules.sh 2>/dev/null || \source /usr/share/modules/init/bashmodule --versionsudo mkdir -p /opt/software /opt/AMD /opt/openmpi /opt/vasp /opt/vtst /opt/modulefiles

Environment Modules 的作用不是让命令更短,而是避免 AOCCGNUIntel、不同 MPI 和不同 VASP 版本永久堆叠在 PATH 与 LD_LIBRARY_PATH 中。需要切换软件时,先 module purge,再加载目标环境,比反复修改 ~/.bashrc 更可靠。

4. 安装并验证 AOCC 3.2.0

cd /opt/softwaretar -xvf aocc-compiler-3.2.0.tarcd aocc-compiler-3.2.0./install.sh安装器通常会生成环境初始化脚本,路径以实际结果为准source /opt/software/setenv_AOCC.shwhich clangwhich clang++which flangclang --versionflang --versionreadlink -f "$(which clang)"readlink -f "$(which flang)"

安装完成后,必须确认三个编译器都来自 AOCC,而不是系统自带的 /usr/bin/clang 或 GNU gfortran。不同 AOCC 安装包生成的目录可能不同,因此后续 modulefile 中的 AOCC_HOME 应依据 readlink -f 的结果填写。

不要跳过 flang 独立测试

OpenMPI configure 失败时,先用 flang 编译一个最小 Fortran 程序。如果编译器本身无法生成并运行程序,继续排查 OpenMPI 没有意义。

cat > /tmp/test_aocc.f90 <<'EOF'program mainprint *, "AOCC Fortran works"end program mainEOFflang /tmp/test_aocc.f90 -o /tmp/test_aocc/tmp/test_aocc

5. 安装 AOCL 3.2.0,并确认真实库路径

cd /opt/softwaretar -zxvf aocl-linux-aocc-3.2.0.tar.gzcd aocl-linux-aocc-3.2.0./install.sh -t /opt/AMD某些版本提供统一环境脚本source /opt/AMD/3.2.0/amd-libs.cfg 2>/dev/null || truefind /opt/AMD -name "libblis.so*" -o -name "libblis.a"find /opt/AMD -name "libflame.so*" -o -name "libflame.a"find /opt/AMD -name "libscalapack.so*" -o -name "libscalapack.a"find /opt/AMD -name "libfftw3.so*" -o -name "libfftw3.a"find /opt/AMD -name "fftw3.f" -o -name "fftw3.h"

AOCL 不同版本或安装方式可能采用分组件目录,例如 amd-blis/libamd-libflame/libamd-scalapack/lib 和 amd-fftw/lib。不要假设所有库都在 /opt/AMD/3.2.0/lib。最可靠的方法是先查找,再把真实目录写入 modulefile 和 makefile.include

变量

常见路径

对应库

AMDBLIS_LIB

/opt/AMD/3.2.0/amd-blis/lib

libblis

AMDLIBFLAME_LIB

/opt/AMD/3.2.0/amd-libflame/lib

libflame

AMDSCALAPACK_LIB

/opt/AMD/3.2.0/amd-scalapack/lib

libscalapack

AMDFFTW_LIB

/opt/AMD/3.2.0/amd-fftw/lib

libfftw3

AMDFFTW_INC

/opt/AMD/3.2.0/amd-fftw/include

fftw3.h / fftw3.f

6. 创建 AOCC 与 AOCL modulefile

6.1 AOCC 编译器模块

sudo mkdir -p /opt/modulefiles/compiler/aoccsudo tee /opt/modulefiles/compiler/aocc/3.2.0 >/dev/null <<'EOF'#%Module1.0proc ModulesHelp { } {puts stderr "AMD AOCC 3.2.0 compiler"}module-whatis "AMD AOCC 3.2.0 compiler"按 readlink -f $(which clang) 的结果修改set root /opt/software/aocc-compiler-3.2.0setenv AOCC_ROOT $rootprepend-path PATH $root/binprepend-path LD_LIBRARY_PATH $root/libprepend-path LIBRARY_PATH $root/libsetenv CC clangsetenv CXX clang++setenv FC flangsetenv F77 flangEOF

6.2 AOCL 数学库模块

sudo mkdir -p /opt/modulefiles/math/aoclsudo tee /opt/modulefiles/math/aocl/3.2.0-aocc >/dev/null <<'EOF'#%Module1.0proc ModulesHelp { } {puts stderr "AMD AOCL 3.2.0 libraries for AOCC"}module-whatis "AMD AOCL 3.2.0 for AOCC"set root /opt/AMD/3.2.0setenv AOCL_ROOT $rootprepend-path LD_LIBRARY_PATH $root/amd-blis/libprepend-path LD_LIBRARY_PATH $root/amd-libflame/libprepend-path LD_LIBRARY_PATH $root/amd-scalapack/libprepend-path LD_LIBRARY_PATH $root/amd-fftw/libprepend-path LIBRARY_PATH $root/amd-blis/libprepend-path LIBRARY_PATH $root/amd-libflame/libprepend-path LIBRARY_PATH $root/amd-scalapack/libprepend-path LIBRARY_PATH $root/amd-fftw/libprepend-path CPATH $root/amd-fftw/includeEOFmodule use /opt/modulefilesmodule purgemodule load compiler/aocc/3.2.0 math/aocl/3.2.0-aoccwhich clangwhich flangecho "$AOCL_ROOT"

路径必须以当前服务器为准

如果 find 命令得到的 AOCL 目录不同,应同步修改 modulefilemodule load 成功不等于路径正确,最终还要用 lsldd 和链接测试确认库文件确实存在。

7. 使用 AOCC 编译 OpenMPI 4.1.4

OpenMPI 是 AMD 路线中最关键的分界线。系统里即使已经有 mpiccmpif90,也不能直接使用,因为它们很可能属于 GNU 或其他编译器环境。这里将 AOCC 版 OpenMPI 安装到独立目录,不使用 /usr/local

cd /opt/softwaretar -zxvf openmpi-4.1.4.tar.gzcd openmpi-4.1.4module purgemodule use /opt/modulefilesmodule load compiler/aocc/3.2.0unset CFLAGS CXXFLAGS FFLAGS FCFLAGS LDFLAGS LIBShash -rAOCC_CC=$(readlink -f "$(which clang)")AOCC_CXX=$(readlink -f "$(which clang++)")AOCC_FC=$(readlink -f "$(which flang)")./configure \--prefix=/opt/openmpi/4.1.4-aocc \CC="$AOCC_CC" CXX="$AOCC_CXX" FC="$AOCC_FC" F77="$AOCC_FC" \--enable-mpi-fortran=allmake -j"$(nproc)"sudo mkdir -p /opt/openmpi/4.1.4-aoccsudo chown -R "$USER":"$USER" /opt/openmpi/4.1.4-aoccmake install

为什么不建议 sudo make install

sudo 可能清除当前 AOCC 的 PATH 和 LD_LIBRARY_PATH,导致安装阶段突然出现 clang: command not found。更稳妥的方式是预先创建目标目录并授予安装用户写权限。

7.1 创建 OpenMPI modulefile

sudo mkdir -p /opt/modulefiles/mpi/openmpisudo tee /opt/modulefiles/mpi/openmpi/4.1.4-aocc >/dev/null <<'EOF'#%Module1.0proc ModulesHelp { } {puts stderr "OpenMPI 4.1.4 built with AOCC 3.2.0"}module-whatis "OpenMPI 4.1.4 AOCC build"prereq compiler/aocc/3.2.0set root /opt/openmpi/4.1.4-aoccsetenv MPI_HOME $rootprepend-path PATH $root/binprepend-path LD_LIBRARY_PATH $root/libprepend-path LIBRARY_PATH $root/libprepend-path CPATH $root/includeprepend-path MANPATH $root/share/manEOFmodule purgemodule use /opt/modulefilesmodule load compiler/aocc/3.2.0 mpi/openmpi/4.1.4-aoccwhich mpiccwhich mpif90which mpirunmpif90 --showme:commandmpirun --version

合格标准

mpiccmpif90mpirun 应位于 /opt/openmpi/4.1.4-aocc/binmpif90 --showme:command 应显示 flang 或 AOCC flang 的完整路径。若显示 gfortran,必须停止并清理环境。

8. 创建统一 AMD 编译环境 env/aocc/3.2.0

分层 modulefile 便于排错,但日常编译软件时逐个加载 compilermath 和 mpi 容易遗漏。可以再创建一个总环境模块,作为 VASPQELAMMPSCP2K 等软件的统一编译入口。

sudo mkdir -p /opt/modulefiles/env/aoccsudo tee /opt/modulefiles/env/aocc/3.2.0 >/dev/null <<'EOF'#%Module1.0proc ModulesHelp { } {puts stderr "AOCC 3.2.0 + AOCL 3.2.0 + OpenMPI 4.1.4"}module-whatis "Unified AMD HPC build environment"module load compiler/aocc/3.2.0module load math/aocl/3.2.0-aoccmodule load mpi/openmpi/4.1.4-aoccsetenv OMP_NUM_THREADS 1EOFmodule purgemodule use /opt/modulefilesmodule load env/aocc/3.2.0module listwhich clangwhich flangwhich mpif90mpif90 --showme:command

从这一步开始,后续编译 VASP 只需要先加载 env/aocc/3.2.0。这样既减少人为遗漏,也方便未来把 VASP modulefile 设计成自动加载底层环境。

9. 准备 VASP 5.4.4 源码与 makefile.include

9.1 解压并确认真实源码目录

cd /opt/vasptar -zxvf /opt/software/vasp.5.4.4.tar.gzfind /opt/vasp -maxdepth 4 -type f -name makefile进入同时包含 archsrcmakefile 的真实目录cd /opt/vasp/vasp.5.4.4ls arch src makefile

部分源码包解压后存在两层同名目录。不要根据目录名猜测,必须以是否同时存在 archsrc 和顶层 makefile 为判断标准。

9.2 推荐 makefile.include

# ============================================================# VASP 5.4.4 - Ubuntu 22.04# AOCC 3.2.0 + AOCL 3.2.0 + OpenMPI 4.1.4# ============================================================CPP_OPTIONS = -DHOST=\"LinuxAOCC\" \-DMPI -DMPI_BLOCK=8000 -Duse_collective \-DscaLAPACK -DCACHE_SIZE=4000 \-Davoidalloc -Dtbdyn -Dfock_dblbuf -DLAPACK36CPP = clang -E -C -w $*$(FUFFIX) >$*$(SUFFIX) $(CPP_OPTIONS)FC = mpif90FCL = mpif90FREE = -MfreeFFLAGS = -w -Mfree -MbackslashOFLAG = -O2OFLAG_IN = $(OFLAG)DEBUG = -O0仅在同型号或兼容 AMD CPU 节点运行时保留VASP_TARGET_CPU ?= -march=nativeFFLAGS += $(VASP_TARGET_CPU)CPP_LIB = $(CPP)FC_LIB = $(FC)CC_LIB = clangCFLAGS_LIB = -O2FFLAGS_LIB = -O1FREE_LIB = $(FREE)OBJECTS_LIB = linpack_double.o getshmem.oCXX_PARS = clang++LIBS += parserLLIBS += -Lparser -lparser -lstdc++AMDBLIS_LIB = /opt/AMD/3.2.0/amd-blis/libAMDLIBFLAME_LIB = /opt/AMD/3.2.0/amd-libflame/libAMDSCALAPACK_LIB = /opt/AMD/3.2.0/amd-scalapack/libAMDFFTW_LIB = /opt/AMD/3.2.0/amd-fftw/libAMDFFTW_INC = /opt/AMD/3.2.0/amd-fftw/includeINCS += -I$(AMDFFTW_INC)BLAS = -L$(AMDBLIS_LIB) -lblisLAPACK = -L$(AMDLIBFLAME_LIB) -lflameSCALAPACK = -L$(AMDSCALAPACK_LIB) -lscalapackLLIBS += $(SCALAPACK) $(LAPACK) $(BLAS)LLIBS += -L$(AMDFFTW_LIB) -lfftw3LLIBS += -lm -ldl -lpthreadOBJECTS = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.oOBJECTS_O1 += fftw3d.o fftmpiw.o fftmpi.oOBJECTS_O2 += fft3dlib.o

两点必须根据实际环境调整

第一,AOCL 的五个路径以 find 结果为准;第二,-march=native 只适合编译节点与计算节点 CPU 指令集兼容的场景。异构集群应删除该选项或改用更保守的目标架构。

AOCL FFTW 通常只需链接 -lfftw3。如果链接阶段明确出现 fftw_mpi_* 未定义,再检查当前 AOCL 是否提供 MPI FFTW 接口,并按实际库增加 -lfftw3_mpi;不要在没有报错依据时随意混入 Ubuntu 系统 FFTW

10. 编译 vasp_stdvasp_gam 与 vasp_ncl

module purgemodule use /opt/modulefilesmodule load env/aocc/3.2.0cd /opt/vasp/vasp.5.4.4unset MAKEFLAGSmake veryclean 2>/dev/null || truerm -rf build/std build/gam build/ncl build/lib build/parserrm -f bin/vasp_std bin/vasp_gam bin/vasp_nclmake std -j1 2>&1 | tee build_std_aocc.logmake gam -j1 2>&1 | tee build_gam_aocc.logmake ncl -j1 2>&1 | tee build_ncl_aocc.logls -lh bin/vasp_std bin/vasp_gam bin/vasp_ncl

VASP 5.4.4 的 Fortran module 依赖顺序较敏感。第一次编译建议使用 -j1,先确保配置正确;在特定环境中直接 make -j$(nproc) 可能导致 base.modmpimy.mod 等文件尚未生成就被其他源文件引用。

可执行文件

主要用途

典型调用

vasp_std

常规结构优化、自洽、能带、DOS、分子动力学等

mpirun -np 16 vasp_std

vasp_gam

大超胞且仅使用 Gamma 

mpirun -np 16 vasp_gam

vasp_ncl

SOC、非共线磁性等

mpirun -np 16 vasp_ncl

11. 创建 VASP modulefile 并完成运行验收

sudo mkdir -p /opt/modulefiles/vaspsudo tee /opt/modulefiles/vasp/5.4.4-aocc >/dev/null <<'EOF'#%Module1.0proc ModulesHelp { } {puts stderr "VASP 5.4.4 built with AOCC/AOCL/OpenMPI"}module-whatis "VASP 5.4.4 AOCC build"conflict vaspif { [module-info mode load] } {module load env/aocc/3.2.0}set root /opt/vasp/vasp.5.4.4setenv VASP_HOME $rootsetenv VASP_PP_PATH /opt/vaspsetenv PMG_VASP_PSP_DIR /opt/vaspsetenv OMP_NUM_THREADS 1setenv OMP_STACKSIZE 512mprepend-path PATH $root/binEOFmodule purgemodule use /opt/modulefilesmodule load vasp/5.4.4-aoccwhich vasp_stdwhich vasp_gamwhich vasp_nclwhich mpirunmpif90 --showme:commandldd "$(which vasp_std)" | grep "not found" || echo "runtime libraries OK"

ulimit -s unlimited 不适合依赖 modulefile 执行,建议写入用户的 shell 初始化文件或作业脚本。运行 VASP 时仍建议显式写 mpirun 或 srun,不使用隐藏进程数的 alias

12. 配置赝势库与 Si 最小测试

12.1 赝势库

VASP 不会自动从赝势目录读取 POTCARVASP_PP_PATH 只是为脚本或工具提供统一根路径,每个计算目录仍需按 POSCAR 的元素顺序拼接 POTCAR

单元素 Sicat /opt/vasp/potpaw_PBE/Si/POTCAR > POTCAR例如 SrTiO3POSCAR 元素顺序为 Sr Ti Ocat /opt/vasp/potpaw_PBE/Sr_sv/POTCAR \/opt/vasp/potpaw_PBE/Ti_pv/POTCAR \/opt/vasp/potpaw_PBE/O/POTCAR > POTCARgrep TITEL POTCAR

12.2 Si 最小测试

mkdir -p ~/vasp_test/Si-aocccd ~/vasp_test/Si-aocccat > INCAR <<'EOF'SYSTEM = Si testENCUT = 300EDIFF = 1E-5ISMEAR = 0SIGMA = 0.05IBRION = -1NSW = 0EOFcat > POSCAR <<'EOF'Si5.430.0 0.5 0.50.5 0.0 0.50.5 0.5 0.0Si2Direct0.00 0.00 0.000.25 0.25 0.25EOFcat > KPOINTS <<'EOF'Automatic mesh0Gamma4 4 40 0 0EOFcat /opt/vasp/potpaw_PBE/Si/POTCAR > POTCARmodule purgemodule use /opt/modulefilesmodule load vasp/5.4.4-aocculimit -s unlimitedmpirun -np 4 vasp_std > vasp.outtail -n 40 vasp.outgrep "Voluntary context switches" OUTCAR

为什么不能只检查 which vasp_std

可执行文件存在只能证明编译产物被复制到了 PATH。完整验收至少还应包括 ldd 无 not foundMPI 多进程启动、读取完整输入文件、生成 OUTCAR/OSZICAR,并正常结束。

13. 可选扩展:VASP 5.4.4 + VTST

VTST code 是参与 VASP 重新编译的 Fortran 源码补丁;vtstscripts 是 NEB 路径生成、能量提取和结果分析脚本。二者作用不同。为了避免破坏已经验证成功的原版 VASP,应复制一份源码后再打补丁。

13.1 准备独立源码目录

sudo mkdir -p /opt/vtstsudo tar -xzf /opt/software/vtstcode-179.tgz -C /opt/vtstsudo tar -xzf /opt/software/vtstscripts.tgz -C /opt/vtst 2>/dev/null || truesudo chmod +x /opt/vtst/vtstscripts/* 2>/dev/null || truecd /opt/vaspcp -a vasp.5.4.4 vasp.5.4.4-vtstcd vasp.5.4.4-vtstmake veryclean 2>/dev/null || truerm -rf build/std build/gam build/ncl build/lib build/parserrm -f bin/vasp_std bin/vasp_gam bin/vasp_ncl bin/vasp_VTSTcp -n src/main.F src/main.F.originalcp -n src/.objects src/.objects.originalcp /opt/vtst/vtstcode-179/* src/

13.2 修改 main.F 与 .objects

# src/main.F 中将CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &LATT_CUR%A,LATT_CUR%B,IO%IU6)改为CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &TSIF,LATT_CUR%A,LATT_CUR%B,IO%IU6)# src/.objects 中,在 chain.o 之前加入bfgs.o dynmat.o instanton.o lbfgs.o sd.o cg.o dimer.o bbm.o \fire.o lanczos.o neb.o qm.o opt.o \

13.3 编译并命名 vasp_VTST

module purgemodule use /opt/modulefilesmodule load env/aocc/3.2.0cd /opt/vasp/vasp.5.4.4-vtst继续使用已经验证成功的 AMD makefile.includemake std -j1 2>&1 | tee build_vtst_std_aocc.logcp bin/vasp_std bin/vasp_VTSTchmod 755 bin/vasp_VTSTwhich nebmake.pl 2>/dev/null || trueldd bin/vasp_VTST | grep "not found" || echo "VTST runtime libraries OK"

不要把 VTST 当成独立软件

vasp_VTST 只是对完成 VTST patch 的 vasp_std 进行明确命名,便于与原版区分。没有复制源码、修改 main.F/.objects 并重新编译,仅复制可执行文件名称不会增加任何 VTST 功能。

13.4 VTST 版 modulefile

sudo tee /opt/modulefiles/vasp/5.4.4-vtst-aocc >/dev/null <<'EOF'#%Module1.0proc ModulesHelp { } {puts stderr "VASP 5.4.4 + VTST built with AOCC/AOCL/OpenMPI"}module-whatis "VASP 5.4.4 + VTST AOCC build"conflict vaspif { [module-info mode load] } {module load env/aocc/3.2.0}set root /opt/vasp/vasp.5.4.4-vtstset scripts /opt/vtst/vtstscriptssetenv VASP_HOME $rootsetenv VTST_SCRIPTS $scriptssetenv VASP_PP_PATH /opt/vaspsetenv OMP_NUM_THREADS 1prepend-path PATH $root/binprepend-path PATH $scriptsEOFmodule purgemodule use /opt/modulefilesmodule load vasp/5.4.4-vtst-aoccwhich vasp_VTSTwhich nebmake.plmpif90 --showme:command

14. Slurm 作业脚本示例

 Slurm 集群中,srun 与 mpirun 二选一,优先采用当前集群已经验证过的启动方式。不要在同一条运行命令中同时嵌套 srun 和 mpirun

#!/bin/bash#SBATCH -J vasp-aocc-test#SBATCH -N 1#SBATCH --ntasks-per-node=32#SBATCH -p compute#SBATCH -o vasp.out#SBATCH -e vasp.errsource /etc/profile.d/modules.sh 2>/dev/null || truemodule purgemodule use /opt/modulefilesmodule load vasp/5.4.4-aoccexport OMP_NUM_THREADS=1ulimit -s unlimitedsrun vasp_std

VTST 计算只需将加载模块改为 vasp/5.4.4-vtst-aocc,并将最终命令改为 srun vasp_VTST。多节点运行前还应确认 OpenMPI 与 Slurm 的集成方式、网络互联和节点间共享路径。

15. 高频报错与排查顺序

报错或现象

常见原因

优先检查

checking if Fortran compiler works... no

flang 本身不可用,或环境变量混入旧参数

先独立编译 test.f90,再查 config.log

gfortran: unrecognized option '-Mfree'

实际使用 GNU Fortran,却加载了 AOCC 参数

清理环境,确认 mpif90 后端为 flang

C and C++ are link compatible... no

clang 与系统 g++ 混用

同时使用 clang/clang++,清理 PATH

make install: clang not found

sudo 清理了 AOCC 环境

避免 sudo make install,或显式传递环境

mpif90 后端显示 gfortran

加载了错误的 OpenMPI

module purge 后只加载 AOCC MPI

cannot find -lblis/-lflame/-lscalapack

AOCL 路径照抄错误

使用 find 查询真实库目录

getshmem_C 等未定义

内部库缺少 getshmem.o

检查 OBJECTS_LIB 并清理重编

parse_file_C 等未定义

parser 未编译或未链接

检查 CXX_PARSLIBSLLIBS

undefined reference to dgegv_

LAPACK 接口兼容问题

启用 -DLAPACK36,必要时修改 symbol.inc

Cannot open module file *.mod

并行 make 破坏 Fortran 编译顺序

删除 build 后 make std -j1

15.1 OpenMPI configure 失败时

module purgemodule use /opt/modulefilesmodule load compiler/aocc/3.2.0unset FC F77 FFLAGS FCFLAGS CFLAGS CXXFLAGS LDFLAGS LIBShash -rwhich clangwhich clang++which flangflang /tmp/test_aocc.f90 -o /tmp/test_aocc && /tmp/test_aoccgrep -n -B 50 -A 80 "checking if Fortran compiler works" config.log

15.2 确认 MPI 没有串线

module purgemodule use /opt/modulefilesmodule load env/aocc/3.2.0which mpif90mpif90 --showme:commandmpif90 --showme结果必须指向 AOCC flang,而不是 gfortran

15.3 库链接错误时不要先重装全部环境

先确认报错的库名,再用 find 定位文件;检查 makefile.include 中 -L 路径与 modulefile 的 LD_LIBRARY_PATH 是否一致。只有库确实不存在时才考虑重新安装 AOCL。大量“cannot find”问题本质上只是路径写成了不存在的统一 lib 目录。

16. 一键安装脚本应具备哪些能力

真正可靠的一键脚本,不应只是把文档命令依次粘贴到一个 shell 文件中。AMD 路线的路径差异和环境污染较多,脚本必须具备探测、判断、记录和回滚能力。

能力

应完成的工作

专业价值

安装包预检

检查 AOCCAOCLOpenMPIVASPVTST 文件是否存在

避免运行到中途才发现缺包

编译器探测

记录 clangclang++flang 的真实路径与版本

防止系统 LLVM 或 GNU 工具链混入

AOCL 路径识别

自动定位 BLISlibFLAMEScaLAPACKFFTW

适配不同 AOCL 安装目录

MPI 后端验证

检查 mpif90 --showme:command 是否为 flang

阻止错误 MPI 继续编译 VASP

配置生成

基于真实路径生成 makefile.include 与 modulefile

避免手工照抄路径

日志与失败退出

保存 configure/make 日志,任一步失败立即停止

便于定位和复现

分版本隔离

原版与 VTST 版使用独立源码、bin 和 modulefile

防止补丁覆盖原版

三级验收

检查 whichlddMPI 启动和最小算例

证明程序不仅编译出来,而且可以运行

我们的一键安装与远程服务

云算科技可根据服务器 CPU、操作系统、现有 MPI/编译器环境和集群调度方式,使用脚本完成自动化部署,并保留关键配置、编译日志、modulefile 与验收结果。服务不包含未授权 VASP 源码或赝势的提供。

17. 最终验收清单

检查对象

验收命令或要求

合格结果

AOCC

which clang; which flang

均来自 AOCC 安装目录

OpenMPI

which mpif90; mpif90 --showme:command

位于 4.1.4-aocc,后端为 flang

AOCL

find/ls 检查四类数学库

BLISlibFLAMEScaLAPACKFFTW 均存在

原版 VASP

which vasp_std/gam/ncl

三者来自原版 VASP bin

运行库

ldd $(which vasp_std)

没有 not found

MPI 运行

mpirun -np 4 vasp_std

能够启动多进程并读取输入

测试算例

OUTCAR/OSZICAR/vasprun.xml

正常生成并结束

VTST 可选

which vasp_VTST; which nebmake.pl

可执行文件与脚本来自独立 VTST 环境

环境切换

module purge 后重新加载

不依赖杂乱的永久 PATH

交付时建议保留

成功使用的 makefile.includemodulefile、编译日志、版本信息、最小测试输入与输出摘要。它们既是验收依据,也是后续升级、迁移和故障恢复的重要资料。

结语

AMD 编译路线的难点,不在于命令数量,而在于每一层都必须能证明自己来自正确的环境AOCCAOCL 和 OpenMPI 只要有一层串线,错误就可能延迟到 VASP 链接甚至运行阶段才暴露。因此,安装过程中最有价值的习惯不是反复 make,而是先确认编译器,再确认 MPI wrapper,再确认数学库路径,最后通过 ldd 与最小算例完成闭环。

读者可以根据本文逐步完成 Ubuntu 22.04 下的 VASP 5.4.4 AMD 环境部署。对于已有多套编译器、多个 MPISlurm 集群、多节点共享文件系统,或需要同时部署原版与 VTST 版的服务器,建议采用脚本化和模块化方式交付。这样不仅安装成功,也能让后续用户清楚地加载、运行、排错和维护。

云算科技可提供 VASPQuantum ESPRESSOYamboEPWABINITCP2KLAMMPSGROMACS 等科研软件的远程安装与环境配置服务,并可结合 GNUIntelAMD 编译环境、Slurm 调度和多版本 modulefile 进行统一规划。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-13 00:28:13 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/920343.html
  2. 运行时间 : 0.135681s [ 吞吐率:7.37req/s ] 内存消耗:4,777.56kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=cab4e1df102178427e30cdd7b86c7ef6
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 4.22 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.11 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000484s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000742s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.037596s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000273s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000537s ]
  6. SELECT * FROM `set` [ RunTime:0.000199s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000540s ]
  8. SELECT * FROM `article` WHERE `id` = 920343 LIMIT 1 [ RunTime:0.000549s ]
  9. UPDATE `article` SET `lasttime` = 1786552093 WHERE `id` = 920343 [ RunTime:0.009395s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000239s ]
  11. SELECT * FROM `article` WHERE `id` < 920343 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000426s ]
  12. SELECT * FROM `article` WHERE `id` > 920343 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000374s ]
  13. SELECT * FROM `article` WHERE `id` < 920343 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000902s ]
  14. SELECT * FROM `article` WHERE `id` < 920343 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000639s ]
  15. SELECT * FROM `article` WHERE `id` < 920343 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.007336s ]
0.137205s