Sæt alle kerner i gang – kommentarstyret parallelprogrammering i SAS

Sæt alle kerner i gang – kommentarstyret
parallelprogrammering i SAS
Jingyu She og Tomislav Kajinic
25. juni 2015
nemt
markant
Det må kunne gøres hurtigere
… og stadig
være læseligt!
2
En maler kan male en væg på en time
Hvor længe tager det
for fire malere at male
fire vægge?
3
Om at køre parallelt
minutter
3 timer
DATA
12 minutter
12
timer
DATA
DATA
3 timer
DESTINATION
DATA
4
nemt
markant
Det må kunne gøres hurtigere
… og stadig
være læseligt!
5
Demo 1- Hent, sorter, merge
6
Om at køre i trit -- synkronisering
Eksempel: Hent. Sorter. Merge.
SAS-proces 1
SAS-proces 2
Hent DATA 1
Hent DATA 2
Sort DATA 1
Sort DATA 2
Synkronisering
Merge
datasæt
7
Demo 1- Hent, sorter, merge
Kommandonavn
/*EP.ALL*/
/*EP.SINGLE*/
Kør på alle processer
Marker, at kodeblok køres
parallelt
/*EP.END*/
Marker slutning af kodeblok
/*EP.SYNC*/
Synkroniser
/*EP.CPU=2*/
Tilpas antal SAS-processer
Der er automatisk synkronisering inden alle ukommenterede kodestumper. Alle
ukommenterede kodestumper sendes til SAS-proces nummer 1.
8
Om at køre i trit -- synkronisering
Eksempel: Hent. Sorter. Merge.
SAS-proces 1
SAS-proces 2
Hent DATA 1
Hent DATA 2
SAS-proces 3
Manuel synkronisering
Sort DATA 1
SAS-proces 4
Sort DATA 2
Automatisk synkronisering
Merge
datasæt
9
Hvornår kan det bedst betale sig at køre parallelt?
•
Læsning af data fra flere eksterne databaser
•
Sortering af flere datasæt på mange variable
•
Beregningstunge datasteps
•
Her gør Drop/Keep en forskel
•
Generelt: mange beregninger + lille I/O = større boost
•
Simulationer
10
Demo 2 - Simulation
11
Skriv til os !
Jingyu She
[email protected]
Tomislav Kajinic
[email protected]
12