summaryrefslogtreecommitdiff
path: root/doc/sphinx/userguide/benchmarking.rst
blob: b308adb618f51bb201fa46141fc2abe1c5f59f36 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Benchmarking
============

The Dhrystone and CoreMark benchmarks are still only supported by the Legacy
Freedom E SDK. When we port the benchmarks to Freedom Metal, we will update
this section to describe the updated build steps.

Dhrystone
---------

After setting up the software and debug toolchains, you can build and
execute everyone's favorite benchmark as follows:

- Compile the benchmark with the command ``make software TARGET=freedom-e300-hifive1 PROGRAM=dhrystone LINK_TARGET=dhrystone``. Note that a slightly different linker file is used for Dhrystone which stores read only data in DTIM instead of external flash.
- Run on the HiFive1 board with the command ``make upload TARGET=freedom-e300-hifive1 PROGRAM=dhrystone``.
  This will take a few minutes.  Sample output is provided below.
- Compute DMIPS by dividing the Dhrystones per Second result by 1757, which
  was the VAX 11/780's performance.  In the example below, 729927 / 1757 =
  415 DMIPS.
- Compute DMIPS/MHz by dividing by the clock rate: in the example below,
  415 / 268 = 1.55 DMIPS/MHz.

.. code-block:: none

   core freq at 268694323 Hz

   Dhrystone Benchmark, Version 2.1 (Language: C)

   <snip>

   Microseconds for one run through Dhrystone: 1.3
   Dhrystones per Second:                      729927.0

CoreMark
--------

We cannot distribute the CoreMark benchmark, but following are instructions
to download and run the benchmark on the HiFive1 board:

- Download CoreMark from EEMBC's web site and extract the archive from
  `<http://www.eembc.org/coremark/download.php>`_.
- Copy the following files from the extracted archive into the
  ``software/coremark`` directory in this repository:

  - ``core_list_join.c``
  - ``core_main.c``
  - ``coremark.h``
  - ``core_matrix.c``
  - ``core_state.c``
  - ``core_util.c``

- Compile the benchmark with the command ``make software PROGRAM=coremark``.
- Run on the HiFive1 board with the command ``make upload PROGRAM=coremark``.
- Divide the reported Iterations/Sec by the reported core frequency in MHz to
  obtain a CoreMarks/MHz value.