Design and implementation of image processing algorithms on embedded CPU-GPU-SoC devices - Ορούτζογλου, Ιωάννης (Εθνικό Μετσόβιο Πολυτεχνείο. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Τομέας Τεχνολογίας Πληροφορικής και Υπολογιστών. Εργαστήριο Μικροϋπολογιστών και Ψηφιακών Συστημάτων VLSI, 2018)
Σήμερα η συνεχής πρόοδος στην τεχνολογία έχει οδηγήσει στην ανάπτυξη πιο πολύπλοκων και υπολογιστικά απαιτητικών αλγορίθμων επεξεργασίας εικόνας. Πολλοί από αυτούς τους αλγόριθμους έχουν υιοθετηθεί σε ενσωματωμένα συστήματα τα οποία στοχεύουν σε μια ποικιλία εφαρμογών, όπως η αυτοκινητοβιομηχανία, 3D πλοήγηση, η επιτήρηση, κλπ. Ωστόσο, σε ενσωματωμένα συστήματα πραγματικού χρόνου, όπου η καθυστέρηρη μεταφοράς δεδομένων και η κατανάλωση ισχύος διαδραματίζουν σημαντικό ρόλο, εφαρμογές λογισμικού προσανατολισμένες να εκτελούνται σε επεξεργαστές γενικής χρήσης δεν μπορούν να προσφέρουν ικανοποιητικές λύσεις. Σκοπός της παρούσας διπλωματικής εργασίας είναι ο σχεδιασμός ενός συστήματος επεξεργασίας εικόνας για ενσωματωμένες εφαρμογές, η υλοποίησή του σε Σύστημα-σε-Ψηφίδα και η αξιολόγησή του. Ως εφαρμογή επιλέχθηκε η ανίχνευση γωνιών με τη χρήση του αλγορίθμου Harris σε σύστημα πραγματικού χρόνου διαβάζοντας την είσοδό από την camera. Η επιτάχυνση του αλγορίθμου Harris - Corner Detector επιτυγχάνεται στην πλατφόρμα Tegra X1 CPU-GPU-SoC με χρήση της γλώσσας CUDA C. Ερευνήσαμε διαφορετικούς τρόπους επικοινωνίας μεταξύ CPU και GPU καθώς και προγραμματιστικές τεχνικές στη GPU με σκοπό την καλύτερη απόδοση όσον αφορά τον χρόνο εκτέλεσης της εφαρμογής αλλα και την κατανάλωση ενέργειας. Πιο συγκεκριμένα, ερευνήσαμε τεχνικές με χρήση της κοινής μνήμης της GPU, shared memory, της constant αλλά και της texture μνήμης. Τέλος, καθοριστική και πιο σημαντική για την επιτάχυνση της εφαρμογής ήταν η τεχνική της διαχωριστικότητας (separability), με την οποία οι δισδιάστατες συνελίξεις της εικόνας εκτελούνται ως δύο ξεχωριστές μονοδιάστατες συνελίξεις, πράγμα που βελτιώνει σημαντικά την απόδοση του συστήματος. Τα πειράματα της τελικής υλοποίησης δείχνουν κέρδος μέχρι ×73 συγκριτικά με την αρχική υλοποίηση της εφαρμογής σε έναν επεξεργαστή ARM Cortex A57. ΄Ετσι, μπορούμε να υλοποιήσουμε την εφαρμογή αυτή σε σύστημα πραγματικού χρόνου, διαβάζοντας την είσοδό μας απο την camera,χωρίς να παρατηρείται καθυστέρηση στα frames. Τέλος, στοχεύουμε στη σύγκριση μεταξύ των CPU-GPU και CPU-FPGA συνδυασμών,προκειμένου να αποφανθούμε για την πιο αποδοτική πλατφόρμα που μπορεί να υποστηρίξει την εφαρμογή αυτή.