

Intel MPI编译yambo
source link: https://cndaqiang.github.io/2022/10/23/intel-yambo/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

编译yambo
下载源代码
yambo
本次使用yambo-5.1.1[2022/07/25]
- 从todo和mk中都看到了
./sbin/compilation/helper.sh
是用于生成Makefile的,我们如果因为各种原因需要修改Makefile可以改这里 - 编译的日志在
$(compdir)/log/[email protected]
,yambo编译过程不显示日志,找不到报错原因,看这个文件,例如log/compile_qe_pseudo.log
可以看到编译失败的原因 - 编译次数多了后,建议重新解压,
make clean_all
没用.
以怀柔服务器为例
module unload openmpi3/3.1.4
module load parallel_studio/2020.2.254
module load intelmpi/2020.2.254
module load gnu8/8.3.0
配置编译参数
configure和编译
[HUAIROU cndaqiang@login01 yambo-5.1.1]$./configure FC=ifort CC=icc MPIFC=mpiifort MPICC=mpiicc
....
# - COMPILERS -
#
# FC kind = intel ifort version 19.1.2.254
# MPI kind= Intel(R) MPI Library 2019 Update 8 for Linux* OS
#
# [ CPP ] icc -E -ansi -D_HDF5_LIB -D_HDF5_IO -D_MPI -D_FFTW -D_FFTW_OMP -D_TIMING -D_P2Y_QEXSD_HDF5
# [ FPP ] fpp -free -P -D_HDF5_LIB -D_HDF5_IO -D_MPI -D_FFTW -D_FFTW_OMP -D_TIMING
# [ CC ] mpiicc -O2 -std=gnu99 -no-multibyte-chars -D_C_US -D_FORTRAN_US
# [ FC ] mpiifort -assume bscc -O3 -g -ip
# [ FCUF] -assume bscc -O0 -g
# [ F77 ] mpiifort -assume bscc -O3 -g -ip
# [ F77U] -assume bscc -O0 -g
# [Cmain] -nofor_main
#
# You can modify compilers and flags by editing the file "config/setup"
#
编译全部
[HUAIROU cndaqiang@login01 yambo-5.1.1]$make core -j 60
如果没有问题就编译通过了
[HUAIROU cndaqiang@login01 yambo-5.1.1]$ls bin/
a2y c2y p2y yambo ypp
但是建议分步编译
make iotk
make qe_pseudo
#上面两个能正常结束后,再
make core
Error in opening the compiled module file. Check INCLUDE paths.
[lib/qe_pseudo] qe_pseudo (checking work to be done)
make[1]: *** [atom.o] 错误 1
atom.f90(14): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [RADIAL_GRIDS]
通过log/compile_qe_pseudo.log
发现,是编译依赖关系没弄好
atom.f90(14): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [RADIAL_GRIDS]
USE radial_grids, ONLY : radial_grid_type
------^
atom.f90(19): error #6406: Conflicting attributes or multiple declaration of name. [RADIAL_GRID_TYPE]
通过rm log/compile_qe_pseudo.log; make qe_pseudo; cat log/compile_qe_pseudo.log
一套组合拳,找到所有的依赖关系,把下面的内容添加到config/mk/local/makefile
,再make就解决了
atom.o:radial_grids.o
radial_grids.o:kind.o
radial_grids.o:constants.o
becmod.o:qe_auxdata.o recvec.o
qe_auxdata.o:parameters.o
s_psi.o:spin_orb.o uspp.o
uspp.o:invmat.o
init_us_1.o:us_module.o
#upf.o需要iotk,先make iotk
upf.o:read_upf_v1.o read_upf_v2.o
read_pseudo.o:read_uspp.o
Makefile 引用的
config/mk/global/actions/compile_internal_libraries.mk
包含了qe_pseudo等库的的编译方式,如qe_pseudo: @+LIBS="qe_pseudo"; BASE="lib" ; ADF="$(STAMP_DBLE)"; LAB=""; $(todo_lib); $(mk_lib)
- 上面的
$(todo_lib)
在config/mk/global/functions/todo.mk
中定义define todo_lib for lib in $$LIBS; do \ $(ECHO) "\t[$$BASE/$$lib] $$lib (checking work to be done)"; \ ./sbin/compilation/helper.sh -n -t lib$$LAB$$lib -d $$BASE/$$lib -N $(MAKEFLAGS) -m $(fast) -g $@ -- $(xcpp) $$ADF;\ done endef
- 上面的
$(mk_lib)
在config/mk/global/functions/mk_lib.mk
中定义define mk_lib for lib in $$LIBS; do \ if test ! -f $(compdir)/config/stamps_and_lists/lib$$LAB$$lib.a.stamp; then \ if test ! -d "$$BASE/$$lib" ; then mkdir -p "$$BASE/$$lib" ; fi ; \ ./sbin/compilation/helper.sh -d $$BASE/$$lib -t lib$$LAB$$lib.a -o .objects -m l -g $@ -- "$(xcpp) $$ADF" ; \ cd $$BASE/$$lib ; $(MAKE) $(MAKEFLAGS) VPATH=$(srcdir)/$$BASE/$$lib lib || { grep Error $(compdir)/log/[email protected] ; \ touch $(compdir)/config/stamps_and_lists/[email protected]; exit "$$?"; } ; cd $(compdir); \ fi;\ done endef
- 从todo和mk中都看到了
./sbin/compilation/helper.sh
是用于生成Makefile的 - 编译的日志在
$(compdir)/log/[email protected]
(python37) [HUAIROU chendq@login01 yambo-5.1.1]$grep include Makefile
include config/mk/global/defs.mk
include config/mk/defs.mk
include config/mk/global/no_configure_help.mk
include config/mk/global/targets.mk
include config/mk/global/libraries.mk
include config/mk/global/actions/download_external_libraries.mk
include config/mk/global/actions/compile_external_libraries.mk
include config/mk/global/actions/compile_internal_libraries.mk
include config/mk/global/actions/compile_yambo_libraries.mk
include config/mk/global/actions/compile_yambo.mk
include config/mk/global/actions/compile_interfaces.mk
include config/mk/global/actions/compile_ypp.mk
include config/mk/global/actions/clean.mk
include config/mk/global/functions/global_check.mk
include config/mk/global/functions/get_libraries.mk
include config/mk/global/actions/dependencies.mk
include config/mk/global/functions/todo.mk
include config/mk/global/functions/help.mk
include config/mk/global/functions/mk_lib.mk
include config/mk/global/functions/mk_external_lib.mk
include config/mk/global/functions/mk_exe.mk
include config/mk/global/functions/cleaning.mk
本文首发于我的博客@cndaqiang.
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK