title: Μοντελοποίηση και σχεδίαση του αλγορίθμου “Projected Gauss-Seidel” σε FPGA
title: Modeling and design of “Projected Gauss-Seidel” algorithm in FPGA
Creators: name: Τουπας Πετρος
Publisher: name: Technical University of Crete
Year: 2018

description: Over the past years, physics engines were widely used in the industry of video games, computer graphics, and films. Their main goal is to simulate the motions of objects as if they were obeying real-world physics rules. The input to a physics engine is a collection of objects (rigid bodies) with their properties and a collection of forces acting on those bodies. Rigid bodies are objects that do not deform when they collide and rigid body dynamics is the study of the motion of one or several rigid bodies. This input is being processed by performing a certain number of simulation steps which produce the updated properties for each object in the output. The complexity of the modern games is rapidly increasing, so does the computational cost of the simulation the physics engines must accomplish. The use of GPGPU (General-Purpose computing on Graphics Processing Units) can help us overcome the need for high computational requirements by exploiting the parallel processing a GPU can provide. In this thesis, we are going to use FPGA instead of GPU since we can still exploit the parallel processing and furthermore we can achieve much better energy efficiency in comparison with GPU. The physics engine we are working on is Bullet which has already implemented a high computational cost
game scene with many rigid bodies (38880) in GPU with the use of the OpenCL library. Our implementation of the same game scene in Xilinx UltraScale+ ZCU102 with the use of Vivado HLS and C++, achieving 7.65x to 9.65x speedups over CPU, while these numbers change to 1.96x to 2.48x speedups and 50x energy efficiency when compared to GPU (NVIDIA GeForce GTX 980).
description: Τα τελευταία χρόνια, οι 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).