Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2016 2017 #1

Open
wants to merge 51 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
1634e4f
adding figure
cgravier Feb 23, 2016
ac9ffc0
add image
cgravier Feb 23, 2016
537eaf1
add image
cgravier Feb 23, 2016
f28cecf
Update README.md
cgravier Feb 23, 2016
e1fdf89
labs project structure
cgravier Feb 23, 2016
3aa9ff9
Merge branch '2015-2016' of https://github.com/telecom-se/hpp into 20…
cgravier Feb 23, 2016
3de6b2a
introduction
cgravier Feb 23, 2016
b2cdc9f
Updated README.md
cgravier Feb 25, 2016
e3de0a9
Updated README.md
cgravier Feb 25, 2016
069113e
Updated README.md
cgravier Feb 25, 2016
d9b52f7
Updated README.md
cgravier Feb 25, 2016
57dc5c6
Updated README.md
cgravier Feb 25, 2016
e4e38d4
illustration
cgravier Feb 25, 2016
ca80db3
illustration
cgravier Feb 25, 2016
d5d24c2
Update README.md
cgravier Mar 1, 2016
2c87c9c
Update README.md
cgravier Mar 1, 2016
d6c21e3
Update README.md
cgravier Mar 1, 2016
9b939c6
Update README.md
cgravier Mar 1, 2016
2c10207
Update README.md
cgravier Mar 1, 2016
b11b771
Update README.md
cgravier Mar 1, 2016
15dbef8
Update README.md
cgravier Mar 1, 2016
218e699
Update README.md
cgravier Mar 1, 2016
6fe6021
Update README.md
cgravier Mar 1, 2016
1a24bb9
Update README.md
cgravier Mar 1, 2016
761679a
Update README.md
Mar 14, 2016
5cc4420
Update README.md
cgravier Mar 21, 2016
cda108d
Update README.md
cgravier Mar 21, 2016
e606fe5
Update README.md
cgravier Mar 21, 2016
f19631e
Update README.md
cgravier Mar 21, 2016
398bc25
Update README.md
cgravier Mar 21, 2016
a871d17
Update README.md
cgravier Mar 21, 2016
e824bb5
Update README.md
cgravier Mar 21, 2016
eba58d7
Update README.md
cgravier Mar 21, 2016
fbd098b
Update README.md
cgravier Mar 21, 2016
00085dc
Update README.md
cgravier Mar 21, 2016
6a1af25
multithreading
Apr 27, 2016
01164ad
Update README.md
cgravier Mar 3, 2017
238527f
Sequential and random walks for arrays updated in Java
cgravier Mar 3, 2017
a2f4e85
typo
cgravier Mar 3, 2017
e4ad267
On linkedlist task with contiguous and non-contiguous memory layout f…
cgravier Mar 3, 2017
db26b2f
On automatic optimisations and SIMD
cgravier Mar 3, 2017
95a7ad2
Update README.md
cgravier Mar 3, 2017
e9cc102
Added branch prediction
cgravier Mar 6, 2017
3f974cf
Update README.md
cgravier Mar 6, 2017
e78e463
Plugging JMH session
cgravier Mar 6, 2017
ccc5b3f
Update README.md
cgravier Mar 6, 2017
fb7aaea
introduces and motivates benchmarking framework
cgravier Mar 6, 2017
56e9328
Update README.md
cgravier Mar 7, 2017
77f5cd0
Update README.md
Apr 19, 2017
33593d0
new MT TP
Apr 25, 2017
6d366ed
remove files
Apr 25, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Updated README.md
cgravier committed Feb 25, 2016
commit 069113eb9cae245d50b42565ba37a8c8b7bfa5b9
29 changes: 24 additions & 5 deletions lab1/README.md
Original file line number Diff line number Diff line change
@@ -45,6 +45,8 @@ This structure represents a cell in a linked list (The field `n` points to the n

Given what's before, this can be misleading. This will make perfect sense in the next task. This program will be used to measure the _time_ needed to sequentially walk every value in a 2^k bytes array.

## Sequential Read Walks and block size influence

In order to sequentially walk this linked list of values "packed" into a contiguous memory area (which was been forced as we put all cells into a array), we will restrict ourself to traverse the array using the pointers in each cell (and not the `[]` notation).

Next, in order to actually measure the sequential read walk 'time' for various value for `k`, we will need to able to "measure" the elasped time for such a sequential read walk. Here things becomes to be quite messy !
@@ -59,17 +61,34 @@ Alternatives exists in order to count (well ... estimate) the number of CPU *cyc

As we are relying on free software and we want to measure the number of CPU cycles for a single function, we will opt for another alternative offered by the [FTTW software](http://www.fftw.org/download.html), that is its Cycles counter module.

> Task : For k in {10 .. 28}, measure the estimated CPU cycles per linked list element required to traverse the linked list of memory size 2^k - as built at the previous task.
> Task : For k in {10 .. 28}, measure the estimated CPU cycles per linked list element required to traverse the linked list of memory size 2^k - as built at the previous task. What do you observe ? Why ?

You will now try to see how the size of the structure influence this result.

> Task : Same as previous task BUT change `NPAD` from `0` to `15`. What do you observe w.r.t. the figure when `NPAD == 0`? What can you make as a hypothesis ?

> Task : In order to confirm your thought - or guide you if you are clueless - plot the cache-misses ratio using the `perf` software. Hint: you can make stat on the events `cache-misses` and `cache-references` in order to have the ratio of cache-misses. What do you conclude ? What is the additional observation you couldn't make in the previous task ?

## From left-to-right or right-to-left ?

We want to compare the previous results for a different traversal of the linked list. We have traverse the link sequentially, from left to right. The question is whether the direction of the walk influence the results.

> Task : Re-run the previous experiments for both `NPAD`values, but sequentially traverse the linked list from end to start. What do you conclude ?

## Sequential vs Random Read Walks and influence of prefetching

Would it be from left-to-right or right-to-left, we have traverse the linked list in a predictable pattern. What happens if you randomly traverse that list, i.e. we jump from one cell to another with no specific predictable order ?

In order to do so, you will have to first "shuffle" the linked list (i.e. to wire the cells in no particular predicable order).

## Prefecthing and CPU pipelines
> Task : Set `NPAD`to `0`, and see for the different values of `k`, the correlation between CPU cycles and cache-misses ratio. Plot the differences between sequential and random walks in the list. Can you explain what you get ?

## Cache page size and line length through padding effects
## Branch prediction

## Random read vs sequential read

## Side remarks on instructions caches
## Side remarks
On instruction caches.
On write behaviours.