Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!cs.utexas.edu!usc!zaphod.mps.ohio-state.edu!mips!hal!mark From: mark@mips.COM (Mark G. Johnson) Newsgroups: comp.arch Subject: Re: New benchmark (was: Integer Multiply/Divide) Message-ID: <34233@mips.mips.COM> Date: 8 Jan 90 17:24:39 GMT References: <2131@sunset.MATH.UCLA.EDU> Sender: news@mips.COM Reply-To: mark@mips.COM (Mark G. Johnson) Lines: 44 Email failed me; therefore ... Here are the results of running Peter Montgomery's "program bchmark" for Integer Multiply and Divide, on a MIPS RC3240. This is a deskside machine in a PC-sized cabinet (23" x 7" x 18"); essentially it's an upgrade of the earlier M/120 machine. I didn't change the source code; just took it as-is and applied the naive command line "f77 -O montgomery.f". Running the executable file a.out gave: MIPS RC3240 compiled with f77 -O Gener Dble Sngl Cmplx Intgr Modlr TrlDiv PrbPrm GCD BinDec Cfrac Geo mean 0.08 0.26 0.23 0.34 0.39 0.46 2.84 0.10 0.63 0.60 0.46 0.36 sec {This falls between the single-processor Alliant with vectorization and optimization, and the 6-processor Alliant with V&O, in Geo mean performance.} For those who desire to bicker about the benchmark's representative-ness of "real code", or potential lack thereof, here is a teeny bit of profiling data. A single line of source, marked below with >>>>, is responsible for over 1/4 of all cycles consumed by the program (dynamically, on RC3240): do 100 j = 5, NINT(SQRT(REAL(n))), 6 [575] >>>> if (MOD(n,j).eq.0 .or. MOD(n,j+2).eq.0) then [576] PRIME = .FALSE. [577] return [578] end if [579] 100 continue [580] Here's the profiler output {for an RC3240, compiled with f77 -O): procedure (file) line bytes cycles % ----------------------------------------------------------------------- prime_ (montgomery.f) 576 108 15677188 25.67 ... etc ... Apologies in advance if I did the measurement incorrectly., -- -- Mark Johnson MIPS Computer Systems, 930 E. Arques, Sunnyvale, CA 94086 (408) 991-0208 mark@mips.com {or ...!decwrl!mips!mark}