next up previous
Next: Heterogeneous Computing Environments Up: Case Studies on The Previous: Testing ScaLAPACK

The NAG Numerical PVM Library

The NAG Library does not readily port to distributed memory machines, and many of the routines in the Library are either not designed for parallel machines, or are performing functions that are not appropriate in a parallel setting. Even if the Library were suitable, the software support is such that we could not currently contemplate such a port. We hope that in the future HPF [&make_named_href('', "node12.html#KLSSZ:94","[]")] may prove to be a suitable vehicle, but the language and the compilers are not yet sufficiently mature for us to seriously contemplate the use of HPF.

Following the ScaLAPACK lead NAG therefore took the somewhat reluctant step of developing a parallel message passing library, based initially upon PVM [&make_named_href('', "node12.html#GBDJMS:94","[]")]. This library has been carefully designed with the future very much in mind, both short term and longer term. In the short term NAG are, at the time of writing, about to distribute an MPI [&make_named_href('', "node12.html#SOHWD:96","[]")] version of the library, since MPI is set to become widely available as the (de facto) standard message passing system. In the longer term the hope is that this library, together with the Fortran 90 Library, can feed into an HPF library activity. Thus, as with ScaLAPACK, NAG has adopted an SPMD model of parallelism for the library, in which (possibly) many instances of a single program are executed concurrently on different data sets; NAG has tried to limit the use of PVM as much as possible, using the BLACS wherever it is sensible to do so; and, in common with ScaLAPACK, assumes a two-dimensional logical grid.

The use of the SPMD model is not always straightforward, for example in the quadrature algorithms a farming model is more natural, but it was nevertheless felt sensible to adhere to the SPMD model since that is the current HPF model of programming, and it does not really place any undue restriction on the user. The user may spawn off other tasks so long as the group of library tasks behave according to the SPMD model. NAG are also providing utility routines to further insulate the user and themselves from the underlying message passing system. Before calling the library the user calls an initialization routine, and calls an exit routine at the end, along the lines of the following example.

 
    		 *     		 .. 		 call the NAG initialization routine ..

call nagspawn( ... )

:

call d02hafp( ... )

:

call f07adf( ... )

:

* .. call the NAG clean-up routine ..

call nagexit( ... )

Initializing PVM and/or the BLACS (or any other future communication system that is adopted) is done within nagspawn. From the user's perspective the error handling mechanism and interface is the same as for the Fortran 77 Library, with some additional error checks such as ensuring that a global variable has the same value on all processors.

Naturally NAG have adapted their stringent test programs, in a similar manner to ScaLAPACK, to the distributed memory environment in order to maintain their reputation for numerical quality and reliability.


next up previous
Next: Heterogeneous Computing Environments Up: Case Studies on The Previous: Testing ScaLAPACK

Jack Dongarra
Tue Sep 3 09:41:41 EDT 1996