Ενότητα #1
Εισαγωγή: Βασικές έννοιες παράλληλου υπολογισμού.
Ενδεικτική θεωρία: Ενότητες 2.3 - 2.6 και 2.10.1 - 2.10.2 από το βιβλίο "Εισαγωγή στον Παράλληλο Προγραμματισμό" του Peter S. Pacheco.
Υλικό ενότητας #1
- Διαφάνειες ενότητας.
- Template μετροπρογραμμάτων: άθροισμα πίνακα doubles και άθροισμα πίνακα 2D doubles.
Ενότητα #2
Η ιεραρχία μνήμης (κύρια και κρυφές μνήμες), η επίδρασή της στην απόδοση και τα εμπόδια που θέτει στις προσπάθειες παραλληλισμού.
Ενδεικτική θεωρία: Ενότητες 2.2.1 - 2.2.4 από το βιβλίο "Εισαγωγή στον Παράλληλο Προγραμματισμό" του Peter S. Pacheco.
Υλικό εργαστηρίων ενότητας #2
- Διαφάνειες ενότητας.
- Template μετροπρογραμμάτων: triad-double.c και αντιμετάθεση πινάκων NxN.
- Λύσεις ασκήσεων: inner loop unroll, outer loop unroll & jam, cache blocking.
Ενότητα #3
Προγραμματισμός με εντολές SSE/AVX. Από τους υπερυπολογιστές (vector processors) στους εμπορικούς επεξεργαστές.Ενδεικτική θεωρία: Ενότητα 2.3.1 από το βιβλίο "Εισαγωγή στον Παράλληλο Προγραμματισμό" του Peter S. Pacheco.
Δείτε επίσης: Intel Intrinsics Guide.
Υλικό εργαστηρίων ενότητας #3
- Διαφάνειες ενότητας (I).
- Template για χρήση εντολών SSE/AVX.
- Template μετροπρογραμμάτων: vectoradd-float.c, triad-float.c, threshold-clamp-float.c (και οι ενδεικτικές λύσεις: vectoradd-float-avx.c, triad-float-avx.c, threshold-clamp-float-avx-blendv.c).
- Διαφάνειες ενότητας (II).
- Παράδειγμα οριζόντιου αθροίσματος με εντολές AVX/SSE.
- Quiz: «Τι γίνεται εδώ»;
- Template μετροπρογραμμάτων: sum-float.c, pi-integral.c, mmult-float.c (και οι ενδεικτικές λύσεις: sum-float-avx.c, pi-integral-avx.c, mmult-float-avx.c).
Εργασία #1
- Εκφώνηση Εργασίας [Παράδοση: 6/4/26].
Ενότητα #4
Παραλληλισμός σε επίπεδο threads (TLP). Προγραμματισμός με POSIX Threads (pthreads).Ενδεικτική θεωρία: Ενότητες 4.1 - 4.2 από το βιβλίο "Εισαγωγή στον Παράλληλο Προγραμματισμό" του Peter S. Pacheco.
Υλικό εργαστηρίων ενότητας #4
- Διαφάνειες ενότητας (I).
- Υποδείγματα χρήσης pthreads: δημιουργία ενός thread, δημιουργία πολλών όμοιων threads, καταμερισμός εργασίας σε blocks.
- Template μετροπρογραμμάτων: triad-double.c, mmult-double.c.