Παράλληλη Επεξεργασία — Εξέταση Φεβρουαρίου, σειρά Α (Ενότητα 2, 7 ερωτήσεις)¶
Μεταγραφή από τις φωτογραφίες ερωτήσεων 1–7 της Ενότητας 2 (σειρά Α).
unknown (10).png¶
Ερώτηση 1 / 7 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 0.40 βαθμοί)
Ενότητα 2 (POSIX Threads / OpenMP)
Η οδηγία #pragma omp parallel του OpenMP:
- [ ] Δημιουργεί ένα πλήθος νημάτων και διαμοιράζει το φόρτο εργασίας μεταξύ των νημάτων αυτών
- [ ] Δημιουργεί ένα πλήθος νημάτων, τα οποία όλα εκτελούν τον κώδικα της παράλληλης περιοχής
- [ ] Δημιουργεί ένα πλήθος νημάτων εκ των οποίων ένα μόνο ξεκινάει την εκτέλεση του κώδικα της παράλληλης περιοχής
- [ ] Δημιουργεί το αρχικό νήμα της παράλληλης περιοχής
unknown (11).png¶
Ερώτηση 2 / 7 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 0.40 βαθμοί)
Ενότητα 2 (POSIX Threads / OpenMP)
Ένα παράλληλο πρόγραμμα OpenMP χρησιμοποιεί μια διπλά διασυνδεδεμένη λίστα. Για να υλοποιήσετε μια λειτουργία εισαγωγής νέου στοιχείου στη λίστα θα χρησιμοποιήσετε:
- [ ] Την οδηγία #pragma omp atomic
- [ ] Την οδηγία #pragma omp critical
- [ ] Την οδηγία #pragma omp flush
- [ ] Την οδηγία #pragma omp reduction
unknown (12).png¶
Ερώτηση 3 / 7 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 0.40 βαθμοί)
Ενότητα 2 (POSIX Threads / OpenMP)
Για την οδηγία #pragma omp for schedule(dynamic, chunk) ισχύει πως:
- [ ] Κάθε νήμα της παράλληλης περιοχής αναλαμβάνει να εκτελέσει chunk συνεχόμενες επαναλήψεις του βρόχου for που ακολουθεί, χωρίς να είναι εκ των προτέρων γνωστό ποιο νήμα θα αναλάβει ποιες ακριβώς επαναλήψεις
- [ ] Κάθε νήμα της παράλληλης περιοχής αναλαμβάνει να εκτελέσει chunk τυχαίες επαναλήψεις του βρόχου for που ακολουθεί, χωρίς να είναι εκ των προτέρων γνωστό ποιο νήμα θα αναλάβει ποιες ακριβώς επαναλήψεις. Η υλοποίηση του OpenMP διασφαλίζει πως δεν θα εκτελεστεί 2 φορές καμία επανάληψη
- [ ] Κάθε φορά που ένα νήμα της παράλληλης περιοχής δεν έχει δουλειά να εκτελέσει αναλαμβάνει να εκτελέσει τις επόμενες chunk συνεχόμενες επαναλήψεις του βρόχου for που ακολουθεί, έως ότου ολοκληρωθούν όλες οι επαναλήψεις
- [ ] Κάθε φορά που ένα νήμα της παράλληλης περιοχής δεν έχει δουλειά να εκτελέσει αναλαμβάνει να εκτελέσει chunk τυχαίες επαναλήψεις του βρόχου for που ακολουθεί, έως ότου ολοκληρωθούν όλες οι επαναλήψεις. Η υλοποίηση του OpenMP διασφαλίζει πως δεν θα εκτελεστεί 2 φορές καμία επανάληψη
unknown (13).png¶
Ερώτηση 4 / 7 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 0.40 βαθμοί)
Ενότητα 2 (POSIX Threads / OpenMP)
Μια υλοποίηση του προτύπου των POSIX Threads επιτρέπεται να υλοποιήσει τα νήματα:
- [ ] Μόνο ως νήματα επιπέδου πυρήνα
- [ ] Μόνο ως νήματα επιπέδου χρήστη
- [ ] Είτε ως νήματα επιπέδου χρήστη είτε ως νήματα επιπέδου πυρήνα
- [ ] Μόνο ως έργα (tasks)
unknown (14).png¶
Ερώτηση 5 / 7 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 0.40 βαθμοί)
Ενότητα 2 (POSIX Threads / OpenMP)
Η οδηγία #pragma omp taskwait
- [ ] Είναι η αντίστοιχη οδηγία για τα έργα (tasks) της #pragma omp barrier για τα νήματα
- [ ] Υποχρεώνει το έργο (task) που την συναντάει να περιμένει για το καθορισμένο χρονικό διάστημα (σε δευτερόλεπτα)
- [ ] Υποχρεώνει ένα έργο που δημιούργησε νέα έργα να περιμένει την ολοκλήρωση των έργων αυτών
- [ ] Δημιουργεί ένα έργο (task) που αναμένει για εντολές συγχρονισμού από άλλα έργα
unknown (15).png¶
Ερώτηση 6 / 7 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 0.40 βαθμοί)
Ενότητα 2 (POSIX Threads / OpenMP)
Ποιο από τα παρακάτω αποτελεί το μοντέλο εκτέλεσης του προγραμματιστικού μοντέλου OpenMP;
- [ ] fork-connect
- [ ] disjoin-join
- [ ] disjoin-connect
- [ ] fork-join
unknown (16).png¶
Ερώτηση 7 / 7 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 0.40 βαθμοί)
Ενότητα 2 (POSIX Threads / OpenMP)
Ποιο από τα παρακάτω δεν είναι τμήμα του προγραμματιστικού μοντέλου OpenMP;
- [ ] Μεταγλωττιστής
- [ ] Οδηγίες προς τον μεταγλωττιστή
- [ ] Βιβλιοθήκη χρόνου εκτέλεσης
- [ ] Μεταβλητές συστήματος
Λύσεις (⚪ AI, μη επαληθευμένο)
Κατάσταση: ⚪ AI, μη επαληθευμένο Πηγή: λύσεις AI (deepseek-flash), ανεξάρτητη επανάληψη και αντιπαραβολή· καμία δεν έχει ελεγχθεί από άνθρωπο
Προσοχή
Λύση από AI — ελέγξτε την· δεν έχει επαληθευτεί από άνθρωπο. Η ένδειξη «δύο λύσεις συμφωνούν» δεν σημαίνει ότι η απάντηση είναι σωστή.
AI λύσεις — 2021-e¶
Οι λύσεις γράφτηκαν από μοντέλα AI και δεν έχουν ελεγχθεί από άνθρωπο. Η αρίθμηση ακολουθεί το αρχείο θεμάτων.
Θέμα 2 (Ερωτήσεις 1–7, σειρά Α)¶
Αξιοπιστία: μία λύση AI, δεν έχει αντιπαραβληθεί με δεύτερη · εμπιστοσύνη λύτη: υψηλή
Ερώτηση 1 — #pragma omp parallel
Σωστή επιλογή: 2η — «Δημιουργεί ένα πλήθος νημάτων, τα οποία όλα εκτελούν τον κώδικα της παράλληλης περιοχής».
Αιτιολόγηση: Η οδηγία parallel είναι η ίδια η παράλληλη περιοχή: με το «άνοιγμά» της (fork) κάθε νήμα της ομάδας εκτελεί το block που ακολουθεί. Ο καταμερισμός επαναλήψεων βρόχου γίνεται με omp for, όχι με parallel.
Ερώτηση 2 — Εισαγωγή κόμβου σε διπλά διασυνδεδεμένη λίστα
Σωστή επιλογή: 2η — #pragma omp critical.
Αιτιολόγηση: Η εισαγωγή απαιτεί πολλαπλές ενημερώσεις δεικτών (next/prev γειτόνων και νέου κόμβου) που πρέπει να γίνουν αδιαίρετα ως σύνολο· η atomic καλύπτει μόνο μία απλή εντολή (π.χ. x++), ενώ flush/reduction δεν παρέχουν αμοιβαίο αποκλεισμό για κρίσιμο τμήμα.
Ερώτηση 3 — schedule(dynamic, chunk)
Σωστή επιλογή: 3η — «Κάθε φορά που ένα νήμα δεν έχει δουλειά, αναλαμβάνει τις επόμενες chunk συνεχόμενες επαναλήψεις, έως ότου ολοκληρωθούν όλες».
Αιτιολόγηση: Το dynamic δίνει δυναμικά (κατά ζήτηση, σε blocks των chunk διαδοχικών επαναλήψεων) τμήματα σε όποιο νήμα τελειώσει πρώτο· οι επαναλήψεις δεν είναι «τυχαίες» και κάθε μία εκτελείται ακριβώς μία φορά.
Ερώτηση 4 — Υλοποίηση νημάτων POSIX Threads Σωστή επιλογή: 3η — «Είτε ως νήματα επιπέδου χρήστη είτε ως νήματα επιπέδου πυρήνα». Αιτιολόγηση: Το πρότυπο POSIX Threads (pthreads) είναι API/προδιαγραφή διεπαφής και δεν επιβάλλει μοντέλο υλοποίησης· η υλοποίηση μπορεί να τα αποδώσει σε user-level ή kernel-level νήματα (ή συνδυασμό, π.χ. N:M).
Ερώτηση 5 — #pragma omp taskwait
Σωστή επιλογή: 3η — «Υποχρεώνει ένα έργο που δημιούργησε νέα έργα να περιμένει την ολοκλήρωση των έργων αυτών».
Αιτιολόγηση: Το taskwait είναι σημείο αναμονής για τα θυγατρικά tasks του τρέχοντος task (δεν είναι barrier για όλα τα νήματα, ούτε χρονικό timeout).
Ερώτηση 6 — Μοντέλο εκτέλεσης OpenMP
Σωστή επιλογή: 4η — fork-join.
Αιτιολόγηση: Το κύριο νήμα (master) δημιουργεί ομάδα νημάτων (fork) στην αρχή κάθε παράλληλης περιοχής και τα νήματα συγχρονίζονται/τερματίζονται στο τέλος της (join).
Ερώτηση 7 — Τι δεν είναι τμήμα του προγραμματιστικού μοντέλου OpenMP Σωστή επιλογή: 4η — «Μεταβλητές συστήματος». Αιτιολόγηση: Το μοντέλο OpenMP αποτελείται από οδηγίες προς τον μεταγλωττιστή, ρουτίνες βιβλιοθήκης χρόνου εκτέλεσης και μεταβλητές περιβάλλοντος (environment variables)· «μεταβλητές συστήματος» δεν ανήκουν σε αυτά (ο μεταγλωττιστής είναι το εργαλείο που τις υποστηρίζει).