Merge pull request #284 from OrderN/f-proj_PadHamiltonianMatrix
Manual updates for Padding Hamiltonian
This commit is contained in:
commit
647471de1d
|
@ -157,6 +157,40 @@ where ``Diag.MPOrder`` specifies the order of the Methfessel-Paxton
|
|||
expansion. It is recommended to start with the lowest order and
|
||||
increase gradually, testing the effects.
|
||||
|
||||
Go to :ref:`top <groundstate>`.
|
||||
|
||||
.. _gs_pad:
|
||||
|
||||
Padding Hamiltonian matrix by setting block size
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
With the default setting, the size of Hamiltonian and overlap matrices
|
||||
is determined by the total number of support functions.
|
||||
It can be a prime number and timing of diagonalisation can be very slow
|
||||
in such cases, since the division of the matrix into small pieces is difficult.
|
||||
|
||||
By padding, we can change the size of Hamiltonian matrix to improve
|
||||
the efficiency of the diagonalisation. To set an appropriate value
|
||||
for the block size of the matrix, specify the following two variables.
|
||||
|
||||
::
|
||||
|
||||
Diag.BlockSizeR 20
|
||||
Diag.BlockSizeC 20
|
||||
|
||||
Note that these two numbers should be the same when padding
|
||||
(and when using ELPA which will be introduced to CONQUEST soon).
|
||||
We suggest that an appropriate value is between 20 and 200, but
|
||||
this should be tested.
|
||||
|
||||
The option for padding was introduced after v1.2, and if you would
|
||||
like to remove it, set the following variable.
|
||||
|
||||
::
|
||||
|
||||
Diag.PaddingHmatrix F
|
||||
|
||||
|
||||
Go to :ref:`top <groundstate>`.
|
||||
|
||||
.. _gs_on:
|
||||
|
|
|
@ -657,29 +657,27 @@ Diag.GammaCentred (*boolean*)
|
|||
|
||||
*default*: F
|
||||
|
||||
Diag.ProcRows (*integer*)
|
||||
Diag.PaddingHmatrix (*boolean*)
|
||||
After v1.2, we have introduced a method to have an optimum value of
|
||||
block size for Hamiltonian and overlap matrices (See below) by padding.
|
||||
By setting 'F', we do not use the method.
|
||||
|
||||
*default*:
|
||||
|
||||
Diag.ProcCols (*integer*)
|
||||
|
||||
*default*:
|
||||
*default*: T
|
||||
|
||||
Diag.BlockSizeR (*integer*)
|
||||
Block size for rows (See next).
|
||||
|
||||
*default*:
|
||||
*default*: Determined automatically
|
||||
|
||||
Diag.BlockSizeC (*integer*)
|
||||
R ... rows, C ... columns
|
||||
These are ScaLAPACK parameters, and can be set heuristically by the code. Blocks
|
||||
are sub-divisions of matrices, used to divide up the matrices between processors.
|
||||
These are ScaLAPACK parameters, and can be set heuristically by the code.
|
||||
Blocks are sub-divisions of matrices, used to divide up the matrices between processors.
|
||||
The block sizes need to be factors of the square matrix size
|
||||
(i.e. :math:`\sum_{\mathrm{atoms}}\mathrm{NSF(atom)}`). A value of 64 is considered
|
||||
optimal by the ScaLAPACK user’s guide. The rows and columns need to multiply
|
||||
together to be less than or equal to the number of processors. If ProcRows
|
||||
:math:`\times` ProcCols :math:`<` number of processors, some processors will be left idle.
|
||||
optimal by the ScaLAPACK user’s guide.
|
||||
|
||||
*default*:
|
||||
*default*: Determined automatically
|
||||
|
||||
Diag.MPShift[X/Y/Z] (*real*)
|
||||
Specifies the shift *s* of k-points along the x(y,z) axis, in fractional
|
||||
|
@ -742,7 +740,10 @@ Diag.ProcRows (*integer*)
|
|||
|
||||
Diag.ProcCols (*integer*)
|
||||
Number of columns in the processor grid for SCALAPACK within each k-point
|
||||
processor group
|
||||
processor group. The rows and columns need to multiply
|
||||
together to be less than or equal to the number of processors. If ProcRows
|
||||
:math:`\times` ProcCols :math:`<` number of processors, some processors will be left idle.
|
||||
|
||||
|
||||
*default*: Determined automatically
|
||||
|
||||
|
|
Loading…
Reference in New Issue