Fail to compile phys-excitons branch of lumen fork

Having trouble compiling the Yambo source? Using an unusual architecture? Problems with the "configure" script? Problems in GPU architectures? This is the place to look.

Moderators: Davide Sangalli, andrea.ferretti, myrta gruning, andrea marini, Daniele Varsano, Conor Hogan, Nicola Spallanzani

Forum rules
If you have trouble compiling Yambo, please make sure to list:
(1) the compiler (vendor and release: e.g. intel 10.1)
(2) the architecture (e.g. 64-bit IBM SP5)
(3) if the problems occur compiling in serial/in parallel
(4) the version of Yambo (revision number/major release version)
(5) the relevant compiler error message
Post Reply
shelly
Posts: 2
Joined: Mon Jul 14, 2025 5:17 pm
Location: Michigan

Fail to compile phys-excitons branch of lumen fork

Post by shelly » Tue Jul 15, 2025 3:40 pm

Hello,

I've been trying to compile the phys-excitons branch of the lumen fork of yambo for a user who is interested in implementing the ARPES as BSE post processing described in the following tutorial https://wiki.yambo-code.eu/wiki/index.p ... lved_ARPES, but I have not had much success. I see that there are regular updates to this branch and it is clearly still under development. First, I would like to ask if there is a commit ID that you would recommend as a known, working snapshot of this branch. Beyond that, I can provide some details of my efforts and the errors that I've encountered below:

When trying to compile using gcc/13.3.0, openmpi/4.1.6 and mkl/2024.2, "make all" ends with:

Code: Select all

\t[driver] yambo_ph (link)
yambo_ph linking failed. Check log/compile_yambo_ph.log
make[1]: *** [config/mk/global/actions/compile_yambo.mk:43: yambo_ph] Error 1
yambo_ph build failed
make: *** [Makefile:52: all] Error 1
And log/compile_yambo_ph.log ends with:

Code: Select all

/usr/bin/ld: /tmp/mjohns89/build-gcc/lumen/lib/lib_Y_exc-ph.a(EXCPH_gkkp_driver.o): in function `excph_gkkp_driver_':
/tmp/mjohns89/build-gcc/lumen/src/exc-ph/EXCPH_gkkp_driver.f90:197: undefined reference to `build_inverse_bs_eh_table_'
collect2: error: ld returned 1 exit status
My config options for above were:

Code: Select all

MPIFC=mpif90 FC=gfortran F77=gfortran --enable-mpi --enable-open-mp --enable-par-linalg --enable-hdf5-par-io  --with-scalapack-libs=mkl --with-blacs-libs=mkl
I would prefer to compile with gcc and openapi, since that is what I used successfully to compile yambo 5.3 for the user previously. However, after failing to install with gcc, I also attempted to compile this branch with Intel oneAPI (2022.1.2) and failed as well. For completeness, the error was:

Code: Select all

\t[driver] yambo_ph (link)
yambo_ph linking failed. Check log/compile_yambo_ph.log
make[1]: *** [config/mk/global/actions/compile_yambo.mk:43: yambo_ph] Error 1
yambo_ph build failed
make: *** [Makefile:52: all] Error 1
and log/compile_yambo_ph.log stated:

Code: Select all

ld: /tmp/mjohns89/build/lumen/lib/lib_Y_exc-ph.a(EXCPH_gkkp_driver.o): in function `excph_gkkp_driver_':
/tmp/mjohns89/build/lumen/src/exc-ph/EXCPH_gkkp_driver.f90:208: undefined reference to `build_inverse_bs_eh_table_'
So, either way, there seems to be a problem with linking during building of yambo_ph. Am I missing something?

Best,
Shelly
Senior Research Computing Facilitator
Systems Architecture & Administration | ETS
University of Vermont

User avatar
Davide Sangalli
Posts: 644
Joined: Tue May 29, 2012 4:49 pm
Location: Via Salaria Km 29.3, CP 10, 00016, Monterotondo Stazione, Italy
Contact:

Re: Fail to compile phys-excitons branch of lumen fork

Post by Davide Sangalli » Wed Jul 16, 2025 8:06 am

Dear Shelly,
for the ARPES spectra the yambo_ph executable is not needed.

You just need to compile the core, and rt executables

Code: Select all

make core
make rt-project
Best,
D.
Davide Sangalli, PhD
CNR-ISM, Division of Ultrafast Processes in Materials (FLASHit) and MaX Centre
https://sites.google.com/view/davidesangalli
http://www.max-centre.eu/

shelly
Posts: 2
Joined: Mon Jul 14, 2025 5:17 pm
Location: Michigan

Re: Fail to compile phys-excitons branch of lumen fork

Post by shelly » Wed Jul 16, 2025 4:29 pm

Hello Davide,

Thanks for your response. I tried installing with only "make core" and "make rt-project" as you recommended. Unfortunately, I am getting stuck on the "make rt-project". It errors out with:

Code: Select all

\t[ypp/real_time] RT_OBSERVABLES_IO
make[2]: *** [/tmp/mjohns89/build-gcc/lumen/config/mk/local/rules.mk:15: RT_TR_ARPES.o] Error 1
Error: ERRMSG variable at (1) shall be a scalar default CHARACTER variable
Error: ERRMSG variable at (1) shall be a scalar default CHARACTER variable
Error: ERRMSG variable at (1) shall be a scalar default CHARACTER variable
Error: Parameter 'ipl' at (1) has not been declared or is a variable, which does not reduce to a constant expression
Error: 'kind' argument of 'int' intrinsic at (1) must be a constant
Error: Parameter 'ipl' at (1) has not been declared or is a variable, which does not reduce to a constant expression
Error: 'kind' argument of 'size' intrinsic at (1) must be a constant
Error: Parameter 'ipl' at (1) has not been declared or is a variable, which does not reduce to a constant expression
Error: 'kind' argument of 'int' intrinsic at (1) must be a constant
Error: Parameter 'ipl' at (1) has not been declared or is a variable, which does not reduce to a constant expression
Error: 'kind' argument of 'size' intrinsic at (1) must be a constant
Error: Type mismatch between actual argument at (1) and actual argument at (2) (REAL(4)/COMPLEX(4)).
Error: Type mismatch between actual argument at (1) and actual argument at (2) (REAL(4)/COMPLEX(4)).
\t[driver] ypp_rt (setup)
ypp_rt linking failed. Check log/compile_ypp_rt.log
Error: ERRMSG variable at (1) shall be a scalar default CHARACTER variable
Error: ERRMSG variable at (1) shall be a scalar default CHARACTER variable
Error: ERRMSG variable at (1) shall be a scalar default CHARACTER variable
Error: Parameter 'ipl' at (1) has not been declared or is a variable, which does not reduce to a constant expression
Error: 'kind' argument of 'int' intrinsic at (1) must be a constant
Error: Parameter 'ipl' at (1) has not been declared or is a variable, which does not reduce to a constant expression
Error: 'kind' argument of 'size' intrinsic at (1) must be a constant
Error: Parameter 'ipl' at (1) has not been declared or is a variable, which does not reduce to a constant expression
Error: 'kind' argument of 'int' intrinsic at (1) must be a constant
Error: Parameter 'ipl' at (1) has not been declared or is a variable, which does not reduce to a constant expression
Error: 'kind' argument of 'size' intrinsic at (1) must be a constant
Error: Type mismatch between actual argument at (1) and actual argument at (2) (REAL(4)/COMPLEX(4)).
Error: Type mismatch between actual argument at (1) and actual argument at (2) (REAL(4)/COMPLEX(4)).
make[1]: *** [config/mk/global/actions/compile_ypp.mk:58: ypp_rt] Error 1
ypp_rt build failed
make: *** [Makefile:46: rt-project] Error 1
The compile_ypp_rt.log file is showing:

Code: Select all

RT_TR_ARPES.f90:129:23:

  129 |  & stat=MEM_err,errmsg=MEM_msg)
      |                       1
Error: ERRMSG variable at (1) shall be a scalar default CHARACTER variable
RT_TR_ARPES.f90:188:23:

  188 |  & stat=MEM_err,errmsg=MEM_msg)
      |                       1
Error: ERRMSG variable at (1) shall be a scalar default CHARACTER variable
RT_TR_ARPES.f90:196:23:

  196 |  & stat=MEM_err,errmsg=MEM_msg)
      |                       1
Error: ERRMSG variable at (1) shall be a scalar default CHARACTER variable
RT_TR_ARPES.f90:355:59:

  355 |  & call MEM_free("INTERP_obj(ID_bands)%INTERP",int(-1,KIND=IPL))
      |                                                           1
Error: Parameter 'ipl' at (1) has not been declared or is a variable, which does not reduce to a constant expression
RT_TR_ARPES.f90:355:59:

  355 |  & call MEM_free("INTERP_obj(ID_bands)%INTERP",int(-1,KIND=IPL))
      |                                                           1
Error: 'kind' argument of 'int' intrinsic at (1) must be a constant
RT_TR_ARPES.f90:357:85:

  357 |  & call MEM_free("INTERP_obj(ID_bands)%INTERP",size(INTERP_obj(ID_bands)%INTERP,KIND=IPL))
      |                                                                                     1
Error: Parameter 'ipl' at (1) has not been declared or is a variable, which does not reduce to a constant expression
RT_TR_ARPES.f90:357:85:

  357 |  & call MEM_free("INTERP_obj(ID_bands)%INTERP",size(INTERP_obj(ID_bands)%INTERP,KIND=IPL))
      |                                                                                     1
Error: 'kind' argument of 'size' intrinsic at (1) must be a constant
RT_TR_ARPES.f90:368:41:

  368 |  & call MEM_free("ARPES_int",int(-1,KIND=IPL))
      |                                         1
Error: Parameter 'ipl' at (1) has not been declared or is a variable, which does not reduce to a constant expression
RT_TR_ARPES.f90:368:41:

  368 |  & call MEM_free("ARPES_int",int(-1,KIND=IPL))
      |                                         1
Error: 'kind' argument of 'int' intrinsic at (1) must be a constant
RT_TR_ARPES.f90:370:49:

  370 |  & call MEM_free("ARPES_int",size(ARPES_int,KIND=IPL))
      |                                                 1
Error: Parameter 'ipl' at (1) has not been declared or is a variable, which does not reduce to a constant expression
RT_TR_ARPES.f90:370:49:

  370 |  & call MEM_free("ARPES_int",size(ARPES_int,KIND=IPL))
      |                                                 1
Error: 'kind' argument of 'size' intrinsic at (1) must be a constant
RT_TR_ARPES.f90:190:30:

  131 |  & call MEM_count("GreenF_T_and_W%W",GreenF_T_and_W%W)
      |                                     2
......
  190 |  & call MEM_count("ARPES_int",ARPES_int)
      |                              1
Error: Type mismatch between actual argument at (1) and actual argument at (2) (REAL(4)/COMPLEX(4)).
RT_TR_ARPES.f90:198:48:

  131 |  & call MEM_count("GreenF_T_and_W%W",GreenF_T_and_W%W)
      |                                     2
......
  198 |  & call MEM_count("INTERP_obj(ID_ARPES)%INTERP",INTERP_obj(ID_ARPES)%INTERP)
      |                                                1
Error: Type mismatch between actual argument at (1) and actual argument at (2) (REAL(4)/COMPLEX(4)).
Should I be buiding with:

Code: Select all

export FCFLAGS="-fallow-argument-mismatch" FFLAGS="-fallow-argument-mismatch"
Or is there some other issue...?

UPDATE: I tried adding the exports above, and I still have the same errors.

Best,
Shelly
Senior Research Computing Facilitator
Systems Architecture & Administration | ETS
University of Vermont

Post Reply