It outlines some Fortran90 code design issues taken by the European Meteorological and Climate centres in the development of shared F90 code. Of particular interest are some of the comments about the use of newer Fortran90 features. For instance array notation should be used whenever possible yet show the array's shape in parentheses, e.g.:

The document is full of wonderfully helpful hints on code readability and recording developments/modifications, etc. It should perhaps be considered compulsory reading for anybody developing Fortran90 code or staring to take advantage of F90 features in old F77 codes.

The classical tool for accounting on Cray computer is "ja" (Job Accounting). It works by switch, start accounting and stop it. This produces a summary for all Unix commands launched between the 2 switches.

Example :
ja
./a.out
ja -clfStMC
Output :
-A) The following lines indicates the maximal memory used during
execution accumulated over all the PEs.
Maximum memory used : 41.3711 MWords
-B) The following lines indicates the maximal memory used during
execution the PEs which have used the most of memory
# MPP Usage PE's=3D 4, BESU's=3D 1, PE Memory High Water=3D 10.34 Mw
Remarks : A difference between A/N$PES and B gives clues for a poorly
load-balanced program.

4 - IHPSTAT(X) dynamic tool to examine the heap usage. [Editor's Note: see Newsletter #97, /arsc/support/news/t3dnews/t3dnews97/index.xml, for more on IHPSTAT.]

This is an intrinsic integer FORTRAN function on CRAY PVP and MPP systems. The most useful values for X are:

IHPSTAT(1) : heap length.
IHPSTAT(12) : Memory available to expand the heap via allocate,
malloc or new
IHPSTAT(11) : Memory that the Operating System can recover (if you call
HPSHRINK() after free in C/C++ or deallocate in f90).
Other various values for X (see the man page) :
4 : Number of allocated blocks.
10: Size of the largest free block.
13: Heap beginning address (bytes on T3E, words on PVP).
14: Heap ending address (bytes on T3E, words on PVP).
See also : call HPDUMP(), call HPSHRINK().

Remarks : when your program aborts with an operand range error, IHPSTAT(12) can be very useful in locating the bug. For example a PVM collective operation must be called by each PE and if the code fails to do this, the buffers are not deallocated and, in a do-loop with a big iteration count, this can lead to an ORE.

The University of Alaska Fairbanks is an affirmative action/equal
opportunity employer and educational institution and is a part of the University
of Alaska system.
Arctic Region Supercomputing Center (ARSC) |PO Box 756020, Fairbanks, AK 99775 | voice: 907-450-8602 | fax: 907-450-8601 | Supporting high performance computational research in science and engineering with emphasis on high latitudes and the arctic.
For questions or comments regarding this website, contact info@arsc.edu