Hochleistungsrechnen, Uni Kiel

Werbung
Hochleistungsrechnen
WS 2016/17
Mo. 07.11.2016
Prof. Dr. Steffen Börm, Dipl. Inf. Sven Christophersen
Serie 3
Aufgabe 3.1 (Sinus mit SSE/AVX)
SIMD-Erweiterungen wie SSE und AVX bieten im Wesentlichen nur die Grundrechenoperation
+,-,*,/ an. Komplexere Funktionen wie zum Beispiel die Sinus-Funktion lassen sich dennoch
mit Vektoroperationen beschleunigen, indem man eine Taylor-Entwicklung um 0 herum vornimmt und diese bis zu einem gewissen Grad mit SSE/AVX-Operationen umsetzt.
So gilt für den Sinus die Näherung
sin(x) ≈ x −
x3 x5 x7 x9 x11
+
−
+
−
.
3!
5!
7!
9!
11!
Effizient Auswerten kann man diese Formel, indem man sukzessive x2 sowie gewisse Konstanten
ausklammert. Es ergibt sich dann:
x2
x2
x2
x2
x2
sin(x) ≈ x 1 −
1−
1−
1−
1−
.
6
20
42
72
110
Implementieren Sie auf diese Weise die Sinus-Funktion in der Datei sinus.c wahlweise mit
SSE- und/oder AVX-Instruktionen.
Aufgabe 3.2 (Kehrwert und Division)
In vielen Anwendungen ist die Berechnung des Kehrwerts 1/y einer Zahl y ∈ R \ {0}
unumgänglich genau so wie die Division x/y zweier Zahlen x ∈ R, y ∈ R \ {0}.
Da solche Ausdrücke außerdem häufig in den Hot-spots der Programme auftreten, ist es von
großem Interesse diese besonders schnell auswerten zu können.
Erweitern Sie die Datei rcp.c um folgende Funktionalitäten.
(a) Schreiben Sie mit SSE- und/oder AVX-Befehlen eine Methode zur schnellen Berechnung
des Kehrwerts. Nutzen Sie hierfür zunächst den Befehl _mm_rcp_ps bzw. _mm256_rcp_ps,
der lediglich eine Näherung berechnet.
Diese Näherung soll anschließend per Newton-Verfahren verbessert werden. Nutzen Sie
dazu die Funktion f (x) = 1/x − a, die bei x = 1/a eine Nullstelle besitzt.
(b) Schreiben Sie außerdem eine Funktion die möglichst schnell die Division per SSE und/oder
AVX ausrechen kann. Vergleichen Sie die Performance ihrer Lösung mit der des Befehls
_mm_div_ps bzw. _mm256_div_ps.
Hinweis: Als Referenz für Vektorerweiterungen empfiehlt
http://software.intel.com/sites/landingpage/IntrinsicsGuide/
sich
die
Internetseite
Website: www.scicom.informatik.uni-kiel.de/de/lehre/hochleistungsrechnen/hochleistungsrechnenim-ws16-17
Abgabe: Per Email an [email protected] bis Mo, 14.11.16, 14:00 Uhr.
Herunterladen