HPC/Applications/quantum-espresso

From CNM Wiki
Jump to navigation Jump to search

Introduction

Quantum ESPRESSO is a suite of several programs working on the same data files. This brings with it some challenges for data management.

  • A sample job file is at the customary location once the quantum-espresso module is loaded.
$QUANTUM_ESPRESSO_HOME/sample.job
  • Remove the large and numerous wave function files *.wfc* when you no longer need them.

Limitations

  • QE stores rather large wave function files in the directory specified by outdir or the ESPRESSO_TMPDIR environment variable. This may unduly tax the file server.
  • Wave function files from parallel runs are written separately by each MPI process and are named prefix.wfcn with sequential integers n. Subsequent calculations must use the exact same number of MPI processes, and each process must have access to its own n. (That means using a node-local directory for those files is overly difficult because a dispatch stage would be needed to supply each node with the proper subset of files.)
  • In a subdirectory prefix.save/ the main QE program pw.x stores important metadata needed for subsequent calculations such as a DOS calculation. This means the …TMP part in the name ESPRESSO_TMPDIR is rather misleading.
  • QE expects a non-trivial value of ESPRESSO_PSEUDO to terminate with a slash /. The pw.x binary manages to accept a value without a terminating slash, but other executables such as dos.x fail.

Changes

As of module version quantum-espresso/4.3.2-2:

  • Given the problems above, the environment variable ESPRESSO_TMPDIR is no longer set.
  • The value of ESPRESSO_PSEUDO now ends with a slash. Unfortunately, the new value will be of no help for older calculations since prefix.save/data-file.xml enshrines the old value and takes precedence for restart calculations. To supply the corrected value to an older calculation:
    perl -i.bak -pe 's{/opt/soft/quantum-espresso-pot/pseudo$}{$&/}' */data-file.xml
    
    There will not be any output, but you can inspect the changes if you're curious:
    for i in  */data-file.xml; do diff $i.bak $i; done