mod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_counter
mod_vvisit_counterToday2
mod_vvisit_counterYesterday12
mod_vvisit_counterThis week40
mod_vvisit_counterLast week83
mod_vvisit_counterThis month229
mod_vvisit_counterLast month267
mod_vvisit_counterAll days23008

We have: 1 guests online
Your IP: 10.2.31.21
Mozilla 5.0, 
Today: Απρ 26, 2024

Πρόσφατα άρθρα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΖΙΚΑ ΠΑΡΑΛΛΗΛΩΝ ΕΠΕΞΕΡΓΑΣΤΩΝ - CUDA Programming

Αρχιτεκτονική CUDA

Η κάρτα γραφικών είναι ένας συνεπεξεργαστής με βασικό ρόλο την επεξεργασία των δεδομένων που θα καταλήξουν στην οθόνη μας (γραφικών). Επομένως, δεν    μπορεί να υπάρξει αυτόνομη από έναν κεντρικό επεξεργαστή.
Το GP2 είναι τεχνική χρήσης των καρτών γραφικών για υπολογισμούς σε εφαρμογές που παραδοσιακά γίνονταν σε κανονικούς επεξεργαστές. Εμάς θα μας απασχολήσει μόνο η υλοποίηση της NVIDIA, η αρχιτεκτονική CUDA με την γλώσσα CUDA/C, που είναι η πιο διαδεδομένη και με τις περισσότερες δυνατότητες.
Το όνομα CUDA είναι ακρώνυμο για την ονομασία Compute Unified Device Architecture. Αυτή η αρχιτεκτονική μπορεί να βρεθεί σε όλες τις τρεις τελευταίες γενεές καρτών γραφικών της εταιρίας NVIDIA. Υπάρχει αντίστοιχη αρχιτεκτονική και για τις κάρτες γραφικών ATI. Ουσιαστικά δεν υπάρχουν μεγάλες διαφορές στην αρχιτεκτονική.

Με τον όρο CUDA, η Nvidia αναφέρεται σε μία αρχιτεκτονική παράλληλου computing (Compute Unified Device Architecture) η οποία έχει ως στόχο να εκμεταλλευθεί την εξαιρετική δύναμη των επεξεργαστών γραφικών της εταιρείας, για εργασίες που δεν σχετίζονται με την απεικόνιση γραφικών.


Σε πιο τεχνικό επίπεδο, θα λέγαμε ότι η αρχιτεκτονική CUDA αποτελεί μία μικρή επέκταση της γλώσσας C, βάσει της οποίας οι προγραμματιστές αποκτούν πρόσβαση στις δυνατότητες της κάρτας γραφικών και έτσι μπορούν να εκμεταλλευθούν την ισχύ της για την επίλυση διαφόρων προβλημάτων, συνήθως επιστημονικής φύσης. Αξίζει να σημειωθεί ότι η Nvidia δίνει τη δυνατότητα στους προγραμματιστές να εκμεταλλευθούν παράλληλα και τον κεντρικό επεξεργαστή του συστήματος (όπως γίνεται άλλωστε με κάθε γλώσσα προγραμματισμού) και έτσι να μπορούν να μοιράσουν τον φόρτο εργασίας του προγράμματός τους, τόσο στη CPU (Central Processing Unit), όσο και στη GPU (Graphics Processing Unit).


Τι είδους εφαρμογές όμως είναι αυτές που θα μπορούν να εκμεταλλευτούν τη χρήση της αρχιτεκτονικής CUDA αλλά και της ισχύος των chips που φιλοξενούνται στις αντίστοιχες κάρτες γραφικών; Μπορείτε να πάρετε μία πρώτη γεύση στο site, αλλά σε γενικές γραμμές οι εν λόγω εφαρμογές έχουν επιστημονικό χαρακτήρα και απαιτούν πολύ μεγάλη επεξεργαστική ισχύ. Για παράδειγμα, η ανάλυση πρωτεϊνών στα αμινοξέα από τα οποία αποτελούνται, ο υπολογισμός καιρικών φαινομένων, η κίνηση υγρών, η ανάλυση χρηματιστηριακών συναλλαγών, οι προσομοιώσεις του ανθρώπινου εγκεφάλου, η κίνηση ουράνιων σωμάτων κ.λπ. είναι μερικές από τις περιπτώσεις στις οποίες η αρχιτεκτονική CUDA μπορεί να βρει εφαρμογή.

Θα πρέπει να σημειώσουμε πάντως, ότι είναι πολύ διαφορετικό το να δημιουργήσει κανείς μία εφαρμογή με τη βοήθεια της αρχιτεκτονικής CUDA, και πολύ διαφορετικό με το απλά να συμμετάσχει σε ένα CUDA project. Στην πρώτη περίπτωση θα πρέπει να διαθέτει αυξημένες γνώσεις προγραμματισμού καθώς φυσικά και αντίστοιχες γνώσεις επί του αντικειμένου που θέλει να μελετήσει, ενώ στη δεύτερη περίπτωση χρειάζεται απλά την κατάλληλη εφαρμογή και ένα σύστημα με κάρτα γραφικών που είναι συμβατή με την αρχιτεκτονική CUDA.

Εάν θέλετε να "κολυμπήσετε στα βαθιά" μπορείτε να χρησιμοποιήσετε και εσείς την αρχιτεκτονική της Nvidia (τα αντίστοιχα εργαλεία παρέχονται δωρεάν), και τα τέσσερα βασικά βήματα που θα πρέπει να κάνετε είναι τα εξής:

1. Βεβαιωθείτε ότι διαθέτετε κάρτα γραφικών που υποστηρίζει CUDA. Οι περισσότερες νέες κάρτες της Nvidia είναι συμβατές (σειρές 8, 9 και     200).
2. Κατεβάστε στον υπολογιστή σας το αντίστοιχο software CUDA.
3. Εγκαταστήστε τους drivers για XP ή Vista εφόσον δεν το έχετε ήδη κάνει (Nvidia driver με υποστήριξη για CUDA).
4. Εγκαταστήστε το CUDA software.

Αξίζει να σημειώσουμε ότι μπορείτε να αναπτύξετε μία εφαρμογή CUDA ακόμη και αν δεν διαθέτετε αντίστοιχη κάρτα γραφικών, χρησιμοποιώντας τον ενσωματωμένο προσομειωτή που παρέχει το πακέτο της Nvidia. Βέβαια, σε μία τέτοια περίπτωση, η απόδοση της εφαρμογής θα είναι εξαιρετικά περιορισμένη.


CUDA PROGRAMMING