BSE-XAS calculation crashes

This post was flagged by the community and is temporarily hidden.

Hi Chang,

Can you compile with make debugmpiandsmp, and see if the problem occurs - if so, this will tell us where it went wrong.

I see that you’re running with ASE, I don’t think this makes sense. The ASE calculator only supports ground state calculations but you wish to do BSE skipping the ground state. Can you try submitting the job directly? I also don’t think there’s a way to specify MPI processes with the ASE calculator (?) If not, the run time performance will be terrible.

One you check these things, can you provide more information please? Which intel compiler and what did you use (provided or custom)? Can you supply INFO.OUT and corresponding BSE INFO file for the failing case, and the run time settings.

I also note your rgkmax is extremely small, but I assume this is for testing purposes.


This post was flagged by the community and is temporarily hidden.

Hi Chang,

This is the problem:

forrtl: severe (408): fort: (8): Attempt to fetch from allocatable variable PMUO1 when it is not allocated

Image              PC                Routine            Line        Source             
exciting_debug_mp  0000000003935ADF  Unknown               Unknown  Unknown
exciting_debug_mp  0000000002A844C6  exccoulint_               484  exccoulint.f90
exciting_debug_mp  0000000000B1D746  exccoulintlaunche         118  exccoulintlauncher.f90
exciting_debug_mp  0000000000935FD9  xsmain_                   161  xsmain.F90
exciting_debug_mp  0000000001956B01  xstasklauncher_           233  xstasklauncher.f90
exciting_debug_mp  00000000022D8EE0  tasklauncher_              25  tasklauncher.f90
exciting_debug_mp  0000000001D7DD5B  MAIN__                     51  main.f90
exciting_debug_mp  0000000000410D52  Unknown               Unknown  Unknown       00007F661379234A  __libc_start_main     Unknown  Unknown
exciting_debug_mp  0000000000410C6A  Unknown               Unknown  Unknown

I’ll ask the BSE developers if this has been patched.

W.r.t. running exciting with mpi via ASE, I didn’t look at the code but you’ll also need to set the env variable for OMP_NUM_THREADS for maximum efficiency. excitingtools already enables you to generate input for ground state and BSE with python, it also has numerous file parsers. There is an open MR with ASE to completely overhaul the calculator, using excitingtools as a plug-in . Hopefully that goes through this year.


Hi Alex,

I am indeed setting OMP_NUM_THREADS to 1 for my parallelized computations yes, and many thanks for the tips about python scripts of BSE - I am still learning these very convenient tools now (I created a special Python 2.7.14 environment in Anaconda for exciting tools) and they are indeed very helpful. The news about open MR with ASE sounds great, too.

Since I am trying to use exciting to compute X-ray absorption and emission spectra based on GW-BSE, I tried to go beyond TDA by setting coupling = "true", using the tutorial for BN ( But unfortunately the program crashes each time I attempt:

mpprun info: Starting impi run on 1 node ( 8 rank X 1 th ) for job ID 21805777
Abort(101) on node 2 (rank 2 in comm 0): application called MPI_Abort(MPI_COMM_WORLD, 101) - process 2
Abort(101) on node 4 (rank 4 in comm 0): application called MPI_Abort(MPI_COMM_WORLD, 101) - process 4
Abort(101) on node 6 (rank 6 in comm 0): application called MPI_Abort(MPI_COMM_WORLD, 101) - process 6
mpprun info:   Job terminated with error

The same test will run smoothly if I turn off coupling.

This exciting build was compiled by the staff at NSC in Linköping University, so it should not suffer from my own inexperience as in the previous case. I have uploaded the whole case in:

Could you help me in this case, too? Thank you!!!

Best wishes,
Chang Liu

Hi Chang,

Python’s subprocess will start its own shell instance. I’m relatively sure that you would need to pass OMP_NUM_THREADS as an env dictionary to subprocess in order for anything other than 1 to be used. Something like this:

def some_routine(my_env, ...):
    if my_env is None:
        my_env: dict = os.environ.copy()
    process = Popen(execution_str.split(), cwd=path, stdout=PIPE, stderr=PIPE, env=my_env)

excitingtools is not the tutorial scripts, it’s the python3 package we’re developing to supersede the scripts: excitingtools · PyPI (also packaged with exciting).

W.r.t. the failing calculation, I’ll pass this info on to Fabian, who currently does the most x-ray absorption simulations in the group.