[QE-users] Non-collinear magnetism MPI run

Marios Georgiou M.Georgiou at leeds.ac.uk
Thu Jun 5 20:20:24 CEST 2025


Hello,

I am doing a non-collinear calculation on bulk Mn3Ge using quantum espresso 7.4.1.
The input file is:


&CONTROL

  calculation='scf',

  outdir='.',

  prefix='basic',

  pseudo_dir='.',

  verbosity='low',

  tprnfor=.true.,

  tstress=.true.,

/

&SYSTEM

  ibrav = 0

  A =    5.17779

  nat = 8

  ntyp = 7

  noncolin=.true.,

  starting_magnetization(1)= 1.0,  ! Initial guess for Mn1

  starting_magnetization(2)= 1.0,  ! Initial guess for Mn2

  starting_magnetization(3)= 1.0,  ! Initial guess for Mn3

  starting_magnetization(4)= 1.0,  ! Initial guess for Mn4

  starting_magnetization(5)= 1.0,  ! Initial guess for Mn5

  starting_magnetization(6)= 1.0,  ! Initial guess for Mn6

  starting_magnetization(7)= 0.0,  ! Ge is non-magnetic

  angle1(1)=90, angle2(1)=90

  angle1(2)=90, angle2(2)=330

  angle1(3)=90, angle2(3)=210

  angle1(4)=90, angle2(4)=90

  angle1(5)=90, angle2(5)=330

  angle1(6)=90, angle2(6)=210

  ecutwfc = 60,

  ecutrho = 480,

  input_dft='pbe',

  occupations='tetrahedra_opt'

!  occupations='smearing',

!  smearing='mv',

!  degauss=0.020d0,

/



&ELECTRONS

electron_maxstep=100,

conv_thr=1d-08,

mixing_beta=0.40d0,

/



CELL_PARAMETERS {alat}

  1.000000000000000   0.000000000000000   0.000000000000000

 -0.500000000000000   0.866025403784439   0.000000000000000

  0.000000000000000   0.000000000000000   0.806990878462180

ATOMIC_SPECIES

  Mn1   54.93800  Mn.pbe-spn-kjpaw_psl.0.3.1.UPF

  Mn2   54.93800  Mn.pbe-spn-kjpaw_psl.0.3.1.UPF

  Mn3   54.93800  Mn.pbe-spn-kjpaw_psl.0.3.1.UPF

  Mn4   54.93800  Mn.pbe-spn-kjpaw_psl.0.3.1.UPF

  Mn5   54.93800  Mn.pbe-spn-kjpaw_psl.0.3.1.UPF

  Mn6   54.93800  Mn.pbe-spn-kjpaw_psl.0.3.1.UPF

  Ge   72.63000  Ge.pbe-dn-kjpaw_psl.0.2.2.UPF

ATOMIC_POSITIONS {crystal}

Ge   0.666666666666667   0.333333333333333   0.750000000000000

Ge   0.333333333333333   0.666666666666667   0.250000000000000

Mn4   0.161334000000000   0.322668000000000   0.750000000000000

Mn5   0.677332000000000   0.838666000000000   0.750000000000000

Mn6   0.161334000000000   0.838666000000000   0.750000000000000

Mn1   0.838666000000000   0.677332000000000   0.250000000000000

Mn2   0.322668000000000   0.161334000000000   0.250000000000000

Mn3   0.838666000000000   0.161334000000000   0.250000000000000



K_POINTS {automatic}

10 10 10 0 0 0


Let nmpi be the number of MPI processes.
If I use nmpi> 8 the system gets trapped in some unphysical high energy state and doesn’t converge.
If I use nmpi<= 8 the calculation converges, and everything agrees with the literature.
I would like to ask if what I am facing is a known issue, a bug, or caused by an error in my input file?
I am including the job submission file for completeness.


#SBATCH --job-name=QE_bulk_hybrid_srun     # Job name

#SBATCH --time=10:00:00                    # Request runtime (hh:mm:ss)

##SBATCH --mem=128G                         # Request memory

#SBATCH --nodes=1                          # Number of nodes

#SBATCH --ntasks=8                  # Number of MPI tasks

#SBATCH --cpus-per-task=6                  # Number of CPU cores per MPI task (OpenMP threads)

#SBATCH --mem-per-cpu=2G

#SBATCH --output=job_%j_output.log         # Save stdout to job-specific log file

#SBATCH --error=job_%j_error.log           # Save stderr to job-specific log file



echo "Job started at $(date)"

START_TIME=$SECONDS



# Load Spack environment

source /users/nhxw353/spack/share/spack/setup-env.sh

spack env activate qe_cpu



# Load specific OpenMPI and QE from qe_env

source /users/nhxw353/spack/share/spack/setup-env.sh

spack env activate qe_env1



# Optional: Show which binaries are being used

echo "Using pw.x from: $(which pw.x)"

echo "Using srun from: $(which srun)"



# Set OpenMP environment

export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK

export OMP_PLACES=cores

export OMP_PROC_BIND=close



# Run Quantum ESPRESSO using srun (SLURM-native launcher)

srun pw.x -in Mn3Ge_bulk_ncol.in > output.dat



# Time tracking

ELAPSED_TIME=$(( SECONDS - START_TIME ))

HOURS=$(( ELAPSED_TIME / 3600 ))

MINUTES=$(( (ELAPSED_TIME % 3600) / 60 ))

SECONDS=$(( ELAPSED_TIME % 60 ))



echo "Job finished at $(date)"

echo "Total runtime: $HOURS hours, $MINUTES minutes, $SECONDS seconds"

Many Thanks,

Marios Georgiou
School of Physics and Astronomy
University of Leeds
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.quantum-espresso.org/pipermail/users/attachments/20250605/d163c0fa/attachment.html>


More information about the users mailing list