计算化学公社

 找回密码 Forget password
 注册 Register
Views: 1005|回复 Reply: 19
打印 Print 上一主题 Last thread 下一主题 Next thread

[Quantum ESPRESSO] 测试QE时遇到的问题

[复制链接 Copy URL]

13

帖子

0

威望

28

eV
积分
41

Level 2 能力者

大家好,我在Windows11上用wsl安装了Ubuntu 22,然后按照社长的http://bbs.keinsci.com/thread-18600-1-1.html这篇博文进行QE的安装,出现以下几点问题。
一、编译QE阶段
目标:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/compilers_and_libraries_2020.2.254/linux/mkl/lib/intel64_lin
我的Intel下面没有这个文件,只有~/intel/oneapi/mkl/2025.1/lib/intel64这个,intel64_lin和intel64是一回事嘛?
二、测试QE阶段
1、“先测试纯MPI并行方式运行。进入diamond目录后,运行以下命令,使用4个MPI进程计算,每个MPI进程下属只有一个线程。
export OMP_NUM_THREADS=1
mpirun -n 4 pw.x < pwscf.in |tee pwscf.out
结果中没有出现JOB DONE,而是报错,如下图:

2、“然后测试试纯OpenMP并行方式运行。运行以下命令,将使用一个MPI进程下属4个OpenMP线程进行计算
export OMP_NUM_THREADS=4
pw.x < pwscf.in |tee pwscf.out
结果显示JOB DONE,这是为啥?这意味着QE编译是成功了还是没成功?
3、“使用QE自带的测试集进行测试。做法是进入QE解压后的目录的test-suite子目录,在里面运行make run-tests-parallel命令,就会在并行运算下对所有任务进行测试,每一项对应的含义见此目录下的README。如果只想测试比如PWscf模块,则运行make run-tests-pw-parallel。
结果显示均是failed,这是什么原因导致的?

请求指点,谢谢大家:)


23

帖子

0

威望

262

eV
积分
285

Level 3 能力者

2#
发表于 Post on 2025-5-14 19:17:39 | 只看该作者 Only view this author
本帖最后由 hahajisuanxuexi 于 2025-5-14 19:19 编辑

我是用wsl2的ubuntu24来装qe的,用的是cmake安装方式(https://gitlab.com/QEF/q-e/-/wikis/Developers/CMake-build-system),使用的编译器和数学库都是intel,qe的mpirun和openmp可以正常使用。
我的~/intel/oneapi/mkl/2025.1/lib/文件夹中只有intel64,没有intel64_lin。
你在mpirun时报的错"prterun………………"我在测试其他程序的并行运行时也遇到过,应该和你没有正确编译mpirun版本有关,之后你进行并行测试全部失败也证明了这一点。

13

帖子

0

威望

28

eV
积分
41

Level 2 能力者

3#
 楼主 Author| 发表于 Post on 2025-5-14 19:31:30 | 只看该作者 Only view this author
hahajisuanxuexi 发表于 2025-5-14 19:17
我是用wsl2的ubuntu24来装qe的,用的是cmake安装方式(https://gitlab.com/QEF/q-e/-/wikis/Developers/CMa ...

谢谢,我试一下,十分感谢

23

帖子

0

威望

262

eV
积分
285

Level 3 能力者

4#
发表于 Post on 2025-5-14 19:37:55 | 只看该作者 Only view this author
本帖最后由 hahajisuanxuexi 于 2025-5-14 19:44 编辑
lqyang 发表于 2025-5-14 19:31
谢谢,我试一下,十分感谢

你可以安装intel oneapi的 base toolkit和hpc toolkit,里面带了intel编译器和mkl,只要是常用的intel cpu笔记本基本点几下鼠标就能安装成功。我用的cmake命令是“cmake -DCMAKE_C_COMPILER=mpiicx -DCMAKE_Fortran_COMPILER=mpiifx -DBUILD_SHARED_LIBS=ON -DQE_ENABLE_OPENMP=ON -DQE_ENABLE_SCALAPACK=ON ..”。


你用的configure安装方法如果安装顺利完成的话,不知道mpirun运行失败和你是否正确加载了openmpi环境有关。

另外如果要配置环境的话,你可以试试用Module file这个软件(https://blog.csdn.net/m0_37201243/article/details/129632603),intel oneapi安装完成后可以在根目录找到自动生成module file文件的脚本,用起来很方便。

13

帖子

0

威望

28

eV
积分
41

Level 2 能力者

5#
 楼主 Author| 发表于 Post on 2025-5-14 20:57:52 | 只看该作者 Only view this author
hahajisuanxuexi 发表于 2025-5-14 19:37
你可以安装intel oneapi的 base toolkit和hpc toolkit,里面带了intel编译器和mkl,只要是常用的intel cp ...

万分感谢

39

帖子

0

威望

1014

eV
积分
1053

Level 4 (黑子)

6#
发表于 Post on 2025-5-15 08:56:52 | 只看该作者 Only view this author
大概是从2022年还是2023年起,oneapi的编译器改名了。icc变为icx,ifort变为ifx等等,但qe里用的还是旧的,需要自己手动修改makefile。嫌麻烦可以改回GNU编译

13

帖子

0

威望

28

eV
积分
41

Level 2 能力者

7#
 楼主 Author| 发表于 Post on 2025-5-15 10:22:32 | 只看该作者 Only view this author
hahajisuanxuexi 发表于 2025-5-14 19:37
你可以安装intel oneapi的 base toolkit和hpc toolkit,里面带了intel编译器和mkl,只要是常用的intel cp ...

老师上午好,我安装了intel oneapi的 base toolkit和hpc toolkit,但是不知道安装到哪里了;然后“纯MPI并行方式运行。进入diamond目录后,运行以下命令,使用4个MPI进程计算,每个MPI进程下属只有一个线程。
export OMP_NUM_THREADS=1
mpirun -n 4 pw.x < pwscf.in |tee pwscf.out”
仍然显示失败,还是类似的报错;

然后我确实在intel/oneapi下面找到了modulefiles-setup.sh,执行之后也没效果;是我哪里遗漏了嘛

13

帖子

0

威望

28

eV
积分
41

Level 2 能力者

8#
 楼主 Author| 发表于 Post on 2025-5-15 10:24:31 | 只看该作者 Only view this author
qczcb2 发表于 2025-5-15 08:56
大概是从2022年还是2023年起,oneapi的编译器改名了。icc变为icx,ifort变为ifx等等,但qe里用的还是旧的, ...

老师上午好,qe-7.0下面找到了附件中的makefile,但是没有icc等您提到的字样,是我找错文件了嘛
Makefile (11.68 KB, 下载次数 Times of downloads: 1)




39

帖子

0

威望

1014

eV
积分
1053

Level 4 (黑子)

9#
发表于 Post on 2025-5-15 11:32:48 | 只看该作者 Only view this author
记错了,是make.inc文件,里面包含如下内容:
# CUDA C Flags
CUDA_CFLAGS=

# C preprocessor and preprocessing flags - for explicit preprocessing,
# if needed (see the compilation rules above)
# preprocessing flags must include DFLAGS and IFLAGS

CPP            = cpp
CPPFLAGS       = -P -traditional -Uvector $(DFLAGS) $(IFLAGS)

# compiler flags: C, F90
# C flags must include DFLAGS and IFLAGS
# F90 flags must include MODFLAGS, IFLAGS, and FDFLAGS with appropriate syntax

CFLAGS         = -O3 $(DFLAGS) $(IFLAGS) $(CUDA_CFLAGS)
F90FLAGS       = $(FFLAGS) -cpp $(FDFLAGS) $(CUDA_F90FLAGS) $(IFLAGS) $(MODFLAGS)

# compiler flags with and without optimization for fortran-77
# the latter is NEEDED to properly compile dlamch.f, used by lapack
FFLAGS         = -O3 -g -fallow-argument-mismatch
FFLAGS_NOOPT   = -O0 -g

# compiler flag needed by some compilers when the main program is not fortran
# Currently used for Yambo

FFLAGS_NOMAIN   =

# Linker, linker-specific flags (if any)
# Typically LD coincides with F90 or MPIF90, LD_LIBS is empty
# for libxc, set LD_LIBS=-L/path/to/libxc/lib/ -lxcf03 -lxc
# If libxc release is 5.0.0 replace -lxcf03 with -lxcf90

LD             = mpif90
LDFLAGS        = -g
LD_LIBS        =   等等,需要将cpp等字段替换为实际的编译器如icpx

13

帖子

0

威望

28

eV
积分
41

Level 2 能力者

10#
 楼主 Author| 发表于 Post on 2025-5-15 12:03:58 | 只看该作者 Only view this author
本帖最后由 lqyang 于 2025-5-15 12:05 编辑
qczcb2 发表于 2025-5-15 11:32
记错了,是make.inc文件,里面包含如下内容:
# CUDA C Flags
CUDA_CFLAGS=

谢谢老师!;那实际的编译器从哪里能看到呢,这是我的make.inc文件
make.inc (6.26 KB, 下载次数 Times of downloads: 0)




23

帖子

0

威望

262

eV
积分
285

Level 3 能力者

11#
发表于 Post on 2025-5-15 15:34:40 | 只看该作者 Only view this author
lqyang 发表于 2025-5-15 10:22
老师上午好,我安装了intel oneapi的 base toolkit和hpc toolkit,但是不知道安装到哪里了;然后“纯MPI ...

以下操作在root账户下执行,另外此安装方法不需要该帖提供帮助的网友qczcb2所说的修改makefile文件。
按照该网页https://blog.csdn.net/m0_37201243/article/details/129632603的教程安装Module管理器,然后根据说明输入命令:
  1. cd /usr/share/modules/init
  2. ls
  3. source /usr/share/modules/init/bash
复制代码


随后你可以通过
  1. module avail
复制代码

命令查看可用的module,通过
  1. module load xxx
复制代码

加载module(xxx是module名称)。
然后到网站https://www.intel.com/content/ww ... ;oneapi-lin=offline下载oneapi base toolkit离线安装包,到网站https://www.intel.com/content/ww ... toolkit-lin=offline下载oneapi hpc toolkit离线安装包,安装完成后进入文件夹/opt/intel/oneapi/输入命令
  1. bash modulefiles-setup.sh
复制代码

即可自动生成module file文件,根据提示到/root/modulefiles文件夹中将生成的intel oneapi相关module文件复制到文件夹/usr/share/modules/modulefiles中便能通过"module avail"和"module load xxx"查找和加载环境了。

随后使用apt安装cmake、git等安装qe所需要的软件,然后输入命令
  1. module load compiler-intel-llvm/2025.0.4 compiler/2025.0.4 mkl/2025.1 mpi/2021.14
复制代码

加载intel oneapi环境(请根据自己电脑上安装的intel oneapi版本修改上述命令)。

下载最新版的qe安装包后解压,进入根目录/qe-7.4.1输入命令
  1. mkdir build
复制代码

建立编译文件夹,进入build文件夹后输入命令
  1. cmake -DCMAKE_INSTALL_PREFIX=你所指定的安装QE可执行程序的文件夹地址 -DCMAKE_C_COMPILER=mpiicx -DCMAKE_Fortran_COMPILER=mpiifx -DBUILD_SHARED_LIBS=ON -DQE_ENABLE_OPENMP=ON -DQE_ENABLE_SCALAPACK=ON ..
复制代码

注意这里的"你所指定的安装QE可执行程序的文件夹地址"可以和你解压QE源码的根目录不同,然后QE会输出类似于如下的信息"-- The Fortran compiler identification is IntelLLVM 2025.0.4
-- The C compiler identification is IntelLLVM 2025.0.4
-- Detecting Fortran compiler ABI info
-- Detecting Fortran compiler ABI info - done
-- Check for working Fortran compiler: /opt/intel/oneapi/compiler/2025.0/bin/ifx - skipped
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /opt/intel/oneapi/compiler/2025.0/bin/icx - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Setting build type to 'Release' as none was specified
-- Enable sanitizer QE_ENABLE_SANITIZER=none
-- C preprocessor used by qe_preprocess_source in qeHelpers.cmake: /usr/bin/cpp
-- Performing Test Fortran_ISYSTEM_SUPPORTED
-- Performing Test Fortran_ISYSTEM_SUPPORTED - Success
-- Found MPI_Fortran: /opt/intel/oneapi/mpi/2021.14/lib/libmpifort.so (found version "3.1")
-- Found MPI: TRUE (found version "3.1") found components: Fortran
-- Selected the Fortran 'mpi' module. QE_ENABLE_MPI_MODULE=ON
-- MPI settings used by CTest
     MPIEXEC_EXECUTABLE : /opt/intel/oneapi/mpi/2021.14/bin/mpiexec
     MPIEXEC_NUMPROC_FLAG : -n
     MPIEXEC_PREFLAGS :
   Tests run as : /opt/intel/oneapi/mpi/2021.14/bin/mpiexec -n <NUM_PROCS>  <EXECUTABLE>
-- Found Git: /usr/bin/git (found suitable version "2.43.0", minimum required is "2.13")
-- Source files are not cloned from a git repository.
-- Trying to find LAPACK from Intel MKL
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Looking for Fortran sgemm
-- Looking for Fortran sgemm - found
-- Found BLAS: /opt/intel/oneapi/mkl/2025.1/lib/libmkl_intel_lp64.so;/opt/intel/oneapi/mkl/2025.1/lib/libmkl_sequential.so;/opt/intel/oneapi/mkl/2025.1/lib/libmkl_core.so;-lm;-ldl
-- Looking for Fortran cheev
-- Looking for Fortran cheev - found
-- Found LAPACK: /opt/intel/oneapi/mkl/2025.1/lib/libmkl_intel_lp64.so;/opt/intel/oneapi/mkl/2025.1/lib/libmkl_sequential.so;/opt/intel/oneapi/mkl/2025.1/lib/libmkl_core.so;-lm;-ldl;-lm;-ldl
-- Looking for Fortran zhpev
-- Looking for Fortran zhpev - found
-- Installing Wannier90 via submodule
-- Installing MBD via submodule
-- Installing DeviceXlib via submodule
-- Could NOT find VendorFFTW (missing: VendorFFTW_INCLUDE_DIRS)
-- Found PkgConfig: /usr/bin/pkg-config (found version "1.8.1")
-- Found FFTW3: /usr/lib/x86_64-linux-gnu/libfftw3.so
-- Looking for mallinfo
-- Looking for mallinfo - found
-- Enabling tests in test-suite

Only pw and cp results from ctest are reliable, we are working on making the rest tests work reliably with ctest. To run non-pw/cp tests, make a softlink of the bin directory to the root of QE source tree and run tests in the test-suite directory under that root.

-- generating tests in pw category
-- generating tests in cp category
-- Configuring done (4.9s)
-- Generating done (0.9s)
-- Build files have been written to: /software/download/qe-7.4.1/build"
然后输入命令
  1. make -j8 && make install
复制代码

等待编译以及安装完成。随后进入文件夹/usr/share/modules/modulefiles制作QE的module文件,输入命令
  1. vim qe_intel
复制代码

进入module文件编辑页面,输入"a"进入编辑模式,粘贴下述内容:
  1. #%Module1.0################################################################
  2. setenv qe 你所指定的安装QE可执行程序的文件夹地址
  3. prepend-path PATH 你所指定的安装QE可执行程序的文件夹地址/bin
  4. prepend-path LD_LIBRARY_PATH 你所指定的安装QE可执行程序的文件夹地址/lib64
  5. prepend-path LIBRARY_PATH 你所指定的安装QE可执行程序的文件夹地址/lib64
  6. prepend-path CPATH 你所指定的安装QE可执行程序的文件夹地址/include
  7. prepend-path PKG_CONFIG_PATH 你所指定的安装QE可执行程序的文件夹地址/lib64/pkgconfig
复制代码


然后输入ESC退出编辑模式,再输入":wq"退出编辑页面。

然后你可以通过输入命令
  1. module load compiler-intel-llvm/2025.0.4 mkl/2025.1 mpi/2021.14 qe_intel
复制代码

加载QE所需依赖库和QE程序,进入编译QE的build文件夹,输入命令
  1. ctest -j8 --output-on-failure -L unit
复制代码

测试是否安装成功。


评分 Rate

参与人数
Participants 1
eV +4 收起 理由
Reason
lqyang + 4 谢谢

查看全部评分 View all ratings

13

帖子

0

威望

28

eV
积分
41

Level 2 能力者

12#
 楼主 Author| 发表于 Post on 2025-6-4 11:28:09 | 只看该作者 Only view this author
hahajisuanxuexi 发表于 2025-5-15 15:34
以下操作在root账户下执行,另外此安装方法不需要该帖提供帮助的网友qczcb2所说的修改makefile文件。
按 ...

老师抱歉这么久才进行测试,您看这是成功了嘛,谢谢

23

帖子

0

威望

262

eV
积分
285

Level 3 能力者

13#
发表于 Post on 2025-6-4 15:38:33 | 只看该作者 Only view this author
lqyang 发表于 2025-6-4 11:28
老师抱歉这么久才进行测试,您看这是成功了嘛,谢谢

这应该表明你的cmake安装成功了,你还可以到之前说的test-suite文件夹输入类似下述命令判断并行是否能正常运行
  1. make run-tests-pw-parallel
复制代码

另外注意用“module load”命令加载相关模块。

13

帖子

0

威望

28

eV
积分
41

Level 2 能力者

14#
 楼主 Author| 发表于 Post on 2025-6-4 17:24:41 | 只看该作者 Only view this author
本帖最后由 lqyang 于 2025-6-4 17:29 编辑
hahajisuanxuexi 发表于 2025-6-4 15:38
这应该表明你的cmake安装成功了,你还可以到之前说的test-suite文件夹输入类似下述命令判断并行是否能正 ...


老师您好,我进入test-suite之后,make run-tests-pw-parallel反应了一会儿,然后全部报错

23

帖子

0

威望

262

eV
积分
285

Level 3 能力者

15#
发表于 Post on 2025-6-4 17:43:18 | 只看该作者 Only view this author
本帖最后由 hahajisuanxuexi 于 2025-6-4 17:46 编辑
lqyang 发表于 2025-6-4 17:24
老师您好,我进入test-suite之后,make run-tests-pw-parallel反应了一会儿,然后全部报错

你看看这两个网页里说到的问题和你遇到的问题是否一样?“https://gitlab.com/QEF/q-e/-/issues/444”、“https://gitlab.com/QEF/q-e/-/wik ... eudopotential-files”,
另外你确认下有没有加载相应的模块?
之前你的贴子说你在build文件夹里运行的cmake安装测试全部通过应该表明你的安装是没有问题的。你可以尝试运行下自编的QE代码,看看能否正常并行。

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2025-8-14 21:41 , Processed in 0.181706 second(s), 24 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list