Wiki page for accuracy checking and accuracy results of four architectures authored by Thomas.Roehl's avatar Thomas.Roehl
# Accuracy Tests for Intel Core Haswell processor
## Hardware description
Sockets: 1<br>
Cores per socket: 4<br>
Threads per core: 2<br>
Total number of processing units: 8<br>
## Available groups
Each architecture defines a different set of performance groups. These groups help users to measure their derived metrics. Besides the event and counter defintion, a performance groups contains derived metrics that are calculated based on the measured data.<br>Here all the groups available for the Intel Core Haswell processor are listed:<br>
| Name | Description |
| ---- | ----------- |
| ICACHE | Instruction cache miss rate/ratio |
| CLOCK | Power and Energy consumption |
| TLB_DATA | L1 Data TLB miss rate/ratio |
| ENERGY | Power and Energy consumption |
| L3CACHE | L3 cache miss rate/ratio |
| L2 | L2 cache bandwidth in MBytes/s |
| L3 | L3 cache bandwidth in MBytes/s |
| BRANCH | Branch prediction miss rate/ratio |
| L2CACHE | L2 cache miss rate/ratio |
| TLB_INSTR | L1 Instruction TLB miss rate/ratio |
| DATA | Load to store ratio |
## Available verification tests
Not all groups can be tested for accuracy. We don't have a test application for each performance group. Here only the groups are listed that can be verified. Each group is followed by the low-level benchmarks that are performed for comparison.<br>
| Group | Tests |
|-------|-------|
| L2 | load, store, copy, stream, triad |
| L3 | load, store, copy, stream, triad |
## Accuracy comparison
For each varification group, the tests are performed twice. Once in a plain manner without measuring but calculating the resulting values and once through an instumented code with LIKWID.<br>
### Verification of Group L2
#### Verification of Group L2 with Test load
| *Stream size* | *Iterations* |
|---------------|--------------|
| 12kB | 20000 |
| 1MB | 10000 |
| 4MB | 7500 |
| 1GB | 50 |
Each data size is tested 5 times, hence the first 5 entries on the x-axis correspond to the 5 runs for the first data size of 12kB and so on.<br>
![haswell_L2_load](../images/accuracy/haswell/L2_load.jpg)
| Variant | Plain (Min) | LIKWID (Min) | Plain (Max) | LIKWID (Max) | Plain (Avg) | LIKWID (Avg) |
| ------- | ------- | ------- | ------- | ------- | ------- | ------- |
| 12kB | 120796 | 0 | 121618 | 1 | 121242 | 1 |
| 1MB | 56968 | 47088 | 57912 | 47407 | 57449 | 47299 |
| 4MB | 57096 | 46155 | 57888 | 47334 | 57500 | 46979 |
| 1GB | 20066 | 17678 | 20116 | 17846 | 20099 | 17797 |
#### Verification of Group L2 with Test store
| *Stream size* | *Iterations* |
|---------------|--------------|
| 12kB | 20000 |
| 1MB | 10000 |
| 4MB | 7500 |
| 1GB | 50 |
Each data size is tested 5 times, hence the first 5 entries on the x-axis correspond to the 5 runs for the first data size of 12kB and so on.<br>
![haswell_L2_store](../images/accuracy/haswell/L2_store.jpg)
| Variant | Plain (Min) | LIKWID (Min) | Plain (Max) | LIKWID (Max) | Plain (Avg) | LIKWID (Avg) |
| ------- | ------- | ------- | ------- | ------- | ------- | ------- |
| 12kB | 120796 | 0 | 121618 | 3 | 121242 | 1 |
| 1MB | 56968 | 57442 | 57912 | 57559 | 57449 | 57494 |
| 4MB | 57096 | 56722 | 57888 | 57493 | 57500 | 57180 |
| 1GB | 20066 | 19991 | 20116 | 20012 | 20099 | 20005 |
#### Verification of Group L2 with Test copy
| *Stream size* | *Iterations* |
|---------------|--------------|
| 12kB | 20000 |
| 1MB | 10000 |
| 4MB | 7500 |
| 1GB | 50 |
Each data size is tested 5 times, hence the first 5 entries on the x-axis correspond to the 5 runs for the first data size of 12kB and so on.<br>
![haswell_L2_copy](../images/accuracy/haswell/L2_copy.jpg)
| Variant | Plain (Min) | LIKWID (Min) | Plain (Max) | LIKWID (Max) | Plain (Avg) | LIKWID (Avg) |
| ------- | ------- | ------- | ------- | ------- | ------- | ------- |
| 12kB | 120796 | 1 | 121618 | 11 | 121242 | 3 |
| 1MB | 56968 | 55806 | 57912 | 56024 | 57449 | 55922 |
| 4MB | 57096 | 55803 | 57888 | 56088 | 57500 | 55967 |
| 1GB | 20066 | 19623 | 20116 | 19672 | 20099 | 19653 |
#### Verification of Group L2 with Test stream
| *Stream size* | *Iterations* |
|---------------|--------------|
| 12kB | 20000 |
| 1MB | 10000 |
| 4MB | 7500 |
| 1GB | 50 |
Each data size is tested 5 times, hence the first 5 entries on the x-axis correspond to the 5 runs for the first data size of 12kB and so on.<br>
![haswell_L2_stream](../images/accuracy/haswell/L2_stream.jpg)
| Variant | Plain (Min) | LIKWID (Min) | Plain (Max) | LIKWID (Max) | Plain (Avg) | LIKWID (Avg) |
| ------- | ------- | ------- | ------- | ------- | ------- | ------- |
| 12kB | 120796 | 0 | 121618 | 2 | 121242 | 0 |
| 1MB | 56968 | 55581 | 57912 | 55901 | 57449 | 55750 |
| 4MB | 57096 | 54508 | 57888 | 55769 | 57500 | 55213 |
| 1GB | 20066 | 19356 | 20116 | 19406 | 20099 | 19369 |
#### Verification of Group L2 with Test triad
| *Stream size* | *Iterations* |
|---------------|--------------|
| 12kB | 20000 |
| 1MB | 10000 |
| 4MB | 7500 |
| 1GB | 50 |
Each data size is tested 5 times, hence the first 5 entries on the x-axis correspond to the 5 runs for the first data size of 12kB and so on.<br>
![haswell_L2_triad](../images/accuracy/haswell/L2_triad.jpg)
| Variant | Plain (Min) | LIKWID (Min) | Plain (Max) | LIKWID (Max) | Plain (Avg) | LIKWID (Avg) |
| ------- | ------- | ------- | ------- | ------- | ------- | ------- |
| 12kB | 120796 | 0 | 121618 | 2 | 121242 | 1 |
| 1MB | 56968 | 55094 | 57912 | 55792 | 57449 | 55428 |
| 4MB | 57096 | 55250 | 57888 | 55564 | 57500 | 55399 |
| 1GB | 20066 | 18993 | 20116 | 19015 | 20099 | 19002 |
### Verification of Group L3
#### Verification of Group L3 with Test load
| *Stream size* | *Iterations* |
|---------------|--------------|
| 12kB | 20000 |
| 1MB | 10000 |
| 4MB | 7500 |
| 1GB | 50 |
Each data size is tested 5 times, hence the first 5 entries on the x-axis correspond to the 5 runs for the first data size of 12kB and so on.<br>
![haswell_L3_load](../images/accuracy/haswell/L3_load.jpg)
| Variant | Plain (Min) | LIKWID (Min) | Plain (Max) | LIKWID (Max) | Plain (Avg) | LIKWID (Avg) |
| ------- | ------- | ------- | ------- | ------- | ------- | ------- |
| 12kB | 120796 | 0 | 121618 | 0 | 121242 | 0 |
| 1MB | 56968 | 46445 | 57912 | 47495 | 57449 | 47157 |
| 4MB | 57096 | 46025 | 57888 | 47482 | 57500 | 47134 |
| 1GB | 20066 | 17552 | 20116 | 18005 | 20099 | 17844 |
#### Verification of Group L3 with Test store
| *Stream size* | *Iterations* |
|---------------|--------------|
| 12kB | 20000 |
| 1MB | 10000 |
| 4MB | 2000 |
| 1GB | 50 |
Each data size is tested 5 times, hence the first 5 entries on the x-axis correspond to the 5 runs for the first data size of 12kB and so on.<br>
![haswell_L3_store](../images/accuracy/haswell/L3_store.jpg)
| Variant | Plain (Min) | LIKWID (Min) | Plain (Max) | LIKWID (Max) | Plain (Avg) | LIKWID (Avg) |
| ------- | ------- | ------- | ------- | ------- | ------- | ------- |
| 12kB | 120796 | 0 | 121618 | 0 | 121242 | 0 |
| 1MB | 56968 | 52368 | 57912 | 52700 | 57449 | 52503 |
| 4MB | 57096 | 52324 | 57888 | 52533 | 57500 | 52450 |
| 1GB | 20066 | 16518 | 20116 | 16538 | 20099 | 16529 |
#### Verification of Group L3 with Test copy
| *Stream size* | *Iterations* |
|---------------|--------------|
| 12kB | 20000 |
| 1MB | 10000 |
| 4MB | 2000 |
| 1GB | 50 |
Each data size is tested 5 times, hence the first 5 entries on the x-axis correspond to the 5 runs for the first data size of 12kB and so on.<br>
![haswell_L3_copy](../images/accuracy/haswell/L3_copy.jpg)
| Variant | Plain (Min) | LIKWID (Min) | Plain (Max) | LIKWID (Max) | Plain (Avg) | LIKWID (Avg) |
| ------- | ------- | ------- | ------- | ------- | ------- | ------- |
| 12kB | 120796 | 0 | 121618 | 0 | 121242 | 0 |
| 1MB | 56968 | 50966 | 57912 | 51472 | 57449 | 51268 |
| 4MB | 57096 | 51306 | 57888 | 51485 | 57500 | 51413 |
| 1GB | 20066 | 18395 | 20116 | 18687 | 20099 | 18597 |
#### Verification of Group L3 with Test stream
| *Stream size* | *Iterations* |
|---------------|--------------|
| 12kB | 20000 |
| 1MB | 10000 |
| 4MB | 2000 |
| 1GB | 50 |
Each data size is tested 5 times, hence the first 5 entries on the x-axis correspond to the 5 runs for the first data size of 12kB and so on.<br>
![haswell_L3_stream](../images/accuracy/haswell/L3_stream.jpg)
| Variant | Plain (Min) | LIKWID (Min) | Plain (Max) | LIKWID (Max) | Plain (Avg) | LIKWID (Avg) |
| ------- | ------- | ------- | ------- | ------- | ------- | ------- |
| 12kB | 120796 | 0 | 121618 | 0 | 121242 | 0 |
| 1MB | 56968 | 50197 | 57912 | 50684 | 57449 | 50445 |
| 4MB | 57096 | 48484 | 57888 | 50993 | 57500 | 50093 |
| 1GB | 20066 | 17497 | 20116 | 18520 | 20099 | 18095 |
#### Verification of Group L3 with Test triad
| *Stream size* | *Iterations* |
|---------------|--------------|
| 12kB | 20000 |
| 1MB | 10000 |
| 4MB | 2000 |
| 1GB | 50 |
Each data size is tested 5 times, hence the first 5 entries on the x-axis correspond to the 5 runs for the first data size of 12kB and so on.<br>
![haswell_L3_triad](../images/accuracy/haswell/L3_triad.jpg)
| Variant | Plain (Min) | LIKWID (Min) | Plain (Max) | LIKWID (Max) | Plain (Avg) | LIKWID (Avg) |
| ------- | ------- | ------- | ------- | ------- | ------- | ------- |
| 12kB | 120796 | 0 | 121618 | 0 | 121242 | 0 |
| 1MB | 56968 | 49671 | 57912 | 50875 | 57449 | 50215 |
| 4MB | 57096 | 50124 | 57888 | 50674 | 57500 | 50370 |
| 1GB | 20066 | 17389 | 20116 | 18086 | 20099 | 17802 |