Το έργο με τίτλο Μοντελοποίηση και σχεδίαση του αλγορίθμου “Projected Gauss-Seidel” σε FPGA από τον/τους δημιουργό/ούς Toupas Petros διατίθεται με την άδεια Creative Commons Αναφορά Δημιουργού 4.0 Διεθνές
Βιβλιογραφική Αναφορά
Petros Toupas, "Modeling and design of “Projected Gauss-Seidel” algorithm in FPGA", Diploma Work, School of Electrical and Computer Engineering, Technical University of Crete, Chania, Greece, 2018
https://doi.org/10.26233/heallink.tuc.79074
Τα τελευταία χρόνια, οι physics engines (μηχανές φυσικής) χρησιμοποιούνται ευρέως στη βιομηχανία των βιντεοπαιχνιδιών, φυσικών προσομοιώσεων και ταινιών. Ο κύριος στόχος τους είναι η προσομοίωση των κινήσεων αντικειμένων που υπακούν σε φυσικούς νόμους του πραγματικού κόσμου. Η είσοδος σε μια physics engine είναι ένα σύνολο αντικειμένων (rigid bodies), μαζί με τις ιδιότητες που τα διέπουν και ένα σύνολο δυνάμεων που ενεργούν σε αυτά τα σώματα. Rigid bodies είναι αντικείμενα που δεν παραμορφώνονται όταν συγκρούονται και rigid body dynamics είναι η μελέτη της κίνησης των rigid bodies. Αυτή η είσοδος επεξεργάζεται με την εκτέλεση ενός αριθμού βημάτων προσομοίωσης που παράγουν τις ενημερωμένες ιδιότητες για κάθε αντικείμενο στην έξοδο. Η πολυπλοκότητα στα σύγχρονα παιχνίδια αυξάνεται ραγδαία το ίδιο και το υπολογιστικό κόστος της προσομοίωσής που πρέπει να επιτύχουν οι physics engines. Η χρήση των GPGPU (General-Purpose computing on Graphics Processing Units) μπορεί να μας βοηθήσει να ξεπεράσουμε την ανάγκη για υψηλές υπολογιστικές απαιτήσεις αξιοποιώντας την παράλληλη επεξεργασία που η GPU μπορεί να παρέχει. Σε αυτή τη εργασία, πρόκειται να χρησιμοποιήσουμε FPGA αντί GPU καθώς μπορούμε ακόμα να εκμεταλλευτούμε την παράλληλη επεξεργασία και επιπλέον μπορούμε να είμαστε πολύ πιο αποδοτικοί ενεργειακά σε σύγκριση με τη GPU. Η μηχανή φυσικής που εργαζόμαστε στην εργασία αυτή είναι, η Bullet η οποία έχει ήδη εφαρμόσει μια σκηνή παιχνιδιού με μεγάλο υπολογιστικό κόστος και με πολλά άκαμπτα σώματα (38880) σε GPU κάνοντας χρήση της OpenCL βιβλιοθήκης. Υλοποιώντας την ίδια σκηνή παιχνιδιού στην Xilinx UltraScale + ZCU102 με τη χρήση του Vivado HLS και C ++, επιτυγχάνουμε 7.65x έως 9.65x latency speedup σε σχέση με την CPU. Αυτοί οι αριθμοί αλλάζουν σε 1.96x εως 2.48x latency speedup επιτυγχάνοντας 50x ενεργειακή αποδοτικότητα σε σύγκριση με την GPU (NVIDIA GeForce GTX 980).