Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
advanced_computer_architecture
exercises
Commits
142d7fe2
Commit
142d7fe2
authored
Jun 17, 2016
by
Christoph Gerum
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add test files for neon
parent
f0123693
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
104 additions
and
2 deletions
+104
-2
aufgaben/blatt05/blatt05.md
aufgaben/blatt05/blatt05.md
+50
-2
aufgaben/blatt05/neon_convert.c
aufgaben/blatt05/neon_convert.c
+54
-0
aufgaben/blatt05/neon_convert_o1
aufgaben/blatt05/neon_convert_o1
+0
-0
aufgaben/blatt05/neon_convert_o2
aufgaben/blatt05/neon_convert_o2
+0
-0
aufgaben/blatt05/neon_convert_o3
aufgaben/blatt05/neon_convert_o3
+0
-0
No files found.
aufgaben/blatt05/blatt05.md
View file @
142d7fe2
Title: Blatt
5
Title: Blatt
4
status: hidden
status: hidden
# Multicore Architekturen / Cache Coherency (**DRAFT**)
# Parallelrechnerarchitekturen 2
Führen Sie vor dem Bearbeiten des Blattes wieder ein
*git pull*
durch.
## Aufgabe 2: Superlinearer Speedup (*Abgabe war verschoben von Blatt 04*)
Auf der englischen Wikipedia unter wird folgende Aussage zum Thema
[
superlinearer Speedup
](
https://en.wikipedia.org/wiki/Speedup#Super-linear_speedup
)
bei
Parallelrechnerarchitekturen gemacht:
> Sometimes a speedup of more than $A$ when using $A$ processors is observed
> in parallel computing, which is called ''super-linear speedup''. Super-linear
> speedup rarely happens and often confuses beginners, who believe the t
> heoretical maximum speedup should be $A$ when $A$ processors are used.
Da Sie ja nicht zu den genannten "
`
Anfängern"' gehören stiftet bei Ihnen
das Auftreten von superlinearem Speedup keine Verwirrung, so dass
Ihnen die folgenden Aufgaben auch keine Probleme bereiten dürften.
Schreiben Sie ein Benchmark-Programm, das ein von Ihnen definiertes
Problem löst und das bei paralleler Bearbeitung auf einer gem5 Konfiguration mit mehreren Kernen einen superlinearen Speedup zeigt.
### Fragen
-
Beschreiben Sie mindestens eine Ursache für das Zustandekommen von
superlinearem Speedup bei der Verwendung eines Parallelrechners zur Lösung
eines Problems.
-
Erstellen sie wie in Aufgabe 1 ein Schaubild das den Verlauf des Speedups bei
einer schrittweisen Erhöhung der Anzahl der Rechenkerne zeigt. Wo tritt superlinearer Speedup auf?
### Tips
-
Wenn Sie versuchen einen superlinearen Speedup durch Cacheeffekte zu erzielen
kann es hilfreich sein den Speicher sehr langsam zu machen. Dazu können
Sie den DDR-RAM in der Beispielkonfiguration durch ein SimpleMemory ersetzen
und die Parameter latency und bandwidth setzen.
### Abgabe
1.
der Quellcode des Programms und die verwendete gem5 konfiguration
2.
die Antworten auf die Fragen
aufgaben/blatt05/neon_convert.c
0 → 100644
View file @
142d7fe2
#include <arm_neon.h>
#define SIZE 512
void
reference_convert
(
uint8_t
*
__restrict
dest
,
uint8_t
*
__restrict
src
,
int
n
){
int
i
;
for
(
i
=
0
;
i
<
n
;
i
++
){
int
r
=
*
src
++
;
// load red
int
g
=
*
src
++
;
// load green
int
b
=
*
src
++
;
// load blue
// build weighted average:
int
y
=
(
r
*
77
)
+
(
g
*
151
)
+
(
b
*
28
);
// undo the scale by 256 and write to memory:
*
dest
++
=
(
y
>>
8
);
}
}
void
neon_convert
(
uint8_t
*
__restrict
dest
,
uint8_t
*
__restrict
src
,
int
n
){
int
i
;
uint8x8_t
rfac
=
vdup_n_u8
(
77
);
uint8x8_t
gfac
=
vdup_n_u8
(
151
);
uint8x8_t
bfac
=
vdup_n_u8
(
28
);
n
/=
8
;
for
(
i
=
0
;
i
<
n
;
i
++
)
{
uint16x8_t
temp
;
uint8x8x3_t
rgb
=
vld3_u8
(
src
);
uint8x8_t
result
;
temp
=
vmull_u8
(
rgb
.
val
[
0
],
rfac
);
temp
=
vmlal_u8
(
temp
,
rgb
.
val
[
1
],
gfac
);
temp
=
vmlal_u8
(
temp
,
rgb
.
val
[
2
],
bfac
);
result
=
vshrn_n_u16
(
temp
,
8
);
vst1_u8
(
dest
,
result
);
src
+=
8
*
3
;
dest
+=
8
;
}
}
uint8_t
src
[
SIZE
*
SIZE
*
3
];
uint8_t
dest
[
SIZE
*
SIZE
];
int
main
(
int
argc
,
char
**
argv
){
if
(
argc
==
1
){
neon_convert
(
dest
,
src
,
SIZE
*
SIZE
);
}
else
if
(
argc
==
2
&&
strcmp
(
argv
[
1
],
"-r"
)
==
0
){
reference_convert
(
dest
,
src
,
SIZE
*
SIZE
);
}
}
aufgaben/blatt05/neon_convert_o1
0 → 100755
View file @
142d7fe2
File added
aufgaben/blatt05/neon_convert_o2
0 → 100755
View file @
142d7fe2
File added
aufgaben/blatt05/neon_convert_o3
0 → 100755
View file @
142d7fe2
File added
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment