Kako pisati moćne paralelizovane aplikacije – utisci sa Intel softverskog seminara

ITD ekipa retko posećuje vrlo stručne programerske događaje iz dva razloga – nedovoljno se razumemo u materiju, a i takvi događaji su prilično retki na domaćem tržištu. Ovom prilikom ćemo sa vama podeliti utiske našeg prijatelja Miloša Pejovića, studenta ETF-a i vrsnog programera.

Intel-ov softverski seminar, pod nazivom “How to write powerfull parallel applications“, održan je u Beogradu, 20. maja 2009, u organizaciji firme Pavlović Consulting d.o.o, zvaničnog distributera Intel-ovog softvera.

 

U prijatnoj atmosferi, stručnjaci iz Intel-a Edmund Prajs (Edmund Preiss) i Hajnc Bast (Heinz Bast) su više od osam sati držali veoma zanimljiva predavanja.

Predavanje je započeto pregledom arhitekture Intel-ovih procesora. Od pojave prvog mikroprocesora, Intel-ovog 4004, do najnovijeg Nehalema, broj tranzistora na čipu je po Murovom zakonu porastao milion puta. Zahvaljujući toj činjenici, danas postoje čipovi sa više procesorskih jezgara, i njihov broj će se dalje uvećavati.

Zbog nemogućnosti daljeg ubrzavanja procesora, povećanjem frekvencije na kojoj rade, došlo se do situacije u kojoj je paralelizacija koda, jedino realno rešenje za dalje ubrzavanje računarskih sistema. Ipak, i pored velikog napretka u razvoju novih hardverskih rešenja, softver još uvek nije u stanju da iskoristi svu snagu, koju mu hardver pruža. Pisanje paralelnog koda nije jednostavno, i u prethodnom periodu su programeri i softverske kompanije išli „linijom manjeg otpora”.

Jedan od zadataka Intel-ovog softverskog odeljenja je da to promeni.

Od modela konkurentnog programiranja, prikazane su prednosti i mane uobičajenih, sistemskih biblioteka, koje omogućavaju paralelno programiranje, kao što su Win32 ili POSIX niti. Istaknuto je da je programiranje konkurentnih programa na taj način suviše vremenski zahtevno i podložno greškama. Mnogo bolja programska paradigma – OpenMP, podržana je u mnogim kompajlerima (Intel, GNU, VisualStudio…). Korišćenjem OpenMP-a, pisanje paralelnih programa je veoma olakšano, a uz to su programeri oslobođeni razmišljanja o hardverskim detaljima procesora na kojem će se program izvršavati, i program postaje skalabilniji, jer se taj posao u potpunosti prepušta kompajleru.

U sklopu priče o strategijama konkurentnog programiranja, predavači su, kao veoma dobar uvod u ovu oblast, preporučili knjigu „Patterns for Parallel Programming“, čiji je autor Timoti Matson.

Nakon toga su prikazane mogućnosti naprednih Intel-ovih kompajlera za C++ i Fortran, kao i prednosti Intel-ove softverske mreže (Intel Software Network).

Iskorišćavanje novih mogućnosti Intel-ovih procesora (kao što su SSE4 instrukcije) može da se značajno olakša upotrebom biblioteka visoko-optimizovanih funkcija – IPP i MKL.

  • IPP (Integrated Performance Primitives) je biblioteka funkcija za obradu signala, slika i matrica.
  • MKL (Math Kernel Library) je biblioteka funkcija za naučne, inženjerske i finansijske primene.

Ove biblioteke će, vremenom, podržati i buduće Intel-ove procesore, a aplikacije koje ih koriste će automatski od toga imati koristi.

Prikazani su i najnapredniji alati koje Intel nudi – za pronalaženje grešaka i optimizovanje konkurentnih programa. Gospodin Bast je uz to ispričao nekoliko zanimljivih anegdota iz praktične primene tih alata za rešavanje problema u aplikacijama Intel-ovih klijenata.

Intel® Thread Checker je alat koji značajno olakšava pronalaženje grešaka u kodu koji koristi niti.

Za analizu performansi aplikacije, tu su Intel® VTune Performance Analyzer i Intel® Thread Profiler. VTune je napredniji alat, koji može da se koristi za detaljnu analizu „uskih grla” u bibliotekama, drajverima i aplikacijama. Interesantna je mogućnost ovog programa da prati sistemske brojače unutar Intel-ovih procesora, koji broje cache miss-eve, page fault-ove i slično, za pojedinačne delove koda, čime se dobijaju vredne informacije o tome šta bi trebalo da se optimizuje, i na koji način.

Intel razvija i alat za instrumentaciju programa – Pin, koji se koristi za razvoj veoma naprednih debugger-a i profiler-a. Pin je u potpunosti slobodan softver, i može se pronaći na adresi http://www.pintool.org/.

Na kraju predavanja, prikazani su Intel-ovi alati za dibagovanje i optimizovanje klasterskih aplikacija, programiranih pomoću MPI interfejsa.

Sve u svemu, veoma zanimljiv i informativan seminar. Možda će se ovaj seminar držati i sledeće godine, pa nemojte da ga propustite, ukoliko vas ove oblasti zanimaju.

Na adresi http://whatif.intel.com/ može se naći više informacija o Intel-ovom softveru koji je još uvek u fazi razvoja.

Autor: Miloš Pejović

Autor: Vladimir Trkulja


DODAJ KOMENTAR