next up previous contents
Next: SYSTEM-tag Up: The INCAR File Previous: NBANDS-tag   Contents


NBLK-tag

This determines the blocking factor in many BLAS level 3 routines.

In some cases, VASP has to perform a unitary transformation of the current wave functions. 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 $\times$ 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).



Georg Kresse
2007-03-01