Diag.ParallelOverK can fail with many processors if the system is small
Diag.ParallelOverK
fails if the number of processors is bigger than the number of orbitals. It seems like even with this option there is some distribution over orbitals, which returns an error if some processes are assigned 0 orbitals.
Is this intended/needed or is it a bug?
Steps to reproduce:
- Create a system with one hydrogen and a SZ basis and ask for parallelization over k:
LatticeConstant 1.0 Ang
%block LatticeVectors
1.00000000 0.00000000 0.00000000
0.00000000 1.00000000 0.00000000
0.00000000 0.00000000 1.00000000
%endblock LatticeVectors
NumberOfAtoms 1
AtomicCoordinatesFormat Ang
%block AtomicCoordinatesAndAtomicSpecies
0.00000000 0.00000000 0.00000000 1 # 1: H
%endblock AtomicCoordinatesAndAtomicSpecies
NumberOfSpecies 1
%block ChemicalSpeciesLabel
1 1 H
%endblock ChemicalSpeciesLabel
PAO.BasisSize SZ
%block kgrid.MonkhorstPack
2 0 0 0.0
0 2 0 0.0
0 0 2 0.0
%endblock kgrid.MonkhorstPack
Diag.ParallelOverK t
- Then run it on 2 processes. You get something like:
* Orbital distribution balance (max,min): 1 0
Some processors are idle. Check PARALLEL_DIST
You have too many processors for the system size !!!
Stopping Program from Node: 0