next up previous
Next: COMPILING AND LINKING
Up: TUNING
Previous: Tuning Parameters Available

Tuning in Practice   

Normally, a single application which wished to tune HDS itself (rather than accepting the default settings, or those specified by environment variables) would do so via calls to HDS_TUNE at the start, and would thus establish a default "tuning profile" to apply throughout the rest of the program. Similarly, a software environment can initially tune HDS to obtain the required default behaviour for the applications it will later invoke.

Sometimes, however, it may be necessary to modify a tuning parameter to improve performance locally while not affecting behaviour of other parts of a program (or other applications in a software environment). The routine HDS_GTUNE may therefore be used to determine the current setting of an HDS tuning parameter, so that it may later be returned to its original value. For instance, if the `MAP' parameter were to be set locally to allow sparse access to a large array of data, the following technique might be used:

      ...
      INTEGER OLDMAP

*  Obtain the original setting of the MAP parameter.
      CALL HDS_GTUNE( 'MAP', OLDMAP, STATUS )
      IF ( STATUS .EQ. SAI__OK ) THEN

*  Set a new value.
         CALL HDS_TUNE( 'MAP', -2, STATUS )

         <map the array>

*  Return to the old tuning setting.
         CALL ERR_BEGIN( STATUS )
         CALL HDS_TUNE( 'MAP', OLDMAP, STATUS )
         CALL ERR_END( STATUS )
      END IF

Notice how great care has been taken over handling error conditions. In a large software system it could prove disastrous if a tuning parameter remained set to an incorrect value (perhaps causing gross inefficiencies elsewhere) simply because HDS_TUNE did not execute after an unexpected error had caused STATUS to be set to an error value.



next up previous
Next: COMPILING AND LINKING
Up: TUNING
Previous: Tuning Parameters Available

HDS Hierarchical Data System
Starlink User Note 92
R.F. Warren-Smith & M.D. Lawden
23rd February 1999
E-mail:rfws@star.rl.ac.uk

Copyright (C) 1999 Central Laboratory of the Research Councils