Open main menu

CDOT Wiki β

Changes

Dhrystone howto

9,016 bytes added, 16:25, 30 December 2010
no edit summary
<font style="font-size:90%">This Page serves as a guide for running Dhrystone benchmark on arm machines :: Please visit the [http://zenit.senecac.on.ca/wiki/index.php/Supporting_Architectures_above_armv5tel Main Project Page] </font>= About Dhrystone ==
<font style="font-size:90%">From Wikipedia, the free encyclopedia</font>
Both Whetstone and Dhrystone are synthetic benchmarks, meaning that they are simple programs that are carefully designed to statistically mimic the processor usage of some common set of programs. Whetstone, developed in 1972, originally strove to mimic typical Algol 60 programs based on measurements from 1970, but eventually became most popular in its Fortran version, reflecting the highly numerical orientation of computing in the 1960s.
== Dhrystone Fundamentals ==
<font style="font-size:90%">From ARM White Paper</font><br />
== Project Description ==Dhrystone has a number of attributes that have led to it being widely used in the past as ameasure of CPU performance.Foremost, Dhrystone is compact, widely available in the public domain, and simple torun. Significantly, there are no lengthy certification processes to go through before citingDhrystone figures.Dhrystone compares the performance of the processor under benchmark to that of areference machine. This is an advantage over quoting ‘straight’ MIPS numbers sinceusing a reference machine effectively compensates for differences in the richness ofcompeting instruction sets. For example, literal comparison of the ‘millions ofinstructions per second’ numbers for a RISC architecture and a CISC architecture is notmeaningful.
Description should be no longer than a paragraphThe industry has adopted the VAX 11/780 as the reference 1 MIP machine. The VAX11/780 achieves 1757 Dhrystones per second. Include links to any relevant on-line resourcesThe Dhrystone figure is calculated bymeasuring the number of Dhrystones per second for the system, and dividing that by1757. For exampleSo "80 MIPS" means "80 Dhrystone VAX MIPS", http:/which means 80 times fasterthan a VAX 11/google780.com or [http:A DMIPS//developerMHz rating takes this normalization process one stepfurther, enabling comparison of processor performance at different clock rates.mozillaFor all of these reasons, in the past, Dhrystone has been a widely quoted benchmarkfigure.org MDC]In theory, Dhrystone should provide a basis for the comparison of processorperformances.
== Project Leader(s) ==However, some of the apparent advantages of Dhrystone are also significant weaknessesof the benchmark. Dhrystone numbers actually reflect the performance of the C compilerand libraries, probably more so than the performance of the processor itself. Also, lack ofindependent certification means that customers are dependent on processor vendors toquote accurate and meaningful Dhrystone data.
Name== What Dhrystone really does ==<font style="font-size:90%">From Clarify.doc (sIncluded in Dhrystone 2.1) of primary people working on the project. If you want to join a project as leader, discuss with other leaders first. Include links to personal pages within wikiRick Richardson</font><br />
== Project Contributor(s) == <ul> <li> DHRYSTONE is a measure of processor+compiler efficiency in executing a 'typical' program. The 'typical' program was designed by measuring statistics on a great number of 'real' programs. The 'typical' program was then written by Reinhold P. Weicker using these statistics. The program is balanced according to statement type, as well as data type.</li>
Name(s) of people casually working on the project, or who have contributed significant help <li>DHRYSTONE does not use floating point. Include links to personal pages within wikiTypical programs don't.</li>
NOTE: only Project Leader(s) should add names here <li>DHRYSTONE does not do I/O. You Typical programs do, but then we'''can’t''' add your own name to the Contributor listd have a whole can of worms opened up.</li>
== Project Details == <li>DHRYSTONE does not contain much code that can be optimized by vector processors. That is why a CRAY doesn't look real fast, they weren't built to do this sort of computing.</li>
Provides more depth than <li>DHRYSTONE does not measure OS performance, as it avoids calling the Project DescriptionO.S. This The O.S. is indicated in the place for technical discussions, project specs, or other details. If this gets very long, you might consider breaking this part into multiple pages and linking results only to themhelp in identifying the compiler technology.</li>
== Project Plan == <li>DHRYSTONE is not perfect, but is a hell of a lot better than the "sieve", or "SI".</li>
Goals for each release: <li>DHRYSTONE gives results in dhrystones/second. Bigger* 0 numbers are better.1 As a baseline, the original IBM PC* 0 gives around 300-400 dhrystones/second with a good compiler.2* 0 The fastest machines today are approaching 100,000.3</li> </ul>
<font style== Project News =="font-size:110%"><b>Dhrystone Characteristics</b></font><blockquote><b>Strengths</b><ul><li>Written in C language Code (Allows code portability)</li><li>Small in size (An easy to understand program)</li><li>Single easy to report score (DMIPS which uses a reference VAX MIPS)</li><li>Potentially useful for 8 and 16-bit microcontroller benchmark</li></ul><b>Weaknesses</b><ul><li>Cannot hope to mimic thebreadth of applications encountered by aprocessor-based system</li><li>Dhrystone only measures a fewmathematical and basic operations</li><li>Does not measure multiply-accumulate, floating-point, SIMD, or anyother type of operations</li><li> Dhrystone’s execution islargely spent in standard C library functions,such as strcmp(),strcpy(), andmemcpy(). Compiler vendors generallyprovide these libraries that are typicallyoptimized and hand-written in assemblylanguage. While you may think you arebenchmarking a processor, you are reallybenchmarking are the compiler writer’soptimizations of the C library functions for aparticular platform</li></ul></blockquote>
This is where your regular updates will go= Installation =<font style="font-size:110%"><b>1. In these you should discuss Obtaining the status or your work, your interactions with other members of the community (e.g., Seneca and Mozilla), problems you have encountered, etc.Source Code</b></font>
Put detailed technical information into One of the Project Details page most important defects in Dhrystone is that it is often unclear what versionis being quoted. Furthermore, since there are no "disclosure rules" or independentcertification of scores, companies and individuals are free to state, or not state, anything. Due to its non proprietary nature, individuals and companies modified their own versions of Dhrystone resulting in various alterations of the original source code.  The following package is the most quoted, well used Dhrystone release. It is the cleanest/customisable Dhrystone out in the internet.  [http://www.sfr-fresh.com/unix/privat/old/dhrystone-2.1.tar.gz/ Dhrystone-2.1.tar.gz] <font style="font-size:110%"><b>2. Extract the file</b></font> Extract the tarball using the command: <pre>tar xvf dhrystone-2.1.tar.gz -C destination_directory/</pre>There will be a total of 19 files once extracted. Move to the directory where the extracted files are. <font style="font-size:110%"><b>3. Edit the Makefile</b></font> Open Makefile with any text editor; '''UNCOMMENT''' (if commented) then '''EDIT''' the following fields using the '''GIVEN''' values:<blockquote>Line #25 Fedora uses -DTIME for TIME function, this field is commented out by default<pre>TIME_FUNC= -DTIME # Use times(2) for measurement</pre>Line #28Check motherboard specifications to determine the memory clock speed ( beagleboardXM runs at 166MHz DDR speed )<pre>HZ= 166 # Frequency of times(2) clock ticks</pre>Line #39This option is for C compiler<pre>OPTIMIZE= -O2 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fomit-frame-pointer # Optimization Level (igeneric UNIX)</pre>Line #40This option is for GCC compiler<pre>GCCOPTIM= -O2 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fomit-frame-pointer</pre></blockquote> Comment out/disable the following lines:<blockquote>Line #26 <pre>TIME_FUNC= -DTIMES # Use times(2) for measurement</pre>Line #38<pre>OPTIMIZE= -Ox -G2 # Optimization Level (MSC, 80286)</pre></blockquote> <font style="font-size:110%"><b>Makefile snapshot</b></font>[[Image:Dhry21.png|center]]  <font style="font-size:110%"><b>Compiler Optimization Options</b></font> <font style="font-size:90%">Please see more about [http://gcc.egnu.org/onlinedocs/gcc/ARM-Options.html GCC ARM-Options]</font> The options used for lines #39~40 are for optimizing the dhrystone install to run specifically with '''armv7''' architecture. Optimizations provide a performance boost for the program. Removing the optimizations would result in a ''nominal'' program performance. <font style="font-size:110%"><b>4. Run "make"</b></font> Running make in the current directory should only produce warnings!! Here is an output of the make command with warnings relating to c library functions that can be ignored. <blockquote><pre>[mjeamiguel@cdot-beagleXM-0-3 dhrystone]$ makegcc -O2 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fomit-frame-pointer -DTIME -DHZ=166 dhry_1.c dhry_2.c -o gcc_dry2dhry_1.c:31: warning: conflicting types for built-in function ‘malloc’dhry_1.c: In function ‘main’:dhry_1.c:98: warning: incompatible implicit declaration of built-in function ‘strcpy’gcc -O2 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fomit-frame-pointer -DTIME -DHZ=166 -DREG=register dhry_1.c dhry_2.c -o gcc_dry2regdhry_1.c:31: warning: conflicting types for built-in function ‘malloc’dhry_1.c: In function ‘main’:dhry_1.c:98: warning: incompatible implicit declaration of built-in function ‘strcpy’</pre></blockquote> = Running the benchmark and gathering results = The make command outputs 2 files named '''gcc_dry2''' and '''gcc_dry2reg'''. The author of this version decided to create 2 dhrystone executables . One with register variables, update and one without. Either one will work for the benchmark so, feel free to test it as out.  <font style="font-size:110%><b>1. Run the executable by typing ''./gcc_dry2''</b></font> The program will start to ask you gofor a ''number of runs''. By convention on newer machines (>=1GHz), and save this section the number of runs used is about '''~100000000''' (100 million). There are no rules or standards about how many runs it should be. Some people calculate the number of runs through "Dhrystone run time erros" (way too advanced); what matters is the consistency of the result. For consistent results, dhrystone is executed more than 5 times with same values for number of runs.  <font style="font-size:110%><b>2. Calculate for DMIPS</b></font> One common representation of the Dhrystone benchmark is DMIPS. DMIPS (Dhrystone MIPS ). It is obtained when the Dhrystone score is divided by '''1757''' (the number of Dhrystones per second obtained on the VAX 11/780, nominally a 1 MIPS machine). Given the result: <blockquote><code>Microseconds for one run through Dhrystone: 0.8<br />Dhrystones per Second: 1333333.4</code></blockquote>  Using the formula: '''1333333.4 / 1757 = 758.87''' ''DMIPS''  The result shown was an actual test for news about participation in a beagleboardXM machine with 1GHz of processor speed. = And... = <font style="font-size:90%">From ARM White paper</font><br /> "When first released, the projectDhrystone benchmark fulfilled a useful function – at least it gave an alternative indicator to vendors’ literal MIPS ratings. However, more than twenty years later, there are undoubtedly better benchmarks available for measuring processor performance."
2
edits