SPEC Benchmark Specifications - 015.doduc Doduc is a non-vectorizable, scalar (60-6)4-bit floating-point FORTRAN benchmark. Doduc is a Monte Carlo simulation of the time evolution of a thermohydraulical modelization ("hydrocode") for a nuclear reactor's component. It does little I/O, and has very little vectorizable code, but rather has an abundance of short branches and loops. It uses floating-point numbers with (ap- proximately) 64-bit precision, and is a (large) kernel ex- tracted from the original program. Doduc has been run on a large variety of machines, and is a popular benchmark in some segments of the physics community. Nhuan Doduc Framentec Tour Fiat, Cedex 16 F 92084 Paris La Defense, France This benchmark is sponsored by MIPS Computer Systems. This code has not changed for some time, apparently. Doduc has documented results from hundreds of machines in "FORTRAN Execution Time Benchmark", V29 - 14/3/1989, which is the la- test issue of many, and whose source is found in NOTES.n. We've seen variations in iteration count of 1-2% across dif- ferent machines. Elapsed time in seconds. Elapsed time. On most systems, the sum of system+user time should be very close to the elapsed time, as this benchmark does little I/O. The SPEC reference time (to 3 sig. fig.) is 1860 seconds. Emits a short sequence of outputs that can be checked. Doduc executes code spread over many functions. Following are the top few functions, by percentage of instruction cy- cles. It requires about 40 functions to accumulate 99% of the total CPU cycles. Note that the top library functions (pow_p,exp, sqrt, pow) account for 14% of the cycles. The second part shows the top 10 statements in the program. cycles %cycles cum % cycles bytes procedure (file) /call /line 285694670 18.06 18.06 171 16 si_ (si.f) 119735588 7.57 25.62 21858 46 deseco_ (deseco.f) 119688755 7.56 33.19 1285 183 supp_ (supp.f) 101072294 6.39 39.57 222 46 pow_p (../pow.c) 85527548 5.41 44.98 1201 46 ddeflu_ (ddeflu.f) 83664330 5.29 50.27 1018 204 subb_ (subb.f) 58383911 3.69 53.96 126 40 coeray_ (coeray.f) 57834765 3.66 57.61 69 6 exp (../exp.s) 43965374 2.78 60.39 618 27 drepvi_ (drepvi.f) 43398771 2.74 63.13 305 42 colbur_ (colbur.f) 42049348 2.66 65.79 226 47 dcoera_ (dcoera.f) 37774466 2.39 68.18 6896 33 pastem_ (pastem.f) 36292428 2.29 70.47 6624 40 debflu_ (debflu.f) 31429846 1.99 72.46 62 5 sqrt (../sqrt.s) 30573842 1.93 74.39 67 45 pow (../pow.c) procedure (file) line bytes cycles % cum % si_ (si.f) 17 24 122131524 7.72 7.72 si_ (si.f) 18 12 56036652 3.54 11.26 supp_ (supp.f) 89 1308 30457761 1.92 13.18 supp_ (supp.f) 87 1124 26173183 1.65 14.84 si_ (si.f) 11 60 23469180 1.48 16.32 x21y21_ (x21y21.f) 13 124 20938827 1.32 17.65 si_ (si.f) 16 4 20355254 1.29 18.93 si_ (si.f) 7 40 16763700 1.06 19.99 exp__E (../exp__E.c) 116 148 16292580 1.03 21.02 Following are some figures on the internal behavior. 1582325004 (1.000) instructions 440797712 (0.279) loads 140274790 (0.089) stores 581072502 (0.367) loads+stores 36841 (0.000) partial word references 0.241 stores per memory reference 10.9 instructions per basic block 188 cycles per call 124 instructions per call FORTRAN Almost anything that can run FORTRAN programs. This has been run on many different UNIX and non-UNIX operat- ing systems, including OS/MVS, VM/CMS, VAX/VMS, MS/DOS, etc. Less than 2% vectorizable; probably difficult to parallelize. On a MIPS M/2000 RISComputer, an binary compiled -O3 uses about 240K bytes of executable code, and the complete execut- able is about 370K bytes. Source code and documentation use about 312K bytes. After making and linking the executable, the directory has about 1MB of space used. time ./doducd