Sæt alle kerner i gang – kommentarstyret parallelprogrammering i SAS
Transcription
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 JISH@danicapension.dk Tomislav Kajinic KAJI@danicapension.dk 12