NBLK: Difference between revisions

From VASP Wiki
(Created page with "{{TAGDEF|NBLK|[integer]}} {{DEF|NBLK|-1|VASP.4.6|256|in VASP.5.2, if dfast}} Description: {{TAG|NBLK}} determines the blocking factor in many BLAS level 3 routines. ---- In...")
 
No edit summary
 
(5 intermediate revisions by the same user not shown)
Line 13: Line 13:
             CBLOCK(M,N1)=C(M+IBLOCK,N1)
             CBLOCK(M,N1)=C(M+IBLOCK,N1)
             C(M+IBLOCK,N1)=0
             C(M+IBLOCK,N1)=0
  200     CONTINUE
  200   CONTINUE
  C        C(IBLOCK+I,N)=SUM_(J,K) CH(I,K) CBLOCK(K,N)
  C        C(IBLOCK+I,N)=SUM_(J,K) CH(I,K) CBLOCK(K,N)
           CALL ZGEMM ('N', 'N', ILEN, N, N, (1.,0.), CBLOCK, NBLK, CH, N,
           CALL ZGEMM ('N', 'N', ILEN, N, N, (1.,0.), CBLOCK, NBLK, CH, N,
               &  (1.,0.), C(IBLOCK+1,1), NDIM)
               &  (1.,0.), C(IBLOCK+1,1), NDIM)
  100 CONTINUE
  100 CONTINUE


ZGEMM is the matrix <math>\times</math> matrix  multiplication command of the BLAS package. The task performed by this call is indicated by the comment line written above the ZGEMM call. Generally {{TAG|NBLK}}=16 or 32 is large enough for super-scalar machines. A large value might be necessary on vector machines for optimal performance ({{TAG|NBLK}}=128).
ZGEMM is the matrix <math>\times</math> matrix  multiplication command of the BLAS package. The task performed by this call is indicated by the comment line written above the ZGEMM call. Generally {{TAG|NBLK}}=16 or 32 is large enough for super-scalar machines. A large value might be necessary on vector machines for optimal performance ({{TAG|NBLK}}=128).


{{sc|NBLK|Examples|Examples that use this tag}}
----
----
[[The_VASP_Manual|Contents]]


[[Category:INCAR]]
[[Category:INCAR tag]][[Category:Performance]]

Latest revision as of 14:47, 8 April 2022

NBLK = [integer] 

Default: NBLK = -1 VASP.4.6
= 256 in VASP.5.2, if dfast

Description: NBLK determines the blocking factor in many BLAS level 3 routines.


In some cases, VASP has to perform a unitary transformation of the current orbitals. This is done using a work array CBLOCK and the following FORTRAN code:

      DO 100 IBLOCK=0,NPL-1,NBLK
         ILEN=MIN(NBLK,NPL-IBLOCK)
         DO 200 N1=1,N
            DO 200 M=1,ILEN
            CBLOCK(M,N1)=C(M+IBLOCK,N1)
            C(M+IBLOCK,N1)=0
  200    CONTINUE
C        C(IBLOCK+I,N)=SUM_(J,K) CH(I,K) CBLOCK(K,N)
         CALL ZGEMM ('N', 'N', ILEN, N, N, (1.,0.), CBLOCK, NBLK, CH, N,
              &   (1.,0.), C(IBLOCK+1,1), NDIM)
  100 CONTINUE

ZGEMM is the matrix matrix multiplication command of the BLAS package. The task performed by this call is indicated by the comment line written above the ZGEMM call. Generally NBLK=16 or 32 is large enough for super-scalar machines. A large value might be necessary on vector machines for optimal performance (NBLK=128).

Examples that use this tag