Keywords: slug

Next: Translating LAPACK-based programs to Up: Call Conversion: LAPACK to Previous: Call Conversion: LAPACK to

# Translating BLAS-based programs to the PBLAS

With a concrete understanding of array descriptors (Chapter 4), it is relatively simple to translate the serial version of a BLAS call into its parallel equivalent. Translating BLAS calls to PBLAS calls primarily consists of the following steps:

- a ``P'` has to be inserted in front of the routine name,
- the leading dimensions should be replaced by the global array descriptors, and
- the global indices into the distributed matrices should be inserted as separate parameters in the calling sequence.

An example of translating a DGEMM call to a PDGEMM call is given below.

          CALL DGEMM( 'No transpose', 'No transpose', M-J-JB+1, N-J-JB+1,
         $            JB, -ONE, A( J+JB, J ), LDA, A( J, J+JB ), LDA, ONE,
         $            A( J+JB, J+JB ), LDA )

          CALL PDGEMM( 'No transpose', 'No transpose', M-J-JB+JA, N-J-JB+JA,
         $             JB, -ONE, A, J+JB, J, DESCA, A, J, J+JB, DESCA, ONE,
         $             A, J+JB, J+JB, DESCA )

This simple translation process considerably simplifies the implementation phase of linear algebra codes built on top of the BLAS.

The steps necessary to write a program to call a PBLAS routine are analogous to the steps presented in section 2.4.