LAM/MPI logo

LAM/MPI General User's Mailing List Archives

  |   Home   |   Download   |   Documentation   |   FAQ   |   all just in this list

From: Rodney Mach (rwm_at_[hidden])
Date: 2005-04-18 13:17:59


>
> Hi!
> I would be glad if anyone can help me in determining the most efficient block size for SCALAPACK routines .
>
> Regards
> Srinivasa Patri

The max block size recommended by the User Guide is set to 64.

You can use a Fortran routine like attached to calculate a blocksize
dynamically. You could call it as

! ----- Calculate the blocking factor for the matrix.
       CALL blockset( nb, 64, n, nprow, npcol)

You should have already called blacs_gridinit and blacs_gridinfo already
to populate nprow, npcol. 64 is maximum size recommended, n is the size
of the matrix. )

Here is the subroutine:

!-----------------------------------------------------------------------
       SUBROUTINE blockset( nb, nbuser, n, nprow, npcol)

! Try to choose an optimal block size
! for the distributed matrix.
!
       IMPLICIT NONE
       INTEGER nb, n, nprow, npcol, nbuser

       nb = MIN ( n/nprow, n/npcol )
       IF(nbuser.GT.0) THEN
         nb = MIN ( nb, nbuser )
       ENDIF

       NB = MAX(nb,1)

       RETURN
       END SUBROUTINE blockset

!-----------------------------------------------------------------------