Documente Academic
Documente Profesional
Documente Cultură
1.1 Exercițiul 1
Pornind de la exercițiile din laboratorul anterior, adăugați opțiunea de
a paraleliza calculul matricial pe mai multe nuclee folosind biblioteca
OpenMP[1]. Măsurați timpul de rulare pe 1, 2, 3, respectiv 4 nuclee.
Argumentați de ce nu există concurență și conflicte pe date. Implantați
înmulțirea într-o funcție și salvați-o pentru mai târziu
Indicații
Biblioteca OpenMP permite paralelizarea buclelor din cod folosind
directive pre-procesor de tipul #pragma omp. De exemplu, o buclă
for poate fi paralelizată urmând exemplul:
1
1 Lucrarea 5
1.2 Exercițiul 2
Procesoarele ARM dispun de o extensie SIMD, numită NEON. Inte-
grați implementarea realizată de compania ARM, pentru înmulțirea
vectorizată de matrici[2].
Indicații
Biblioteca NEON se include folosind #include <arm_neon.h>. Pen-
tru această bibliotecă, nu trebuie folosită nicio directivă de compilare.
1.3 Exercițiul 3
Să se realizeze o implementare vectorizată a înmulțirii de matrici,
pornind de la implementările anterioare și folosind extensia NEON.
Implantați înmulțirea într-o funcție și salvați-o pentru mai târziu
Indicații
Documentația pentru comenzile din Neon este disponibilă pe site-ul
GCC[3].
2
1.4 Exercițiul 4
1.4 Exercițiul 4
Pornind de la exercițiul anterior, adaugați și OpenMP la implementa-
rea cu NEON. Implantați înmulțirea într-o funcție și salvați-o pentru
mai târziu
1.5 Exercițiul 5
Realizați o comparație a timpilor de rulare între înmulțirile de matrici.
Algoritmi care trebuiesc comparați sunt:
• Înmulțirea „naivă”.
• Înmulțire „cahe-optimize”.
Indicații
Rulați pe 10 dimensiuni de matrici, realizați un tabel cu timpii de
rulare și realizați un grafic de tip linie.
3
Bibliografie
[1] ECE 563: OpenMP, url: https://engineering.purdue.edu/
~smidkiff/ece563/files/ECE563OpenMPTutorial.pdf.
[2] Example - matrix multiplication, url: https : / / developer .
arm.com/documentation/102467/0200/Example---matrix-
multiplication.
[3] ARM NEON Intrinsics, url: https : / / gcc . gnu . org /
onlinedocs/gcc-4.4.7/gcc/ARM-NEON-Intrinsics.html.