Να υλοποιήσετε σε CUDA αλγόριθμο αναζήτησης και εύρεσης του πιο κοντινού γείτονα για κάθε σημείο q ∈ Q, ανάμεσα σε σημεία c ∈ C. Τα σύνολα σημείων Q και C περιέχουν NQ και NC σημεία αντίστοιχα.
Η αναζήτηση για τον γείτονα ενός σημείου q περιορίζεται σε ένα υποσύνολό του C που σίγουρα περιλαβάνει τους κοντινότερους γείτονες του q, τους βασικούς υποψήφιους (primary candidates), S. Η εύρεση των βασικών υποψηφίων, για κάθε q, γίνεται με ένα πλέγμα κουτιών ίδιου μεγέθους που κατακερματίζει το χώρο αναζήτησης. Κάθε κόμβος του πλέγματος είναι ένα κουτί που περικλείει διακριτά υποσύνολα των Q και C που βρίσκονται εντός των γεωμετρικών του ορίων. Οι βασικοί υποψήφιοι κάθε q είναι οι υποψήφιοι που ανήκουν στο ίδιο κουτί.
Αν o πιο κοντινός βασικός υποψήφιος σημείου q απέχει περισσότερο από την απόσταση του σημείου q από τα όρια του κουτιού, τότε η αναζήτηση θα πρέπει να επεκταθεί και στα κουτιά που εφάπτονται στο κουτί που ανήκει το q, διαφορετικά τότε είναι ο κοντινότερος γείτονας.
Το πρόγραμμά σας θα πρέπει να:
- Δημιουργεί τα δύο σύνολα m και n σημείων, Q και C, που ακολουθούν ομοιόμορφη κατανομή στον [0, 1).
- Κατακερματίζει το χώρο αναζήτησης, εφαρμόζοντας ένα πλέγμα κουτιών και αντιστοιχεί όλα τα σημεία στα κουτιά που τα περικλείουν. Το πλέγμα είναι διαστάσεων [d × d × d].
- Βρίσκει τα κουτιά του πλέγματος, των οποίων τα περιεχόμενα συνθέτουν το σύνολο S, για κάθε ερώτημα q ∈ Q.
- Πραγματοποιεί αναζήτηση στα σύνολα S.
- Ελέγχει την ορθότητα των αποτελεσμάτων.
- Δουλεύει σωστά για: NC = NQ = 2[21:25], d = 2[2:6].
Χρησιμοποιήστε πολλαπλά νήματα και shared memory για να αυξήσετε την ταχύτητα του προγράμματος σας.
Παραδώστε:
- Αναφορά 3−4 σελίδων που να περιγράφει τη μέθοδο του παραλληλισμού καθώς και τους ελέγχους ορθότητας που χρησιμοποιήσατε.
- Σχόλια και συμπεράσματα για την ταχύτητα υπολογισμών συγκριτικά με την σειριακή έκδοση του αλγορίθμου, για το εύρος παραμέτρων που δουλεύει σωστά ο παράλληλος αλγόριθμος.
- Τον κώδικα του προγράμματος. Δεοντολογία: Εάν χρησιμοποιήσετε κώδικες από το διαδίκτυο ή αλλού, να αναφέρετε την πηγή και τις αλλαγές που κάνατε. Σημείωση: Ομαδικές εργασίες γίνονται δεκτές. Ο μέγιστος αριθμός φοιτητών που μπορούν να συνερ- γαστούν σε μία ομάδα είναι δύο, αρκεί κανένα ζευγάρι να μην έχει συνεργαστεί σε προηγούμενη εργασία.
Ημερομηνία παράδοσης: 13 Ιανουαρίου 2019.