This is an old revision of the document!


Laboratorul 1 - Introducere în OpenMP

Ce învățăm la APP?

La APP vom învăța cum să analizăm o problemă și o soluție a acesteia (mai precis, un program secvențial) și cum am putea să îmbunătățim soluțiile la problema respectivă (adică cum am putea să eficientizăm prin paralelizare soluțiile problemei).

În cadrul laboratoarelor de APP vom studia despre programarea paralelă (OpenMP, pthreads), despre programarea distribuită (MPI) și despre analiza performanțelor unui program (profiling).

Ce este OpenMP?

OpenMP reprezintă un API prin care putem paraleliza programe secvențiale scrise în C/C++. Acesta este un API high-level, în sensul că programatorul are o varietate de tool-uri și de opțiuni la dispoziția sa, ele putând fi folosite cu mare ușurință.

OpenMP este creat pe baza modelului fork-join, unde avem un thread principal (master), din care se creează alte thread-uri (fork, echivalent cu pthread_create din pthreads), care, împreună cu thread-ul master, execută task-uri în paralel, în cadrul unor zone numite regiuni paralele. După ce task-urile respective sunt terminate, thread-urile forked “revin” în thread-ul principal (join).

Includere și compilare

Pentru a putea folosi OpenMP în cod, trebuie inclusă biblioteca omp.h în cod: #include <omp.h>.

Pentru compilare, este necesar un flag, care diferă în funcție de compilator:

  • gcc: gcc helloworld.c -o helloworld -fopenmp
  • SunStudio (pe fep): cc -xopenmp helloworld.c -o helloworld
app/laboratoare/01.1666524773.txt.gz · Last modified: 2022/10/23 14:32 by florin.mihalache
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0