aptest README

The two programs in this directory are intended to exercise a cpu's
ability to perform the kind of vector/matrix floating point
computations that dominate connectionist modeling work.  One program,
atest, uses standard arrays; the other, ptest, uses pointers to units
and because of the pointer chasing it is expected to be much slower.
Several different array sizes are used:

Large = 1 Million weights  (1000*1000 units)
Med =      10,000 weights  (100*100 units)
small =       100 weights  (10*10 units)

The aptest.CPU files are 'csh' scripts for compiling and running the
benchmark for the given CPU type.

In order to run this benchmark on a new machine, start with a script
for a related machine:

	HP800 = HP 735, both native C++, cfront (+T), g++.

	IBMaix = IBM AIX v.4.1.4, xlC, g++.

	LINUX = linux, g++.

	SGI = SGI Irix 5.3, OCC, NCC, g++.

	SUN4 = Sun 4, sunos 4.1.3, g++.

Then, set the compiler variable 'CC' to whatever you think will be the
optimal C compiler and optimization flags.  If applicable, the
floating point should specify single precision computations (ie
singles are not promoted to double for the operation), and the
optimization flag should be set at the highest level that makes any
real difference.  Please try several different flags, if possible, so
that we can be relatively sure the results are as good as they get.

To run the benchmark, simply type

./aptest.CPU

to your system prompt.  This recompiles the programs with arrays of
each of the different sizes and runs 100 Million floating point
instructions on each program at each size.  On the SGI 4D-480 this
will take about 3 min of cpu time on one processor (the large ptest
version is very slow).

Results from one processor on the sparc_2 and SGI 4D_480 are shown
below, followed by results from one processor on the SGI R4400/150
based processors now in use in our laboratory.  The time reported is
elapsed time based on reading the clock after initialization and then
again after the main computations and is rounded to the nearest
second.  The results of the csh builtin time command reflect the total
time and are useful to make sure that the benchmark is in fact getting
all of the machine's attention.

SPARC_2:

Large Network atest:
25 cycles, 1000000 weights, 100.000000 mflops in 29 secs.
3.448276 Megaflops
29.2u 1.3s 0:31 98% 0+7808k 0+0io 0pf+0w
Large Network ptest:
25 cycles, 1000000 weights, 100.000000 mflops in 51 secs.
1.960784 Megaflops
55.7u 2.3s 1:02 93% 0+10760k 1+0io 32pf+0w
Medium Network atest:
2500 cycles, 10000 weights, 100.000000 mflops in 26 secs.
3.846154 Megaflops
24.9u 0.1s 0:25 99% 0+208k 0+0io 0pf+0w
Medium Network ptest:
2500 cycles, 10000 weights, 100.000000 mflops in 35 secs.
2.857143 Megaflops
33.2u 0.4s 0:35 94% 0+252k 0+0io 0pf+0w
Small Network atest:
250000 cycles, 100 weights, 100.000000 mflops in 28 secs.
3.571429 Megaflops
24.0u 3.8s 0:28 99% 0+136k 0+0io 0pf+0w
Small Network ptest:
250000 cycles, 100 weights, 100.000000 mflops in 23 secs.
4.347826 Megaflops
23.0u 0.1s 0:23 99% 0+140k 0+0io 0pf+0w

SGI (old hydra)

Large Network atest:
25 cycles, 1000000 weights, 100.000000 mflops in 26 secs.
3.846154 Megaflops
26.3u 2.6s 0:31 92%
Large Network ptest:
25 cycles, 1000000 weights, 100.000000 mflops in 125 secs.
0.800000 Megaflops
123.0u 4.0s 2:08 99%
Medium Network atest:
2500 cycles, 10000 weights, 100.000000 mflops in 16 secs.
6.250000 Megaflops
15.0u 0.0s 0:15 99%
Medium Network ptest:
2500 cycles, 10000 weights, 100.000000 mflops in 27 secs.
3.703704 Megaflops
26.5u 0.3s 0:27 97%
Small Network atest:
250000 cycles, 100 weights, 100.000000 mflops in 15 secs.
6.666667 Megaflops
15.0u 0.2s 0:15 99%
Small Network ptest:
250000 cycles, 100 weights, 100.000000 mflops in 15 secs.
6.666667 Megaflops
14.5u 0.3s 0:15 99%

SGI R4400/150

Large Network atest:
25 cycles, 1000000 weights, 100.000000 mflops in 8 secs.
12.500000 Megaflops
7.7u 0.4s 0:08 95% 0+0k 0+0io 0pf+0w
Large Network ptest:
25 cycles, 1000000 weights, 100.000000 mflops in 32 secs.
3.125000 Megaflops
31.7u 0.7s 0:33 98% 0+0k 0+0io 0pf+0w
Medium Network atest:
2500 cycles, 10000 weights, 100.000000 mflops in 5 secs.
20.000000 Megaflops
4.9u 0.0s 0:05 98% 0+0k 0+0io 0pf+0w
Medium Network ptest:
2500 cycles, 10000 weights, 100.000000 mflops in 7 secs.
14.285714 Megaflops
7.2u 0.0s 0:07 98% 0+0k 0+0io 0pf+0w
Small Network atest:
250000 cycles, 100 weights, 100.000000 mflops in 5 secs.
20.000000 Megaflops
4.6u 0.3s 0:05 98% 0+0k 0+0io 0pf+0w
Small Network ptest:
250000 cycles, 100 weights, 100.000000 mflops in 6 secs.
16.666666 Megaflops
5.6u 0.0s 0:05 96% 0+0k 0+0io 0pf+0w














