next up previous contents index
Next: a-axis should be the Up: MPI parallelization Previous: Cluster calculation   Contents   Index

Band calculation

In the band calculation, a triple parallelization is made for three loops: spin multiplicity, k-points, and eigenstates, where the spin multiplicity means one, two, and one for spin-unpolarized, spin-polarized, and non-collinear calculations, respectively. The priority of parallelization is in order of spin multiplicity, k-points, and eigenstates. In addition, when the number of processors used in the parallelization exceeds (spin multiplicity)$\times $(the number of k-points), OpenMX uses an efficient way in which finding the Fermi level and calculating the density matrix are performed by just one diagonalization at each k-point. For the other cases, twice diagonalizations are performed at each k-point for saving the size of used memory in which the second diagonalization is performed to calculate the density matrix after finding the Fermi level. In Fig. 18 (c) we see a good speed-up ratio as a function of processors in the elapsed time for a spin-unpolarized calculation of carbon diamond consisting of 64 carbon atoms with 3$\times $3$\times $3 k-points. The input file DIA64_Band.dat is found in the directory 'work'. In this case the spin multiplicity is one, and the number of k-points used for the actual calculation is (3*3*3-1)/2+1=14 since the k-points in the half Brillouin zone is taken into account for the collinear calculation, and the $\Gamma $-point is included when all the numbers of k-points for a-, b-, and c-axes are odd. So it is found that the speed-up ratio exceeds the ideal one in the range of processors over 14, which means the algorithm in the parallelization is changed to the efficient scheme. As well as the cluster calculation, to avoid the calculation of eigenstates in the higher energy region, it is highly recommended to use 'dstevx' which is specified by the following keyword 'scf.lapack.dste':

    scf.lapack.dste    dstevx    # dstegr|dstedc|dstevx, default=dstevx
Since 'dstevx' is default, if you like 'dstevx', you do not need to specify the keyword. In case of 'dstevx', the eigenstates to be calculated is automatically evaluated by the number of electrons. In case of 'dstevx', the eigenstates to be calculated is automatically determined by the number of electrons. In the other schemes 'dstegr' and 'dstedc', eigenstates in the higher energy region are also calculated.


next up previous contents index
Next: a-axis should be the Up: MPI parallelization Previous: Cluster calculation   Contents   Index
2009-08-28