The timing program is in timermd.f90. Once the executable is made, issue the
command
                   ./timermd

to obtain help on its parameters and examples on how to run it. The subdirectory
'reports' contains results of timing with several combinations of matrix sizes,
number of threads, compiler, platform, and BLAS. That directory contains its
own readme-file, explaining briefly how such a report could be made.

The run-times are determined by calling BLAS- and corresponding RMD-routines
several times, to get accurate results. Each timermd run carries out two types
of timing:

   repeated: An operation is applied repeatedly on the same matrix
   spread:   An operation is applied on several matrices spread over memory

The type of timing is shown in the header line in the output from timermd. The
second type is probably more likely to apply in practice, and therefore the
accompanying article provides only spread results, but corresponding repeated
results are in the file reports/report0.txt.

Double precision versions of these operations are timed:

   gemv (2), gbmv (2), trmv (2), gemm (3), syrk (3), and trsm (3)

(BLAS-levels in brackets), the last one involving a level-drop for the RMD-
routine. A simple change to the "do irout" statement in timermd.f90 adds timing
of the operations trmv (2) and gbmv (2), which also involve a level-drop.