Open main menu

CDOT Wiki β

Changes

Dhrystone howto

5,949 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.
 <font style="font-size:110%"><b>= Dhrystone Fundamentals</b></font>----==
<font style="font-size:90%">From ARM White Paper</font><br />
quote accurate and meaningful Dhrystone data.
== What Dhrystone really does ==
<font style="font-size:90%">From Clarify.doc (Included in Dhrystone 2.1), Rick Richardson</font><br />
 
<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>
 
<li>DHRYSTONE does not use floating point. Typical programs don't.</li>
 
<li>DHRYSTONE does not do I/O. Typical programs do, but then
we'd have a whole can of worms opened up.</li>
 
<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>
 
<li>DHRYSTONE does not measure OS performance, as it avoids
calling the O.S. The O.S. is indicated in the results only
to help in identifying the compiler technology.</li>
 
<li>DHRYSTONE is not perfect, but is a hell of a lot better than
the "sieve", or "SI".</li>
<li>DHRYSTONE gives results in dhrystones/second. Bigger
numbers are better. As a baseline, the original IBM PC
gives around 300-400 dhrystones/second with a good compiler.
The fastest machines today are approaching 100,000.</li>
</ul>
<font style="font-size:110%"><b>Dhrystone Characteristics</b></font>
particular platform</li>
</ul>
</blockquote>
 
= Installation =
<font style="font-size:110%"><b>1. Obtaining the Source Code</b></font>
 
One of the most important defects in Dhrystone is that it is often unclear what version
is being quoted. Furthermore, since there are no "disclosure rules" or independent
certification 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 #28
Check 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 #39
This option is for C compiler
<pre>OPTIMIZE= -O2 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fomit-frame-pointer # Optimization Level (generic UNIX)</pre>
Line #40
This 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.gnu.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]$ make
gcc -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_dry2
dhry_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_dry2reg
dhry_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, and one without. Either one will work for the benchmark so, feel free to test it out.
 
<font style== Project Description =="font-size:110%><b>1. Run the executable by typing ''./gcc_dry2''</b></font>
Description should be no longer than The program will start to ask you for a paragraph''number of runs''. Include links to any relevant By convention on-line resources. For examplenewer machines (>=1GHz), http://googlethe number of runs used is about '''~100000000''' (100 million).com There are no rules or [http://developerstandards about how many runs it should be.mozillaSome people calculate the number of runs through "Dhrystone run time erros" (way too advanced); what matters is the consistency of the result.org MDC]For consistent results, dhrystone is executed more than 5 times with same values for number of runs.
== Project Leader(s) ==
Name(s) of primary people working on the project<font style="font-size:110%><b>2. If you want to join a project as leader, discuss with other leaders first. Include links to personal pages within wikiCalculate for DMIPS</b></font>
== Project ContributorOne common representation of the Dhrystone benchmark is DMIPS. DMIPS (sDhrystone 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).
Name(s) of people casually working on Given the project, or who have contributed significant help. Include links to personal pages within wikiresult:
NOTE<blockquote><code>Microseconds for one run through Dhrystone: only Project Leader(s) should add names here 0. 8<br />Dhrystones per Second: 1333333.4</code></blockquote> You '''can’t''' add your own name to the Contributor list.
== Project Details ==Using the formula:
Provides more depth than the Project Description'''1333333. 4 / 1757 = This is 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 to them758.87''' ''DMIPS''
== Project Plan ==
Goals The result shown was an actual test for each release:* 0a beagleboardXM machine with 1GHz of processor speed.1* 0.2* 0.3
== Project News =And... =
This is where your regular updates will go. In these you should discuss the status or your work, your interactions with other members of the community (e.g., Seneca and Mozilla), problems you have encountered, etc.<font style="font-size:90%">From ARM White paper</font><br />
Put detailed technical information into "When first released, the Project Details page (i.eDhrystone benchmark fulfilled a useful function – at least it gave an alternative indicator to vendors’ literal MIPS ratings.However, update it as you go)more than twenty years later, and save this section there are undoubtedly better benchmarks available for news about participation in the projectmeasuring processor performance."
2
edits