Οι GPUs έχουν γίνει πλέον κυρίαρχες στον τομέα της υπολογιστικής τεχνολογίας. Η
καταλληλότητα τους και η μεγάλη ικανότητα παραλληλοποίησης που προσφέρουν τις έχουν
καταστήσει σημαντικότατους υπολογιστικούς πόρους.
Κύρια εφαρμογή τους είναι σε επιστημονικές εφαρμογές, που από μόνες τους έχουν
τεράστιες ανάγκες για υπολογιστική ισχύ αλλά και μεγάλες δυνατότητες παραλληλοποίησης.
Για το σκοπό αυτό έχουν δημιουργηθεί πλατφόρμες που να υποστηρίζουν το λεγόμενο
General Purpose Graphics Processing (GPGPU), που επιτρέπει πλέον στην GPU να εκτελεί
υπολογισμούς σε εφαρμογές γενικότερου σκοπού, σε αντίθεση μέχρι τώρα που ειδικευόταν
σε γραφικές εφαρμογές. Να σημειωθεί εδώ ότι σε καμία περίπτωση η GPU δεν αντικαθιστά
την CPU. Αρχιτεκτονικοί λόγοι την περιορίζουν από το να χρησιμοποιηθεί ως η κύρια
μονάδα επεξεργασίας ενός συστήματος. Αυτό που κάνει είναι απλώς να επιταχύνει
συγκεκριμένες εφαρμογές της CPU.
Η ανάγκη για υπολογιστική ισχύ είναι πλέον τόσο μεγάλη, ώστε κατασκευάζονται ολόκληρες
συστοιχίες (clusters) υπολογιστών βασισμένες σε GPUs (GPU Clusters). Προφανώς
χρειάζεται ειδικό Hardware , αλλά και λογισμικό , για τη σωστή διαχείριση ενός τέτοιου
cluster. Για το μεν Hardware υπάρχουν εταιρείες που κατασκευάζουν ισχυρούς επεξεργαστές
γραφικών και εξοπλίζουν τα datacenters για το σκοπό αυτό. Για το δε software, απαιτούνται
κατάλληλα συστήματα διαχείρισης ώστε να εκμεταλλεύονται όσο το δυνατόν περισσότερο
την επεξεργαστική ισχύ των GPUs στις συστοιχίες υπολογιστών. Το πρόβλημα είναι ότι η
διαθεσιμότητα GPUs στους κόμβους των συστοιχιών αυτών είναι σχεδόν πάντα περιορισμένη
λόγω του κόστους.
Η παρούσα διπλωματική παρουσιάζει το σύστημα rGPU, ένα σύστημα διαχείρισης του
cluster το οποίο αναλαμβάνει την διαφανή εκτέλεση προγραμμάτων επιταχυμένων από GPUs
σε κόμβους οι οποίοι δεν τις διαθέτουν. Αρχικά γίνεται μια εκτενής ανασκόπηση της
βιβλιογραφίας πάνω στον συγκεκριμένο τομέα, έπειτα παρουσιάζεται το προτεινόμενο
σύστημα, περιγράφεται αναλυτικά η σχεδίαση και η υλοποίηση του και τέλος αξιολογείται με
βάση συγκεκριμένα σενάρια χρήσης.
GPUs have become a dominant feature in the field of computer technology. Their always
growing scalability and computational power are beginning to classify them as first-class
computing resources. Their main application is in the field of science, where applications
need huge processing capabilities and offer a huge level of parallelization.
For this purpose, many platforms have been created to support the so-called General Purpose
GPU Computing (GPGPU), that enables graphic processors to carry out general purpose
calculations, as opposed to the past when they were only used for graphics rendering.
However, in no way can the GPU fully replace the CPU. The GPU is a co-processor that
accelerates specific parts of a program and architectural reasons prevent it from being used as
the primary processing unit of a system.
This need for computational power is so great that GPUs are being installed in High
Performance Clusters and Supercomputers. Of course, special hardware, software and
technical expertise are required in order to fully utilize these co-processors. As far as
hardware is concerned there are many companies that manufacture these powerful special
processors. As for the software, apart from the programming tools needed to utilize the GPUs,
complex cluster management systems are needed in order to co-ordinate the processing. The
problem so far is that, because of the cost, the availability of GPUs in High Performance
clusters is limited.
The purpose of this thesis is to introduce a new cluster management system, the purpose of
which is to utilize the GPUs in the cluster as much as possible. For this purpose it uses an
already developed and optimized system called rCUDA, that enables the remote execution of
CUDA programs from nodes not equipped with a GPU. First, an extensive review of the
state-of-the-art methods in parallel processing is provided and then the new system is being
proposed along with detailed information about its architecture, its implementation and its
evaluation process.