Πηγή υπολογιστή U SM. Πού οδηγεί cuda: πρακτική εφαρμογή της τεχνολογίας gpgpu - ο καλύτερος εξοπλισμός Εφαρμογές που τρέχουν σε cuda

Για δεκαετίες, ισχύει ο νόμος του Moore, ο οποίος δηλώνει ότι κάθε δύο χρόνια ο αριθμός των τρανζίστορ σε ένα τσιπ θα διπλασιάζεται. Ωστόσο, αυτό ήταν πίσω στο 1965 και τα τελευταία 5 χρόνια η ιδέα των φυσικών πολυπύρηνων σε επεξεργαστές κατηγορίας καταναλωτών έχει αρχίσει να αναπτύσσεται γρήγορα: το 2005, η Intel παρουσίασε το Pentium D και η AMD παρουσίασε το Athlon X2. Τότε, οι εφαρμογές που χρησιμοποιούν 2 πυρήνες μπορούσαν να μετρηθούν στα δάχτυλα του ενός χεριού. Ωστόσο, η επόμενη γενιά επεξεργαστών Intel, που έκανε επανάσταση, είχε ακριβώς 2 φυσικούς πυρήνες. Επιπλέον, η σειρά Quad εμφανίστηκε τον Ιανουάριο του 2007, οπότε και ο ίδιος ο Μουρ παραδέχτηκε ότι ο νόμος του σύντομα θα έπαυε να ισχύει.

Τώρα τι? Οι επεξεργαστές διπλού πυρήνα ακόμη και σε οικονομικά συστήματα γραφείου και 4 φυσικοί πυρήνες έχουν γίνει ο κανόνας, και αυτό συμβαίνει σε μόλις 2-3 χρόνια. Η συχνότητα των επεξεργαστών δεν αυξάνεται, αλλά η αρχιτεκτονική βελτιώνεται, ο αριθμός των φυσικών και εικονικών πυρήνων αυξάνεται. Ωστόσο, η ιδέα της χρήσης προσαρμογέων βίντεο εξοπλισμένων με δεκάδες ή και εκατοντάδες υπολογιστικές «μονάδες» υπάρχει εδώ και πολύ καιρό.

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

Πρώτον, λίγα λόγια για την ίδια την τεχνολογία και με τι χρησιμοποιείται. Επειδή Όταν γράφω ένα άρθρο, εστιάζω σε ένα ευρύ φάσμα αναγνωστών, γι' αυτό θα προσπαθήσω να το εξηγήσω σε μια προσιτή γλώσσα χωρίς περίπλοκους όρους και κάπως συνοπτικά.

CUDA(Αγγλικά: Compute Unified Device Architecture) είναι μια αρχιτεκτονική λογισμικού και υλικού που σας επιτρέπει να εκτελείτε υπολογισμούς χρησιμοποιώντας επεξεργαστές γραφικών NVIDIA που υποστηρίζουν την τεχνολογία GPGPU (τυχαίος υπολογισμός σε κάρτες βίντεο). Η αρχιτεκτονική CUDA εμφανίστηκε για πρώτη φορά στην αγορά με την κυκλοφορία του chip NVIDIA όγδοης γενιάς - G80 και υπάρχει σε όλες τις επόμενες σειρές τσιπ γραφικών που χρησιμοποιούνται στις οικογένειες επιταχυντών GeForce, Quadro και Tesla. (γ) Wikipedia.org

Οι εισερχόμενες ροές υποβάλλονται σε επεξεργασία ανεξάρτητα η μία από την άλλη, π.χ. παράλληλο.

Υπάρχει χωρισμός σε 3 επίπεδα:

Πλέγμα- πυρήνας. Περιέχει μια μονοδιάστατη/δύο/τρισδιάστατη σειρά μπλοκ.

ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ– περιέχει πολλά νήματα. Τα νήματα διαφορετικών μπλοκ δεν μπορούν να αλληλεπιδράσουν μεταξύ τους. Γιατί ήταν απαραίτητο να εισαχθούν μπλοκ; Κάθε μπλοκ είναι ουσιαστικά υπεύθυνο για τη δική του δευτερεύουσα εργασία. Για παράδειγμα, μια μεγάλη εικόνα (η οποία είναι μια μήτρα) μπορεί να χωριστεί σε πολλά μικρότερα μέρη (πίνακες) και να εργαστεί με κάθε μέρος της εικόνας παράλληλα.

Νήμα– ροή. Τα νήματα σε ένα μπλοκ μπορούν να αλληλεπιδράσουν είτε μέσω της κοινόχρηστης μνήμης, η οποία, παρεμπιπτόντως, είναι πολύ πιο γρήγορη από την καθολική μνήμη, είτε μέσω εργαλείων συγχρονισμού νημάτων.

Στημόνιείναι μια ένωση νημάτων που αλληλεπιδρούν μεταξύ τους, για όλες τις σύγχρονες GPU το μέγεθος Warp είναι 32. Ακολουθεί μισό στημόνι, που είναι το μισό στημόνι, γιατί Η πρόσβαση στη μνήμη πραγματοποιείται συνήθως χωριστά για το πρώτο και το δεύτερο μισό του στημονιού.

Όπως μπορείτε να δείτε, αυτή η αρχιτεκτονική είναι εξαιρετική για παραλληλισμό εργασιών. Και παρόλο που ο προγραμματισμός πραγματοποιείται στη γλώσσα C με ορισμένους περιορισμούς, στην πραγματικότητα δεν είναι όλα τόσο απλά, γιατί... δεν μπορούν όλα να παραλληλιστούν. Επίσης, δεν υπάρχουν τυπικές συναρτήσεις για τη δημιουργία τυχαίων αριθμών (ή αρχικοποίησης), όλα αυτά πρέπει να υλοποιηθούν ξεχωριστά. Και παρόλο που υπάρχουν πολλές έτοιμες επιλογές, τίποτα από αυτά δεν φέρνει χαρά. Η δυνατότητα χρήσης αναδρομής εμφανίστηκε σχετικά πρόσφατα.

Για λόγους σαφήνειας, γράφτηκε ένα πρόγραμμα μικρής κονσόλας (για την ελαχιστοποίηση του κώδικα) που εκτελεί λειτουργίες με δύο συστοιχίες τύπου float, δηλ. με μη ακέραιες τιμές. Για τους λόγους που αναφέρθηκαν παραπάνω, η προετοιμασία (πλήρωση του πίνακα με διάφορες αυθαίρετες τιμές) πραγματοποιήθηκε από την CPU. Στη συνέχεια, πραγματοποιήθηκαν 25 διαφορετικές λειτουργίες με τα αντίστοιχα στοιχεία από κάθε πίνακα, τα ενδιάμεσα αποτελέσματα γράφτηκαν στον τρίτο πίνακα. Το μέγεθος του πίνακα άλλαξε, τα αποτελέσματα είναι τα εξής:

Πραγματοποιήθηκαν συνολικά 4 δοκιμές:

1024 στοιχεία σε κάθε πίνακα:

Φαίνεται ξεκάθαρα ότι με τόσο μικρό αριθμό στοιχείων, ο παράλληλος υπολογισμός έχει μικρή χρησιμότητα, γιατί Οι ίδιοι οι υπολογισμοί είναι πολύ πιο γρήγοροι από την προετοιμασία τους.

4096 στοιχεία σε κάθε πίνακα:

Και τώρα μπορείτε να δείτε ότι η κάρτα βίντεο εκτελεί λειτουργίες σε συστοιχίες 3 φορές πιο γρήγορα από τον επεξεργαστή. Επιπλέον, ο χρόνος εκτέλεσης αυτής της δοκιμής στην κάρτα βίντεο δεν αυξήθηκε (μια ελαφρά μείωση του χρόνου μπορεί να αποδοθεί σε σφάλμα).

Υπάρχουν τώρα 12288 στοιχεία σε κάθε πίνακα:

Ο διαχωρισμός της κάρτας βίντεο έχει αυξηθεί κατά 2 φορές. Και πάλι, αξίζει να σημειωθεί ότι ο χρόνος εκτέλεσης στην κάρτα βίντεο έχει αυξηθεί
ασήμαντα, αλλά στον επεξεργαστή περισσότερες από 3 φορές, δηλ. ανάλογη με την πολυπλοκότητα της εργασίας.

Και η τελευταία δοκιμή είναι 36864 στοιχεία σε κάθε πίνακα:

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

Εάν συνεχίσετε να περιπλέκετε τους υπολογισμούς, η κάρτα βίντεο κερδίζει όλο και περισσότερο. Αν και το παράδειγμα είναι κάπως υπερβολικό, η συνολική κατάσταση φαίνεται ξεκάθαρα. Αλλά όπως προαναφέρθηκε, δεν μπορούν όλα να παραλληλιστούν. Για παράδειγμα, ο υπολογισμός του Pi. Υπάρχουν μόνο παραδείγματα γραμμένα με τη μέθοδο Monte Carlo, αλλά η ακρίβεια των υπολογισμών είναι 7 δεκαδικά ψηφία, δηλ. κανονικός πλωτήρας. Προκειμένου να αυξηθεί η ακρίβεια των υπολογισμών, απαιτείται μεγάλη αριθμητική, και εδώ δημιουργούνται προβλήματα, επειδή Είναι πολύ, πολύ δύσκολο να εφαρμοστεί αυτό αποτελεσματικά. Δεν μπορούσα να βρω παραδείγματα στο Διαδίκτυο που χρησιμοποιούν CUDA και υπολογίζουν το Pi με 1 εκατομμύριο δεκαδικά ψηφία. Έχουν γίνει προσπάθειες να γραφτεί μια τέτοια εφαρμογή, αλλά η απλούστερη και αποτελεσματικότερη μέθοδος για τον υπολογισμό του Pi είναι ο αλγόριθμος Brent-Salamin ή ο τύπος Gauss. Το γνωστό SuperPI πιθανότατα (κρίνοντας από την ταχύτητα λειτουργίας και τον αριθμό των επαναλήψεων) χρησιμοποιεί τον τύπο Gaussian. Και, αν κρίνουμε από
Λόγω του γεγονότος ότι το SuperPI είναι μονού νήματος, η έλλειψη παραδειγμάτων στο CUDA και η αποτυχία των προσπαθειών μου, είναι αδύνατο να παραλληλίσω αποτελεσματικά την καταμέτρηση Pi.

Παρεμπιπτόντως, μπορείτε να παρατηρήσετε πώς αυξάνεται το φορτίο στη GPU κατά τη διάρκεια των υπολογισμών και κατανέμεται επίσης η μνήμη.

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

Στη δοκιμή χρησιμοποιήθηκαν 3 διαφορετικά αρχεία βίντεο:

      *Η ιστορία της δημιουργίας της ταινίας Avatar - 1920x1080, MPEG4, h.264.
      *Σειρά "Lie to me" - 1280x720, MPEG4, h.264.
      *Σειρά "It's Always Sunny in Philadelphia" - 624x464, xvid.

Το κοντέινερ και το μέγεθος των δύο πρώτων αρχείων ήταν .mkv και 1,55 GB και το τελευταίο ήταν .avi και 272 MB.

Ας ξεκινήσουμε με ένα πολύ εντυπωσιακό και δημοφιλές προϊόν - Badaboom. Έκδοση που χρησιμοποιείται - 1.2.1.74 . Το κόστος του προγράμματος είναι $29.90 .

Η διεπαφή του προγράμματος είναι απλή και διαισθητική - στα αριστερά επιλέγουμε το αρχείο προέλευσης ή τον δίσκο και στα δεξιά - την απαιτούμενη συσκευή για την οποία θα κωδικοποιήσουμε. Υπάρχει επίσης μια λειτουργία χρήστη στην οποία οι παράμετροι ρυθμίζονται χειροκίνητα, κάτι που χρησιμοποιήσαμε.

Αρχικά, ας δούμε πόσο γρήγορα και αποτελεσματικά κωδικοποιείται το βίντεο «στο ίδιο», δηλ. ίδια ανάλυση και περίπου το ίδιο μέγεθος. Θα μετρήσουμε την ταχύτητα σε fps και όχι σε χρόνο που πέρασε - με αυτόν τον τρόπο είναι πιο βολικό να συγκρίνουμε και να υπολογίσουμε πόσο θα συμπιεστεί ένα βίντεο αυθαίρετης διάρκειας. Επειδή Σήμερα εξετάζουμε την «πράσινη» τεχνολογία, τότε τα γραφήματα θα είναι αντίστοιχα -)

Η ταχύτητα κωδικοποίησης εξαρτάται άμεσα από την ποιότητα, αυτό είναι προφανές. Αξίζει να σημειωθεί ότι η ανάλυση φωτός (ας το ονομάσουμε παραδοσιακά SD) δεν αποτελεί πρόβλημα για το Badaboom - η ταχύτητα κωδικοποίησης είναι 5,5 φορές υψηλότερη από την αρχική ταχύτητα καρέ βίντεο (24 fps). Και ακόμη και το βαρύ βίντεο 1080p μετατρέπεται από το πρόγραμμα σε πραγματικό χρόνο. Αξίζει να σημειωθεί ότι η ποιότητα του τελικού βίντεο είναι πολύ κοντά στο αρχικό υλικό βίντεο, δηλ. Το Badaboom κωδικοποιεί πολύ, πολύ αποτελεσματικά.

Αλλά συνήθως μεταφέρουν βίντεο σε χαμηλότερη ανάλυση, ας δούμε πώς είναι τα πράγματα σε αυτήν τη λειτουργία. Καθώς μειώθηκε η ανάλυση, μειώθηκε και ο ρυθμός μετάδοσης bit του βίντεο. Ήταν 9500 kbps για αρχείο εξόδου 1080p, 4100 kbps για 720p και 2400 kbps για 720x404. Η επιλογή έγινε με βάση μια λογική αναλογία μεγέθους/ποιότητας.

Δεν χρειάζονται σχόλια. Εάν κάνετε μια αντιγραφή από 720p σε κανονική ποιότητα SD, τότε η διακωδικοποίηση μιας ταινίας διάρκειας 2 ωρών θα διαρκέσει περίπου 30 λεπτά. Και ταυτόχρονα, το φορτίο του επεξεργαστή θα είναι ασήμαντο, μπορείτε να ασχοληθείτε με την επιχείρησή σας χωρίς να αισθάνεστε ενόχληση.

Τι γίνεται αν μετατρέψετε το βίντεο σε μορφή για φορητή συσκευή; Για να το κάνετε αυτό, επιλέξτε το προφίλ iPhone (bitrate 1 Mbit/s, 480x320) και δείτε την ταχύτητα κωδικοποίησης:

Χρειάζεται να πω κάτι; Μια δίωρη ταινία σε κανονική ποιότητα iPhone διακωδικοποιείται σε λιγότερο από 15 λεπτά. Με την ποιότητα HD είναι πιο δύσκολο, αλλά και πάλι πολύ γρήγορο. Το κύριο πράγμα είναι ότι η ποιότητα του βίντεο εξόδου παραμένει σε αρκετά υψηλό επίπεδο όταν προβάλλεται σε οθόνη τηλεφώνου.

Γενικά, οι εντυπώσεις από το Badaboom είναι θετικές, η ταχύτητα λειτουργίας είναι ευχάριστη και η διεπαφή απλή και σαφής. Όλα τα είδη σφαλμάτων σε προηγούμενες εκδόσεις (χρησιμοποίησα την beta το 2008) έχουν διορθωθεί. Εκτός από ένα πράγμα - η διαδρομή προς το αρχείο προέλευσης, καθώς και προς το φάκελο στον οποίο είναι αποθηκευμένο το τελικό βίντεο, δεν πρέπει να περιέχει ρωσικά γράμματα. Αλλά σε σύγκριση με τα πλεονεκτήματα του προγράμματος, αυτό το μειονέκτημα είναι ασήμαντο.

Επόμενο στη σειρά θα έχουμε Super LoiLoScope. Για την κανονική έκδοση ρωτάνε 3.280 ρούβλια, και για την έκδοση αφής, που υποστηρίζει έλεγχο αφής στα Windows 7, ζητάνε τόσα 4.440 ρούβλια. Ας προσπαθήσουμε να καταλάβουμε γιατί ο προγραμματιστής θέλει τέτοια χρήματα και γιατί το πρόγραμμα επεξεργασίας βίντεο χρειάζεται υποστήριξη πολλαπλής αφής. Τελευταία έκδοση που χρησιμοποιήθηκε - 1.8.3.3 .

Είναι αρκετά δύσκολο να περιγράψω τη διεπαφή του προγράμματος με λόγια, γι 'αυτό αποφάσισα να κάνω ένα σύντομο βίντεο. Θα πω αμέσως ότι, όπως όλοι οι μετατροπείς βίντεο για CUDA, η επιτάχυνση GPU υποστηρίζεται μόνο για έξοδο βίντεο σε MPEG4 με τον κωδικοποιητή h.264.

Κατά τη διάρκεια της κωδικοποίησης, το φορτίο του επεξεργαστή είναι 100%, αλλά αυτό δεν προκαλεί ενόχληση. Το πρόγραμμα περιήγησης και άλλες ελαφριές εφαρμογές δεν επιβραδύνουν.

Τώρα ας περάσουμε στην απόδοση. Αρχικά, όλα είναι ίδια με το Badaboom - μετατρέποντας το βίντεο σε παρόμοια ποιότητα.

Τα αποτελέσματα είναι πολύ καλύτερα από το Badaboom. Η ποιότητα είναι επίσης εξαιρετική, η διαφορά με το πρωτότυπο μπορεί να γίνει αντιληπτή μόνο με τη σύγκριση των πλαισίων σε ζευγάρια κάτω από ένα μεγεθυντικό φακό.

Ουάου, εδώ το LoiloScope ξεπερνά το Badaboom κατά 2,5 φορές. Ταυτόχρονα, μπορείτε εύκολα να κόψετε και να κωδικοποιήσετε ένα άλλο βίντεο παράλληλα, να διαβάσετε ειδήσεις, ακόμη και να παρακολουθήσετε ταινίες, ενώ ακόμη και το FullHD αναπαράγεται χωρίς προβλήματα, παρόλο που ο φόρτος του επεξεργαστή είναι μέγιστος.

Τώρα ας προσπαθήσουμε να δημιουργήσουμε ένα βίντεο για μια κινητή συσκευή, ας ονομάσουμε το προφίλ όπως ονομαζόταν στο Badaboom - iPhone (480x320, 1 Mbit/s):

Δεν υπάρχει κανένα σφάλμα. Όλα ελέγχονταν ξανά πολλές φορές, κάθε φορά το αποτέλεσμα ήταν το ίδιο. Πιθανότατα, αυτό συμβαίνει για τον απλό λόγο ότι το αρχείο SD εγγράφηκε με διαφορετικό κωδικοποιητή και σε διαφορετικό κοντέινερ. Κατά τη διακωδικοποίηση, το βίντεο πρώτα αποκωδικοποιείται, χωρίζεται σε πίνακες συγκεκριμένου μεγέθους και συμπιέζεται. Ο αποκωδικοποιητής ASP που χρησιμοποιείται στην περίπτωση του xvid είναι πιο αργός από το AVC (για το h.264) κατά την παράλληλη αποκωδικοποίηση. Ωστόσο, τα 192 fps είναι 8 φορές πιο γρήγορα από την ταχύτητα του αρχικού βίντεο· μια σειρά 23 λεπτών συμπιέζεται σε λιγότερο από 4 λεπτά. Η κατάσταση επαναλήφθηκε με άλλα αρχεία συμπιεσμένα σε xvid/DivX.

LoiloScopeΆφησα μόνο ευχάριστες εντυπώσεις - η διεπαφή, παρά την ασυνήθιστα, είναι βολική και λειτουργική και η ταχύτητα λειτουργίας είναι πέρα ​​από επαίνους. Η σχετικά κακή λειτουργικότητα είναι κάπως απογοητευτική, αλλά συχνά με την απλή εγκατάσταση χρειάζεται μόνο να προσαρμόσετε ελαφρώς τα χρώματα, να κάνετε ομαλές μεταβάσεις και να προσθέσετε κείμενο και το LoiloScope κάνει εξαιρετική δουλειά με αυτό. Η τιμή είναι επίσης κάπως τρομακτική - περισσότερα από 100 $ για την κανονική έκδοση είναι φυσιολογικά για τις ξένες χώρες, αλλά τέτοια στοιχεία εξακολουθούν να μας φαίνονται λίγο άγρια. Αν και, ομολογώ ότι αν, για παράδειγμα, γύριζα και επεξεργαζόμουν συχνά οικιακά βίντεο, μπορεί να σκεφτόμουν να το αγοράσω. Ταυτόχρονα, παρεμπιπτόντως, έλεγξα τη δυνατότητα επεξεργασίας περιεχομένου HD (ή μάλλον AVCHD) απευθείας από βιντεοκάμερα χωρίς προηγουμένως μετατροπή σε άλλη μορφή· το LoiloScope δεν αποκάλυψε κανένα πρόβλημα με αρχεία όπως το .mts.

Η νέα τεχνολογία είναι σαν ένα νεοαναδυόμενο εξελικτικό είδος. Ένα περίεργο πλάσμα, σε αντίθεση με τους πολλούς παλιούς. Άλλοτε άβολο, άλλοτε αστείο. Και στην αρχή οι νέες του ιδιότητες δεν φαίνονται σε καμία περίπτωση κατάλληλες για αυτόν τον κατασταλαγμένο και σταθερό κόσμο.

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

Η τεχνολογία GPGPU (General-Purpose Graphics Processing Units - γενικής χρήσης επεξεργαστής γραφικών) υπήρχε για πολύ καιρό μόνο στους θεωρητικούς υπολογισμούς των έξυπνων ακαδημαϊκών. Πως αλλιώς? Για να προτείνουμε τη ριζική αλλαγή της υπολογιστικής διαδικασίας που έχει αναπτυχθεί εδώ και δεκαετίες, αναθέτοντας τον υπολογισμό των παράλληλων διακλαδώσεων της σε μια κάρτα βίντεο - μόνο οι θεωρητικοί είναι ικανοί για αυτό.

Το λογότυπο της τεχνολογίας CUDA μας θυμίζει ότι αναπτύχθηκε στα βάθη της
3D γραφικά.

Αλλά η τεχνολογία GPGPU δεν επρόκειτο να μαζέψει σκόνη για πολύ στις σελίδες των πανεπιστημιακών περιοδικών. Έχοντας φουντάρει τα φτερά των καλύτερων ιδιοτήτων της, τράβηξε την προσοχή των κατασκευαστών. Έτσι γεννήθηκε το CUDA - μια εφαρμογή του GPGPU σε επεξεργαστές γραφικών GeForce που κατασκευάζονται από την nVidia.

Χάρη στο CUDA, οι τεχνολογίες GPGPU έχουν γίνει mainstream. Και τώρα μόνο οι πιο κοντόφθαλμοι και καλυμμένοι με ένα παχύ στρώμα τεμπελιάς προγραμματιστής συστημάτων προγραμματισμού δεν δηλώνουν υποστήριξη για CUDA με το προϊόν τους. Οι εκδόσεις IT θεώρησαν τιμή να παρουσιάσουν τις λεπτομέρειες της τεχνολογίας σε πολυάριθμα πλούσια άρθρα δημοφιλούς επιστήμης και οι ανταγωνιστές κάθισαν αμέσως με μοτίβα και cross-compilers για να αναπτύξουν κάτι παρόμοιο.

Η δημόσια αναγνώριση είναι όνειρο όχι μόνο για τις επίδοξες στάρλετς, αλλά και για τις νεογέννητες τεχνολογίες. Και ο CUDA ήταν τυχερός. Είναι γνωστή, μιλάνε και γράφουν για αυτήν.

Απλώς γράφουν σαν να συνεχίζουν να συζητούν το GPGPU σε πυκνά επιστημονικά περιοδικά. Βομβαρδίζουν τον αναγνώστη με ένα σωρό όρους όπως «πλέγμα», «SIMD», «στημόνι», «οικοδεσπότης», «υφή και σταθερή μνήμη». Τον βυθίζουν στην κορυφή στα διαγράμματα οργάνωσης των GPU της nVidia, τον οδηγούν σε μονοπάτια περιέλιξης παράλληλων αλγορίθμων και (η πιο δυνατή κίνηση) εμφανίζουν μεγάλες καταχωρίσεις κωδικών στη γλώσσα C. Ως αποτέλεσμα, αποδεικνύεται ότι στην είσοδο του άρθρου έχουμε έναν φρέσκο ​​αναγνώστη με διακαή επιθυμία να κατανοήσει το CUDA, και στην έξοδο έχουμε τον ίδιο αναγνώστη, αλλά με ένα πρησμένο κεφάλι γεμάτο με ένα χάος από γεγονότα, διαγράμματα , κώδικας, αλγόριθμοι και όροι.

Εν τω μεταξύ, ο στόχος κάθε τεχνολογίας είναι να κάνει τη ζωή μας ευκολότερη. Και το CUDA κάνει εξαιρετική δουλειά με αυτό. Τα αποτελέσματα της δουλειάς της είναι αυτά που θα πείσουν κάθε σκεπτικιστή καλύτερα από εκατοντάδες σχήματα και αλγόριθμους.

Όχι παντού

Το CUDA υποστηρίζεται από υπερυπολογιστές υψηλής απόδοσης
nVidia Tesla.

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

Η λίστα των καρτών βίντεο nVidia που υποστηρίζουν CUDA παρουσιάζεται σε μια ειδική λίστα που ονομάζεται CUDA Enabled Products. Ο κατάλογος είναι αρκετά εντυπωσιακός, αλλά εύκολο να ταξινομηθεί. Η υποστήριξη CUDA δεν απορρίπτεται:

    Μοντέλα nVidia GeForce 8ης, 9ης, 100ης, 200ης και 400ης σειράς με τουλάχιστον 256 megabyte μνήμης βίντεο επί του σκάφους. Η υποστήριξη επεκτείνεται τόσο σε επιτραπέζιες κάρτες όσο και σε κάρτες κινητών.

    Η συντριπτική πλειοψηφία των καρτών γραφικών για επιτραπέζιους και φορητούς υπολογιστές είναι nVidia Quadro.

    Όλες οι λύσεις από τη σειρά netbook nvidia ION.

    Λύσεις υπερυπολογιστών HPC (High Performance Computing) και nVidia Tesla υψηλής απόδοσης που χρησιμοποιούνται τόσο για προσωπικούς υπολογιστές όσο και για την οργάνωση κλιμακούμενων συστημάτων συμπλέγματος.

Επομένως, πριν χρησιμοποιήσετε προϊόντα λογισμικού που βασίζονται σε CUDA, αξίζει να ελέγξετε αυτήν τη λίστα με τα αγαπημένα.

Εκτός από την ίδια την κάρτα βίντεο, απαιτείται ένα κατάλληλο πρόγραμμα οδήγησης για την υποστήριξη του CUDA. Είναι ο σύνδεσμος μεταξύ του κεντρικού και των επεξεργαστών γραφικών, ενεργώντας ως ένα είδος διεπαφής λογισμικού για την πρόσβαση στον κώδικα και τα δεδομένα του προγράμματος στον πολυπύρηνο θησαυρό της GPU. Για να βεβαιωθείτε ότι δεν κάνετε λάθος, η nVidia συνιστά να επισκεφτείτε τη σελίδα προγραμμάτων οδήγησης και να λάβετε την πιο πρόσφατη έκδοση.

...αλλά η ίδια η διαδικασία

Πώς λειτουργεί το CUDA; Πώς να εξηγήσετε τη σύνθετη διαδικασία του παράλληλου υπολογισμού σε μια ειδική αρχιτεκτονική υλικού GPU χωρίς να βυθίσετε τον αναγνώστη στην άβυσσο συγκεκριμένων όρων;

Μπορείτε να προσπαθήσετε να το κάνετε αυτό φανταζόμενοι πώς ο κεντρικός επεξεργαστής εκτελεί το πρόγραμμα σε συμβίωση με τον επεξεργαστή γραφικών.

Αρχιτεκτονικά, η κεντρική μονάδα επεξεργασίας (CPU) και η αντίστοιχη γραφική της μονάδα (GPU) έχουν σχεδιαστεί διαφορετικά. Αν κάνουμε μια αναλογία με τον κόσμο της αυτοκινητοβιομηχανίας, τότε η CPU είναι ένα στέισον βάγκον, ένα από αυτά που ονομάζεται «αχυρώνα». Μοιάζει με επιβατικό αυτοκίνητο, αλλά ταυτόχρονα (από τη σκοπιά των προγραμματιστών) «είναι Ελβετός, θεριστής και παίκτης στο σωλήνα». Εκτελεί το ρόλο ενός μικρού φορτηγού, ενός λεωφορείου και ενός υπερτροφισμένου hatchback ταυτόχρονα. Station wagon, εν ολίγοις. Έχει λίγους πυρήνες κυλίνδρων, αλλά χειρίζονται σχεδόν κάθε εργασία και η εντυπωσιακή μνήμη cache είναι ικανή να αποθηκεύσει μια δέσμη δεδομένων.

Αλλά η GPU είναι ένα σπορ αυτοκίνητο. Υπάρχει μόνο μία λειτουργία: να παραδώσει τον πιλότο στη γραμμή τερματισμού όσο το δυνατόν γρηγορότερα. Επομένως, χωρίς μεγάλη μνήμη πορτμπαγκάζ, χωρίς επιπλέον καθίσματα. Αλλά υπάρχουν εκατοντάδες φορές περισσότεροι πυρήνες κυλίνδρων από την CPU.

Χάρη στο CUDA, οι προγραμματιστές προγραμμάτων GPGPU δεν χρειάζεται να εμβαθύνουν στην πολυπλοκότητα του προγραμματισμού
ανάπτυξη για μηχανές γραφικών όπως το DirectX και το OpenGL

Σε αντίθεση με τον κεντρικό επεξεργαστή, ο οποίος είναι ικανός να λύσει οποιαδήποτε εργασία, συμπεριλαμβανομένων των γραφικών, αλλά με μέση απόδοση, ο επεξεργαστής γραφικών είναι προσαρμοσμένος σε μια λύση υψηλής ταχύτητας μιας εργασίας: μετατρέποντας μια δέσμη πολυγώνων στην είσοδο σε μια δέσμη pixel στο την έξοδο. Επιπλέον, αυτό το πρόβλημα μπορεί να λυθεί παράλληλα χρησιμοποιώντας εκατοντάδες σχετικά απλούς υπολογιστικούς πυρήνες στη GPU.

Λοιπόν, τι είδους tandem μπορεί να υπάρξει από ένα station wagon και ένα σπορ αυτοκίνητο; Το CUDA λειτουργεί κάπως έτσι: το πρόγραμμα εκτελείται στη CPU μέχρι να υπάρξει ένα τμήμα κώδικα που μπορεί να εκτελεστεί παράλληλα. Στη συνέχεια, αντί να εκτελείται αργά σε δύο (ή και οκτώ) πυρήνες της πιο cool CPU, μεταφέρεται σε εκατοντάδες πυρήνες GPU. Ταυτόχρονα, ο χρόνος εκτέλεσης αυτής της ενότητας μειώνεται σημαντικά, πράγμα που σημαίνει ότι μειώνεται και ο χρόνος εκτέλεσης ολόκληρου του προγράμματος.

Τεχνολογικά δεν αλλάζει τίποτα για τον προγραμματιστή. Ο κώδικας των προγραμμάτων CUDA είναι γραμμένος σε γλώσσα C. Πιο συγκεκριμένα, στην ειδική του διάλεκτο «Γ με ρέματα» (Γ με ρέματα). Αναπτύχθηκε στο Stanford, αυτή η επέκταση της γλώσσας C ονομάζεται Brook. Η διεπαφή που μεταφέρει τον κώδικα Brook στη GPU είναι το πρόγραμμα οδήγησης μιας κάρτας βίντεο που υποστηρίζει CUDA. Οργανώνει ολόκληρη τη διαδικασία επεξεργασίας αυτής της ενότητας του προγράμματος, έτσι ώστε για τον προγραμματιστή η GPU να μοιάζει με συνεπεξεργαστή CPU. Πολύ παρόμοια με τη χρήση ενός συμεπεξεργαστή μαθηματικών στις πρώτες μέρες της προσωπικής υπολογιστικής. Με την εμφάνιση του Brook, των καρτών γραφικών με υποστήριξη CUDA και προγραμμάτων οδήγησης για αυτές, οποιοσδήποτε προγραμματιστής έχει αποκτήσει πρόσβαση στη GPU στα προγράμματά του. Πριν, όμως, αυτός ο σαμανισμός ανήκει σε έναν στενό κύκλο εκλεκτών ανθρώπων που ξόδεψαν χρόνια εξελίσσοντας τεχνικές προγραμματισμού για μηχανές γραφικών DirectX ή OpenGL.

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

Δίκαια έργα

Το CUDA είναι μια πολύ ρεαλιστική τεχνολογία. Έχοντας εφαρμόσει την υποστήριξή της στις κάρτες γραφικών της, η nVidia πολύ σωστά περίμενε ότι το banner CUDA θα καταλάμβανε πολλούς λάτρεις τόσο στο πανεπιστημιακό περιβάλλον όσο και στο εμπόριο. Και έτσι έγινε. Τα έργα που βασίζονται στο CUDA ζουν και αποφέρουν οφέλη.

NVIDIA PhysX

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

Μία από τις δυνατότητες της μηχανής φυσικής NVIDIA PhysX είναι η ρεαλιστική εργασία με ιστούς.

Η εφαρμογή αλγορίθμων για την προσομοίωση βασικών φυσικών νόμων στον υπολογιστή είναι μια εργασία που απαιτεί πολύ κόπο. Οι πιο διάσημες εταιρείες σε αυτόν τον τομέα είναι η ιρλανδική εταιρεία Havok με τη φυσική της Havok Physics σε πολλαπλές πλατφόρμες και η Καλιφορνέζικη Ageia - ο πρόγονος του πρώτου φυσικού επεξεργαστή στον κόσμο (PPU - Physics Processing Unit) και της αντίστοιχης μηχανής φυσικής PhysX. Το πρώτο από αυτά, αν και εξαγοράστηκε από την Intel, τώρα εργάζεται ενεργά στον τομέα της βελτιστοποίησης του κινητήρα Havok για κάρτες γραφικών ATI και επεξεργαστές AMD. Όμως η Ageia με τον κινητήρα της PhysX έγινε μέρος της nVidia. Ταυτόχρονα, η nVidia έλυσε το αρκετά δύσκολο πρόβλημα της προσαρμογής του PhysX στην τεχνολογία CUDA.

Αυτό έγινε δυνατό χάρη στα στατιστικά στοιχεία. Έχει αποδειχθεί στατιστικά ότι ανεξάρτητα από το πόσο περίπλοκη απόδοση είναι μια GPU, ορισμένοι από τους πυρήνες της παραμένουν σε αδράνεια. Σε αυτούς τους πυρήνες λειτουργεί ο κινητήρας PhysX.

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

Έκδοση CUDA του πακέτου συμπίεσης υφής NVIDIA Texture Tools 2

Σας αρέσουν τα ρεαλιστικά αντικείμενα στα σύγχρονα παιχνίδια; Αξίζει να πούμε ευχαριστώ στους προγραμματιστές υφής. Αλλά όσο περισσότερη πραγματικότητα υπάρχει στην υφή, τόσο μεγαλύτερος είναι ο όγκος της. Όσο περισσότερο καταλαμβάνει πολύτιμη μνήμη. Για να αποφευχθεί αυτό, οι υφές προ-συμπιέζονται και αποσυμπιέζονται δυναμικά όπως απαιτείται. Και η συμπίεση και η αποσυμπίεση είναι καθαροί υπολογισμοί. Για να εργαστείτε με textures, η nVidia κυκλοφόρησε το πακέτο NVIDIA Texture Tools. Υποστηρίζει αποτελεσματική συμπίεση και αποσυμπίεση των υφών του DirectX (τη λεγόμενη μορφή HF). Η δεύτερη έκδοση αυτού του πακέτου διαθέτει υποστήριξη για αλγόριθμους συμπίεσης BC4 και BC5 που εφαρμόζονται στην τεχνολογία DirectX 11. Αλλά το κυριότερο είναι ότι το NVIDIA Texture Tools 2 περιλαμβάνει υποστήριξη CUDA. Σύμφωνα με την nVidia, αυτό δίνει 12 φορές αύξηση στην απόδοση σε εργασίες συμπίεσης και αποσυμπίεσης υφής. Αυτό σημαίνει ότι τα καρέ του παιχνιδιού θα φορτωθούν πιο γρήγορα και θα ενθουσιάσουν τον παίκτη με τον ρεαλισμό τους.

Το πακέτο NVIDIA Texture Tools 2 έχει σχεδιαστεί για να λειτουργεί με το CUDA. Το κέρδος απόδοσης κατά τη συμπίεση και την αποσυμπίεση υφών είναι προφανές.

Η χρήση του CUDA μπορεί να βελτιώσει σημαντικά την αποτελεσματικότητα της παρακολούθησης βίντεο.

Επεξεργασία ροής βίντεο σε πραγματικό χρόνο

Ό,τι και να πει κανείς, ο σημερινός κόσμος, από την άποψη της κατασκοπείας, είναι πολύ πιο κοντά στον κόσμο του Big Brother του Όργουελ από όσο φαίνεται. Τόσο οι οδηγοί αυτοκινήτων όσο και οι επισκέπτες σε δημόσιους χώρους αισθάνονται το βλέμμα των βιντεοκάμερων.

Πλήρως ρέοντες ποταμοί πληροφοριών βίντεο ρέουν στα κέντρα επεξεργασίας τους και... τρέχουν σε έναν στενό κρίκο - ένα πρόσωπο. Στις περισσότερες περιπτώσεις, είναι η τελευταία αρχή που παρακολουθεί τον κόσμο του βίντεο. Επιπλέον, η αρχή δεν είναι η πιο αποτελεσματική. Αναβοσβήνει, αποσπάται η προσοχή και προσπαθεί να αποκοιμηθεί.

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

Μετατροπή βίντεο, φιλτράρισμα ήχου

Ο μετατροπέας βίντεο Badaboom είναι ο πρώτος που χρησιμοποιεί το CUDA για να επιταχύνει τη μετατροπή.

Είναι ωραίο να παρακολουθείτε ένα νέο προϊόν ενοικίασης βίντεο σε ποιότητα FullHD και σε μεγάλη οθόνη. Αλλά δεν μπορείτε να πάρετε μια μεγάλη οθόνη μαζί σας στο δρόμο και ο κωδικοποιητής βίντεο FullHD θα κολλήσει στον επεξεργαστή χαμηλής κατανάλωσης ενός κινητού gadget. Η μετατροπή έρχεται στη διάσωση. Αλλά οι περισσότεροι από αυτούς που το έχουν συναντήσει στην πράξη παραπονιούνται για τον μεγάλο χρόνο μετατροπής. Αυτό είναι κατανοητό, η διαδικασία είναι ρουτίνα, κατάλληλη για παραλληλοποίηση και η εκτέλεσή της στην CPU δεν είναι πολύ βέλτιστη.

Αλλά το CUDA το αντιμετωπίζει με μεγάλη επιτυχία. Το πρώτο σημάδι είναι ο μετατροπέας Badaboom από την Elevental. Οι προγραμματιστές του Badaboom πήραν τη σωστή απόφαση όταν επέλεξαν το CUDA. Οι δοκιμές δείχνουν ότι μετατρέπει μια τυπική ταινία μισής ώρας σε μορφή iPhone/iPod Touch σε λιγότερο από είκοσι λεπτά. Και αυτό παρά το γεγονός ότι όταν χρησιμοποιείτε μόνο την CPU, αυτή η διαδικασία διαρκεί περισσότερο από μία ώρα.

Βοηθά τους CUDA και τους επαγγελματίες λάτρεις της μουσικής. Οποιοδήποτε από αυτά θα έδινε μισό βασίλειο για ένα αποτελεσματικό crossover FIR - ένα σύνολο φίλτρων που χωρίζουν το φάσμα του ήχου σε πολλές μπάντες. Αυτή η διαδικασία είναι πολύ απαιτητική και, με μεγάλο όγκο ήχου, αναγκάζει τον ηχολήπτη να «καπνίσει» για αρκετές ώρες. Η εφαρμογή ενός crossover FIR που βασίζεται σε CUDA επιταχύνει τη λειτουργία του εκατοντάδες φορές.

CUDA Future

Έχοντας κάνει πραγματικότητα την τεχνολογία GPGPU, η CUDA δεν επαναπαύεται στις δάφνες της. Όπως συμβαίνει παντού, η αρχή της αντανάκλασης λειτουργεί στο CUDA: τώρα όχι μόνο η αρχιτεκτονική των επεξεργαστών βίντεο nVidia επηρεάζει την ανάπτυξη των εκδόσεων CUDA SDK, αλλά η ίδια η τεχνολογία CUDA αναγκάζει την nVidia να επανεξετάσει την αρχιτεκτονική των τσιπ της. Ένα παράδειγμα τέτοιας αντανάκλασης είναι η πλατφόρμα nVidia ION. Η δεύτερη έκδοσή του είναι ειδικά βελτιστοποιημένη για την επίλυση προβλημάτων CUDA. Αυτό σημαίνει ότι ακόμη και σε σχετικά φθηνές λύσεις υλικού, οι καταναλωτές θα λάβουν όλη την ισχύ και τις εξαιρετικές δυνατότητες του CUDA.

Και έχει σχεδιαστεί για να μεταφράζει τον κώδικα κεντρικού υπολογιστή (κύριος, κωδικός ελέγχου) και τον κώδικα συσκευής (κωδικός υλικού) (αρχεία με την επέκταση .cu) σε αρχεία αντικειμένων κατάλληλα για τη διαδικασία συναρμολόγησης του τελικού προγράμματος ή βιβλιοθήκης σε οποιοδήποτε περιβάλλον προγραμματισμού, για παράδειγμα στο NetBeans.

Η αρχιτεκτονική CUDA χρησιμοποιεί ένα μοντέλο μνήμης πλέγματος, μοντελοποίηση νημάτων συμπλέγματος και οδηγίες SIMD. Ισχύει όχι μόνο για υπολογιστές γραφικών υψηλής απόδοσης, αλλά και για διάφορους επιστημονικούς υπολογιστές που χρησιμοποιούν κάρτες γραφικών nVidia. Οι επιστήμονες και οι ερευνητές χρησιμοποιούν ευρέως το CUDA σε διάφορους τομείς, όπως η αστροφυσική, η υπολογιστική βιολογία και η χημεία, η μοντελοποίηση δυναμικής ρευστών, οι ηλεκτρομαγνητικές αλληλεπιδράσεις, η υπολογιστική τομογραφία, η σεισμική ανάλυση και άλλα. Το CUDA έχει τη δυνατότητα σύνδεσης με εφαρμογές χρησιμοποιώντας OpenGL και Direct3D. Το CUDA είναι λογισμικό πολλαπλών πλατφορμών για λειτουργικά συστήματα όπως Linux, Mac OS X και Windows.

Στις 22 Μαρτίου 2010, η nVidia κυκλοφόρησε το CUDA Toolkit 3.0, το οποίο περιείχε υποστήριξη για το OpenCL.

Εξοπλισμός

Η πλατφόρμα CUDA εμφανίστηκε για πρώτη φορά στην αγορά με την κυκλοφορία του τσιπ NVIDIA G80 όγδοης γενιάς και έγινε παρούσα σε όλες τις επόμενες σειρές τσιπ γραφικών, που χρησιμοποιούνται στις οικογένειες επιταχυντών GeForce, Quadro και NVidia Tesla.

Η πρώτη σειρά υλικού που υποστηρίζει το CUDA SDK, το G8x, είχε έναν διανυσματικό επεξεργαστή μονής ακρίβειας 32 bit που χρησιμοποιεί το CUDA SDK ως API (το CUDA υποστηρίζει τον διπλό τύπο C, αλλά η ακρίβειά του έχει πλέον μειωθεί στα 32 bit κινητή υποδιαστολή). Οι μεταγενέστεροι επεξεργαστές GT200 υποστηρίζουν ακρίβεια 64 bit (μόνο SFU), αλλά η απόδοση είναι σημαντικά χειρότερη από την ακρίβεια 32 bit (λόγω του γεγονότος ότι υπάρχουν μόνο δύο SFU ανά πολυεπεξεργαστή ροής, ενώ υπάρχουν οκτώ βαθμωτοί επεξεργαστές). Η GPU οργανώνει την πολυνηματική σύνδεση υλικού, η οποία σας επιτρέπει να χρησιμοποιείτε όλους τους πόρους της GPU. Έτσι, ανοίγει η προοπτική μεταφοράς των λειτουργιών του φυσικού επιταχυντή στον επιταχυντή γραφικών (ένα παράδειγμα υλοποίησης είναι το nVidia PhysX). Ανοίγει επίσης ευρείες δυνατότητες για τη χρήση υλικού γραφικών υπολογιστών για την εκτέλεση πολύπλοκων μη γραφικών υπολογισμών: για παράδειγμα, στην υπολογιστική βιολογία και σε άλλους κλάδους της επιστήμης.

Πλεονεκτήματα

Σε σύγκριση με την παραδοσιακή προσέγγιση για την οργάνωση υπολογιστών γενικής χρήσης μέσω API γραφικών, η αρχιτεκτονική CUDA έχει τα ακόλουθα πλεονεκτήματα σε αυτόν τον τομέα:

Περιορισμοί

  • Όλες οι εκτελέσιμες λειτουργίες στη συσκευή δεν υποστηρίζουν αναδρομή (το CUDA Toolkit 3.1 υποστηρίζει δείκτες και αναδρομή) και έχουν κάποιους άλλους περιορισμούς

Υποστηριζόμενες GPU και επιταχυντές γραφικών

Η λίστα των συσκευών από τον κατασκευαστή εξοπλισμού Nvidia με δηλωμένη πλήρη υποστήριξη για την τεχνολογία CUDA παρέχεται στον επίσημο ιστότοπο της Nvidia: CUDA-Enabled GPU Products (Αγγλικά).

Στην πραγματικότητα, τα ακόλουθα περιφερειακά υποστηρίζουν αυτήν τη στιγμή την τεχνολογία CUDA στην αγορά υλικού υπολογιστών:

Έκδοση προδιαγραφών GPU Κάρτες βίντεο
1.0 G80, G92, G92b, G94, G94b GeForce 8800GTX/Ultra, 9400GT, 9600GT, 9800GT, Tesla C/D/S870, FX4/5600, 360M, GT 420
1.1 G86, G84, G98, G96, G96b, G94, G94b, G92, G92b GeForce 8400GS/GT, 8600GT/GTS, 8800GT/GTS, 9600 GSO, 9800GTX/GX2, GTS 250, GT 120/30/40, FX 4/570, 3/580, 370, 20x17 /370M, 3/5/770M, 16/17/27/28/36/37/3800M, NVS420/50
1.2 GT218, GT216, GT215 GeForce 210, GT 220/40, FX380 LP, 1800M, 370/380M, NVS 2/3100M
1.3 GT200, GT200b GeForce GTX 260, GTX 275, GTX 280, GTX 285, GTX 295, Tesla C/M1060, S1070, Quadro CX, FX 3/4/5800
2.0 GF100, GF110 GeForce (GF100) GTX 465, GTX 470, GTX 480, Tesla C2050, C2070, S/M2050/70, Quadro Plex 7000, Quadro 4000, 5000, 6000, 15XT, 6000, 15X50, 6000, 1500, 6000, GeForce 1500 TX580, GTX590
2.1 GF104, GF114, GF116, GF108, GF106 GeForce 610M, GT 430, GT 440, GTS 450, GTX 460, GTX 550 Ti, GTX 560, GTX 560 Ti, 500M, Quadro 600, 2000
3.0 GK104, GK106, GK107 GeForce GTX 690, GTX 680, GTX 670, GTX 660 Ti, GTX 660, GTX 650 Ti, GTX 650, GT 640, GeForce GTX 680MX, GeForce GTX 680M, GeForce GTX 680M, GeForce GTX 660M, GeForce GTX 670 60M, GeForce GT 650M, GeForce GT 645M, GeForce GT 640M
3.5 GK110
Nvidia GeForce για επιτραπέζιους υπολογιστές
GeForce GTX 590
GeForce GTX 580
GeForce GTX 570
GeForce GTX 560 Ti
GeForce GTX 560
GeForce GTX 550 Ti
GeForce GTX 520
GeForce GTX 480
GeForce GTX 470
GeForce GTX 465
GeForce GTX 460
GeForce GTS 450
GeForce GTX 295
GeForce GTX 285
GeForce GTX 280
GeForce GTX 275
GeForce GTX 260
GeForce GTS 250
GeForce GT 240
GeForce GT 220
GeForce 210
GeForce GTS 150
GeForce GT 130
GeForce GT 120
GeForce G100
GeForce 9800 GX2
GeForce 9800 GTX+
GeForce 9800 GTX
GeForce 9800 GT
GeForce 9600 GSO
GeForce 9600 GT
GeForce 9500 GT
GeForce 9400 GT
GeForce 9400 mGPU
GeForce 9300 mGPU
GeForce 8800 GTS 512
GeForce 8800 GT
GeForce 8600 GTS
GeForce 8600 GT
GeForce 8500 GT
GeForce 8400GS
Nvidia GeForce για φορητούς υπολογιστές
GeForce GTX 580M
GeForce GTX 570M
GeForce GTX 560M
GeForce GT 555M
GeForce GT 540M
GeForce GT 525M
GeForce GT 520M
GeForce GTX 485M
GeForce GTX 480M
GeForce GTX 470M
GeForce GTX 460M
GeForce GT 445M
GeForce GT 435M
GeForce GT 425M
GeForce GT 420M
GeForce GT 415M
GeForce GTX 285M
GeForce GTX 280M
GeForce GTX 260M
GeForce GTS 360M
GeForce GTS 350M
GeForce GTS 160M
GeForce GTS 150M
GeForce GT 335M
GeForce GT 330M
GeForce GT 325M
GeForce GT 240M
GeForce GT 130M
GeForce G210M
GeForce G110M
GeForce G105M
GeForce 310M
GeForce 305M
GeForce 9800M GTX
GeForce 9800M GT
GeForce 9800M GTS
GeForce 9700M GTS
GeForce 9700M GT
GeForce 9650MGS
GeForce 9600M GT
GeForce 9600MGS
GeForce 9500MGS
GeForce 9500M G
GeForce 9300MGS
GeForce 9300M G
GeForce 9200MGS
GeForce 9100M G
GeForce 8800M GTS
GeForce 8700M GT
GeForce 8600M GT
GeForce 8600MGS
GeForce 8400M GT
GeForce 8400MGS
Nvidia Tesla *
Tesla C2050/C2070
Tesla M2050/M2070/M2090
Tesla S2050
Tesla S1070
Tesla M1060
Tesla C1060
Tesla C870
Tesla D870
Tesla S870
Nvidia Quadro για επιτραπέζιους υπολογιστές
Quadro 6000
Quadro 5000
Quadro 4000
Quadro 2000
Quadro 600
Quadro FX 5800
Quadro FX 5600
Quadro FX 4800
Quadro FX 4700 X2
Quadro FX 4600
Quadro FX 3700
Quadro FX 1700
Quadro FX 570
Quadro FX 470
Quadro FX 380 Low Profile
Quadro FX 370
Quadro FX 370 Low Profile
Quadro CX
Quadro NVS 450
Quadro NVS 420
Quadro NVS 290
Quadro Plex 2100 D4
Quadro Plex 2200 D2
Quadro Plex 2100 S4
Quadro Plex 1000 Model IV
Nvidia Quadro για φορητούς υπολογιστές
Quadro 5010M
Quadro 5000M
Quadro 4000M
Quadro 3000M
Quadro 2000M
Quadro 1000M
Quadro FX 3800M
Quadro FX 3700M
Quadro FX 3600M
Quadro FX 2800M
Quadro FX 2700M
Quadro FX 1800M
Quadro FX 1700M
Quadro FX 1600M
Quadro FX 880M
Quadro FX 770M
Quadro FX 570M
Quadro FX 380M
Quadro FX 370M
Quadro FX 360M
Quadro NVS 5100M
Quadro NVS 4200M
Quadro NVS 3100M
Quadro NVS 2100M
Quadro NVS 320M
Quadro NVS 160M
Quadro NVS 150M
Quadro NVS 140M
Quadro NVS 135M
Quadro NVS 130M
  • Τα μοντέλα Tesla C1060, Tesla S1070, Tesla C2050/C2070, Tesla M2050/M2070, Tesla S2050 επιτρέπουν υπολογισμούς GPU με διπλή ακρίβεια.

Χαρακτηριστικά και Προδιαγραφές Διάφορων Εκδόσεων

Υποστήριξη δυνατοτήτων (οι μη καταχωρημένες λειτουργίες είναι
υποστηρίζεται για όλες τις υπολογιστικές δυνατότητες)
Υπολογιστική ικανότητα (έκδοση)
1.0 1.1 1.2 1.3 2.χ

Λέξεις 32 bit στην παγκόσμια μνήμη
Οχι Ναί

τιμές κινητής υποδιαστολής στην παγκόσμια μνήμη
Ακέραιες ατομικές συναρτήσεις που λειτουργούν
Λέξεις 32 bit σε κοινόχρηστη μνήμη
Οχι Ναί
atomicExch() που λειτουργεί σε 32-bit
τιμές κινητής υποδιαστολής σε κοινόχρηστη μνήμη
Ακέραιες ατομικές συναρτήσεις που λειτουργούν
Λέξεις 64-bit στην παγκόσμια μνήμη
Στρεβλώστε τις λειτουργίες ψήφου
Λειτουργίες κινητής υποδιαστολής διπλής ακρίβειας Οχι Ναί
Ατομικές λειτουργίες που λειτουργούν σε 64-bit
ακέραιες τιμές στην κοινόχρηστη μνήμη
Οχι Ναί
Ατομική προσθήκη κινητής υποδιαστολής σε λειτουργία
Λέξεις 32 bit σε καθολική και κοινόχρηστη μνήμη
_ψηφοφορία()
_threadfence_system()
_syncthreads_count(),
_syncthreads_and(),
_syncthreads_or()
Λειτουργίες επιφάνειας
τρισδιάστατο πλέγμα από μπλοκ νημάτων
Τεχνικές προδιαγραφές Υπολογιστική ικανότητα (έκδοση)
1.0 1.1 1.2 1.3 2.χ
Μέγιστη διάσταση του πλέγματος των μπλοκ νημάτων 2 3
Μέγιστη διάσταση x-, y- ή z ενός πλέγματος μπλοκ νημάτων 65535
Μέγιστη διάσταση του μπλοκ νήματος 3
Μέγιστη διάσταση x ή y ενός μπλοκ 512 1024
Μέγιστη διάσταση z ενός μπλοκ 64
Μέγιστος αριθμός νημάτων ανά μπλοκ 512 1024
Μέγεθος στημονιού 32
Μέγιστος αριθμός μπλοκ κατοίκων ανά πολυεπεξεργαστή 8
Μέγιστος αριθμός μόνιμων παραμορφώσεων ανά πολυεπεξεργαστή 24 32 48
Μέγιστος αριθμός μόνιμων νημάτων ανά πολυεπεξεργαστή 768 1024 1536
Αριθμός καταχωρητών 32 bit ανά πολυεπεξεργαστή 8 ΧΙΛ 16 Χιλ 32 Χιλ
Μέγιστη ποσότητα κοινόχρηστης μνήμης ανά πολυεπεξεργαστή 16 KB 48 KB
Αριθμός κοινόχρηστων τραπεζών μνήμης 16 32
Ποσότητα τοπικής μνήμης ανά νήμα 16 KB 512 KB
Σταθερό μέγεθος μνήμης 64 KB
Σετ εργασίας κρυφής μνήμης ανά πολυεπεξεργαστή για σταθερή μνήμη 8 KB
Σετ εργασίας κρυφής μνήμης ανά πολυεπεξεργαστή για μνήμη υφής Ανάλογα με τη συσκευή, μεταξύ 6 KB και 8 KB
Μέγιστο πλάτος για υφή 1D
8192 32768
Μέγιστο πλάτος για υφή 1D
αναφορά δεσμευμένη σε γραμμική μνήμη
2 27
Μέγιστο πλάτος και αριθμός στρώσεων
για αναφορά υφής με στρώσεις 1D
8192 x 512 16384 x 2048
Μέγιστο πλάτος και ύψος για 2D
αναφορά υφής δεσμευμένη σε
γραμμική μνήμη ή πίνακα CUDA
65536 x 32768 65536 x 65535
Μέγιστο πλάτος, ύψος και αριθμός
στρωμάτων για αναφορά υφής με 2D επίπεδα
8192 x 8192 x 512 16384 x 16384 x 2048
Μέγιστο πλάτος, ύψος και βάθος
για μια αναφορά τρισδιάστατης υφής δεσμευμένη σε γραμμική
μνήμη ή μια συστοιχία CUDA
2048 x 2048 x 2048
Μέγιστος αριθμός υφών που
μπορεί να συνδεθεί σε έναν πυρήνα
128
Μέγιστο πλάτος για επιφάνεια 1D
αναφορά δεσμευμένη σε πίνακα CUDA
Δεν
υποστηρίζεται
8192
Μέγιστο πλάτος και ύψος για ένα 2D
αναφορά επιφάνειας δεσμευμένη σε πίνακα CUDA
8192 x 8192
Μέγιστος αριθμός επιφανειών που
μπορεί να συνδεθεί σε έναν πυρήνα
8
Μέγιστος αριθμός εντολών ανά
πυρήνας
2 εκατομμύρια

Παράδειγμα

CudaArray* cu_array; υφή< float , 2 >tex; // Εκχώρηση πίνακα cudaMalloc( & cu_array, cudaCreateChannelDesc< float>(), πλάτος ύψος) ; // Αντιγραφή δεδομένων εικόνας στον πίνακα cudaMemcpy( cu_array, εικόνα, πλάτος* ύψος, cudaMemcpyHostToDevice) ; // Συνδέστε τον πίνακα στην υφή cudaBindTexture( tex, cu_array) ; // Εκτέλεση του πυρήνα dim3 blockDim(16, 16, 1) ; dim3 gridDim(width / blockDim.x, ύψος / blockDim.y, 1); πυρήνας<<< gridDim, blockDim, 0 >>> (d_odata, πλάτος, ύψος) ; cudaUnbindTexture(tex) ; __global__ void kernel(float * odata, int ύψος, int πλάτος) ( unsigned int x = blockIdx.x * blockDim.x + threadIdx.x ; unsigned int y = blockIdx.y * blockDim.y + threadIdx.y ; float = texfetch(tex, x, y) ; odata[ y* πλάτος+ x] = c; )

Εισαγωγή pycuda.driver ως drv εισαγωγή numpy drv.init() dev = drv.Device(0) ctx = dev.make_context() mod = drv.SourceModule( """ __global__ void multiply_them(float *dest, float *a, float *b) (const int i = threadIdx.x; dest[i] = a[i] * b[i]; ) """) multiply_them = mod.get_function ("multiply_them" ) a = numpy.random .randn (400 ) .atype (numpy.float32 ) b = numpy.random .randn (400 ) .astype (numpy.float_like . (a) multiply_them( drv.Out (dest) , drv.In (a) , drv.In (b) , block= (400 , 1 , 1 ) ) print dest-a*b

Το CUDA ως μάθημα στα πανεπιστήμια

Από τον Δεκέμβριο του 2009, το μοντέλο λογισμικού CUDA διδάσκεται σε 269 πανεπιστήμια σε όλο τον κόσμο. Στη Ρωσία, μαθήματα κατάρτισης στο CUDA δίνονται στο Πολυτεχνείο της Αγίας Πετρούπολης, στο Κρατικό Πανεπιστήμιο του Γιαροσλάβλ. P. G. Demidov, Moscow, Nizhny Novgorod, St. Petersburg, Tver, Kazan, Novosibirsk, Novosibirsk State Technical University, Omsk and Perm State Universities, International University of the Nature of Society and Man "Dubna", Ivanovo State Energy University, Belgorod State University , MSTU τους. Bauman, Ρωσικό Χημικό Τεχνικό Πανεπιστήμιο που πήρε το όνομά του. Mendeleev, Διαπεριφερειακό Κέντρο Υπερυπολογιστών RAS, . Επιπλέον, τον Δεκέμβριο του 2009, ανακοινώθηκε ότι άρχισε να λειτουργεί το πρώτο ρωσικό επιστημονικό και εκπαιδευτικό κέντρο "Parallel Computing", που βρίσκεται στην πόλη Dubna, τα καθήκοντα του οποίου περιλαμβάνουν εκπαίδευση και διαβουλεύσεις για την επίλυση πολύπλοκων υπολογιστικών προβλημάτων σε GPU.

Στην Ουκρανία, μαθήματα για το CUDA διδάσκονται στο Ινστιτούτο Ανάλυσης Συστημάτων του Κιέβου.

Συνδέσεις

Επίσημοι πόροι

  • CUDA Zone (Ρωσικά) - επίσημος ιστότοπος CUDA
  • CUDA GPU Computing (Αγγλικά) - επίσημα φόρουμ ιστού αφιερωμένα στον CUDA computing

Ανεπίσημοι πόροι

Tom's Hardware
  • Ντμίτρι Τσεκάνοφ. nVidia CUDA: υπολογισμός σε κάρτα βίντεο ή θάνατος της CPU; . Tom's Hardware (22 Ιουνίου 2008). Αρχειοθετήθηκε
  • Ντμίτρι Τσεκάνοφ. nVidia CUDA: Συγκριτική αξιολόγηση εφαρμογών GPU για τη μαζική αγορά. Tom's Hardware (19 Μαΐου 2009). Αρχειοθετήθηκε από το πρωτότυπο στις 4 Μαρτίου 2012. Ανακτήθηκε στις 19 Μαΐου 2009.
iXBT.com
  • Alexey Berillo. NVIDIA CUDA - μη γραφικός υπολογισμός σε GPU. Μέρος 1 . iXBT.com (23 Σεπτεμβρίου 2008). Αρχειοθετήθηκε από το πρωτότυπο στις 4 Μαρτίου 2012. Ανακτήθηκε στις 20 Ιανουαρίου 2009.
  • Alexey Berillo. NVIDIA CUDA - μη γραφικός υπολογισμός σε GPU. Μέρος 2ο . iXBT.com (22 Οκτωβρίου 2008). - Παραδείγματα υλοποίησης του NVIDIA CUDA. Αρχειοθετήθηκε από το πρωτότυπο στις 4 Μαρτίου 2012. Ανακτήθηκε στις 20 Ιανουαρίου 2009.
Άλλοι πόροι
  • Μπορέσκοφ Αλεξέι Βικτόροβιτς. CUDA Basics (20 Ιανουαρίου 2009). Αρχειοθετήθηκε από το πρωτότυπο στις 4 Μαρτίου 2012. Ανακτήθηκε στις 20 Ιανουαρίου 2009.
  • Βλαντιμίρ Φρόλοφ.Εισαγωγή στην τεχνολογία CUDA. Ηλεκτρονικό περιοδικό «Computer Graphics and Multimedia» (19 Δεκεμβρίου 2008). Αρχειοθετήθηκε από το πρωτότυπο στις 4 Μαρτίου 2012. Ανακτήθηκε στις 28 Οκτωβρίου 2009.
  • Ιγκόρ Οσκόλκοφ.Το NVIDIA CUDA είναι ένα προσιτό εισιτήριο για τον κόσμο των μεγάλων υπολογιστών. Computerra (30 Απριλίου 2009). Ανακτήθηκε στις 3 Μαΐου 2009.
  • Βλαντιμίρ Φρόλοφ.Εισαγωγή στην Τεχνολογία CUDA (1 Αυγούστου 2009). Αρχειοθετήθηκε από το πρωτότυπο στις 4 Μαρτίου 2012. Ανακτήθηκε στις 3 Απριλίου 2010.
  • GPGPU.ru. Χρήση καρτών γραφικών για υπολογιστές
  • . Παράλληλο Υπολογιστικό Κέντρο

Σημειώσεις

δείτε επίσης

Στην ανάπτυξη των σύγχρονων επεξεργαστών, υπάρχει μια τάση προς μια σταδιακή αύξηση του αριθμού των πυρήνων, γεγονός που αυξάνει τις δυνατότητές τους στον παράλληλο υπολογισμό. Ωστόσο, εδώ και πολύ καιρό υπάρχουν GPU που είναι σημαντικά ανώτερες από τις CPU από αυτή την άποψη. Και αυτές οι δυνατότητες των GPU έχουν ήδη ληφθεί υπόψη από ορισμένες εταιρείες. Οι πρώτες απόπειρες χρήσης επιταχυντών γραφικών για υπολογισμούς χωρίς στόχο έχουν γίνει από τα τέλη της δεκαετίας του '90. Αλλά μόνο η εμφάνιση των shaders έγινε η ώθηση για την ανάπτυξη μιας εντελώς νέας τεχνολογίας και το 2003 εμφανίστηκε η έννοια του GPGPU (General-purpose graphics processing units). Σημαντικό ρόλο στην ανάπτυξη αυτής της πρωτοβουλίας έπαιξε το BrookGPU, το οποίο είναι μια ειδική επέκταση για τη γλώσσα C. Πριν από την εμφάνιση του BrookGPU, οι προγραμματιστές μπορούσαν να εργαστούν με GPU μόνο μέσω του Direct3D ή του OpenGL API. Ο Brook επέτρεψε στους προγραμματιστές να εργαστούν με ένα οικείο περιβάλλον και ο ίδιος ο μεταγλωττιστής, χρησιμοποιώντας ειδικές βιβλιοθήκες, υλοποίησε την αλληλεπίδραση με τη GPU σε χαμηλό επίπεδο.

Μια τέτοια πρόοδος δεν μπορούσε παρά να προσελκύσει την προσοχή των ηγετών αυτού του κλάδου - της AMD και της NVIDIA, οι οποίοι άρχισαν να αναπτύσσουν τις δικές τους πλατφόρμες λογισμικού για μη γραφικούς υπολογιστές στις κάρτες γραφικών τους. Κανείς δεν γνωρίζει καλύτερα από τους προγραμματιστές GPU όλες τις αποχρώσεις και τα χαρακτηριστικά των προϊόντων τους, γεγονός που επιτρέπει σε αυτές τις ίδιες εταιρείες να βελτιστοποιούν το πακέτο λογισμικού για συγκεκριμένες λύσεις υλικού όσο το δυνατόν πιο αποτελεσματικά. Επί του παρόντος, η NVIDIA αναπτύσσει την πλατφόρμα CUDA (Compute Unified Device Architecture)· η AMD καλεί παρόμοια τεχνολογία CTM (Close To Metal) ή AMD Stream Computing. Θα δούμε μερικές από τις δυνατότητες του CUDA και θα αξιολογήσουμε στην πράξη τις υπολογιστικές δυνατότητες του τσιπ γραφικών G92 της κάρτας γραφικών GeForce 8800 GT.

Αλλά πρώτα, ας δούμε μερικές από τις αποχρώσεις της εκτέλεσης υπολογισμών με χρήση GPU. Το κύριο πλεονέκτημά τους είναι ότι το τσιπ γραφικών σχεδιάστηκε αρχικά για να εκτελεί πολλαπλά νήματα, ενώ κάθε πυρήνας μιας συμβατικής CPU εκτελεί μια ροή διαδοχικών εντολών. Οποιαδήποτε σύγχρονη GPU είναι ένας πολυεπεξεργαστής που αποτελείται από πολλά συμπλέγματα υπολογιστών, με πολλές ALU σε καθεμία. Το πιο ισχυρό σύγχρονο τσιπ GT200 αποτελείται από 10 τέτοια συμπλέγματα, καθένα από τα οποία έχει 24 επεξεργαστές ροής. Η δοκιμασμένη κάρτα γραφικών GeForce 8800 GT που βασίζεται στο τσιπ G92 διαθέτει επτά μεγάλες υπολογιστικές μονάδες με 16 επεξεργαστές ροής η καθεμία. Οι CPU χρησιμοποιούν μπλοκ SIMD SSE για διανυσματικούς υπολογισμούς (πολλαπλά δεδομένα μιας εντολής - μία εντολή εκτελείται σε πολλαπλά δεδομένα), κάτι που απαιτεί μετατροπή των δεδομένων σε 4 διανύσματα. Η GPU επεξεργάζεται τα νήματα κλιμακωτά, π.χ. μία εντολή εφαρμόζεται σε πολλά νήματα (SIMT - πολλαπλά νήματα απλής εντολής). Αυτό εξοικονομεί τους προγραμματιστές από τη μετατροπή δεδομένων σε διανύσματα και επιτρέπει την αυθαίρετη διακλάδωση σε ροές. Κάθε υπολογιστική μονάδα GPU έχει άμεση πρόσβαση στη μνήμη. Και το εύρος ζώνης της μνήμης βίντεο είναι υψηλότερο, χάρη στη χρήση πολλών ξεχωριστών ελεγκτών μνήμης (στο κορυφαίο G200 υπάρχουν 8 κανάλια 64 bit) και υψηλές συχνότητες λειτουργίας.

Γενικά, σε ορισμένες εργασίες όταν εργάζεστε με μεγάλες ποσότητες δεδομένων, οι GPU είναι πολύ πιο γρήγορες από τις CPU. Παρακάτω βλέπετε μια απεικόνιση αυτής της δήλωσης:


Το διάγραμμα δείχνει τη δυναμική της αύξησης της απόδοσης της CPU και της GPU από το 2003. Η NVIDIA θέλει να αναφέρει αυτά τα δεδομένα ως διαφήμιση στα έγγραφά της, αλλά είναι μόνο θεωρητικοί υπολογισμοί και στην πραγματικότητα το χάσμα, φυσικά, μπορεί να αποδειχθεί πολύ μικρότερο.

Ωστόσο, όπως και να έχει, υπάρχει ένα τεράστιο δυναμικό GPU που μπορούν να χρησιμοποιηθούν και που απαιτεί μια συγκεκριμένη προσέγγιση στην ανάπτυξη λογισμικού. Όλα αυτά υλοποιούνται στο περιβάλλον υλικού και λογισμικού CUDA, το οποίο αποτελείται από πολλά επίπεδα λογισμικού - το υψηλού επιπέδου CUDA Runtime API και το χαμηλού επιπέδου CUDA Driver API.


Το CUDA χρησιμοποιεί την τυπική γλώσσα C για προγραμματισμό, η οποία είναι ένα από τα κύρια πλεονεκτήματά του για τους προγραμματιστές. Αρχικά, το CUDA περιλαμβάνει τις βιβλιοθήκες BLAS (βασικό πακέτο γραμμικής άλγεβρας) και FFT (μετασχηματισμός Fourier). Το CUDA έχει επίσης τη δυνατότητα αλληλεπίδρασης με τα API γραφικών OpenGL ή DirectX, τη δυνατότητα ανάπτυξης σε χαμηλό επίπεδο και χαρακτηρίζεται από μια βελτιστοποιημένη κατανομή των ροών δεδομένων μεταξύ της CPU και της GPU. Οι υπολογισμοί CUDA εκτελούνται ταυτόχρονα με τους γραφικούς, σε αντίθεση με την παρόμοια πλατφόρμα AMD, όπου εκκινείται μια ειδική εικονική μηχανή για υπολογισμούς στη GPU. Αλλά μια τέτοια «συγκατοίκηση» είναι επίσης γεμάτη σφάλματα εάν δημιουργείται μεγάλο φορτίο από το API γραφικών ενώ το CUDA εκτελείται ταυτόχρονα - εξάλλου, οι λειτουργίες γραφικών εξακολουθούν να έχουν μεγαλύτερη προτεραιότητα. Η πλατφόρμα είναι συμβατή με λειτουργικά συστήματα 32 και 64 bit Windows XP, Windows Vista, MacOS X και διάφορες εκδόσεις Linux. Η πλατφόρμα είναι ανοιχτή και στον ιστότοπο, εκτός από τα ειδικά προγράμματα οδήγησης για την κάρτα βίντεο, μπορείτε να κατεβάσετε πακέτα λογισμικού CUDA Toolkit, CUDA Developer SDK, συμπεριλαμβανομένου ενός μεταγλωττιστή, προγράμματος εντοπισμού σφαλμάτων, τυπικών βιβλιοθηκών και τεκμηρίωσης.

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

Ως πρακτική δοκιμή της νέας τεχνολογίας στην κάρτα γραφικών MSI NX8800GT-T2D256E-OC, θα χρησιμοποιήσουμε το πρόγραμμα TMPGEnc. Αυτό το προϊόν είναι εμπορικό (η πλήρης έκδοση κοστίζει 100 $), αλλά για κάρτες γραφικών MSI έρχεται ως μπόνους σε δοκιμαστική έκδοση για περίοδο 30 ημερών. Μπορείτε να κάνετε λήψη αυτής της έκδοσης από τον ιστότοπο του προγραμματιστή, αλλά για να εγκαταστήσετε το TMPGEnc 4.0 XPress MSI Special Edition χρειάζεστε τον αρχικό δίσκο με προγράμματα οδήγησης από την κάρτα MSI - χωρίς αυτόν το πρόγραμμα δεν θα εγκατασταθεί.

Για να εμφανίσετε τις πληρέστερες πληροφορίες σχετικά με τις υπολογιστικές δυνατότητες στο CUDA και να τις συγκρίνετε με άλλους προσαρμογείς βίντεο, μπορείτε να χρησιμοποιήσετε το ειδικό βοηθητικό πρόγραμμα CUDA-Z. Αυτές είναι οι πληροφορίες που δίνει για την κάρτα γραφικών GeForce 8800GT:




Σε σύγκριση με τα μοντέλα αναφοράς, το αντίγραφό μας λειτουργεί σε υψηλότερες συχνότητες: ο τομέας ράστερ είναι 63 MHz υψηλότερος από τον ονομαστικό και οι μονάδες σκίασης είναι ταχύτερες κατά 174 MHz και η μνήμη είναι 100 MHz ταχύτερη.

Θα συγκρίνουμε την ταχύτητα μετατροπής του ίδιου βίντεο HD κατά τον υπολογισμό μόνο με χρήση της CPU και με την πρόσθετη ενεργοποίηση του CUDA στο πρόγραμμα TMPGEnc στην ακόλουθη διαμόρφωση:

  • Επεξεργαστής: Pentium Dual-Core E5200 2,5 GHz;
  • Μητρική πλακέτα: Gigabyte P35-S3;
  • Μνήμη: 2x1GB GoodRam PC6400 (5-5-5-18-2T)
  • Κάρτα βίντεο: MSI NX8800GT-T2D256E-OC;
  • Σκληρός δίσκος: 320 GB WD3200AAKS;
  • Τροφοδοτικό: CoolerMaster eXtreme Power 500-PCAP;
  • Λειτουργικό σύστημα: Windows XP SP2;
  • TMPGEnc 4.0 XPress 4.6.3.268;
  • Προγράμματα οδήγησης κάρτας γραφικών: ForceWare 180.60.
Για δοκιμές, ο επεξεργαστής υπερχρονίστηκε στα 3 GHz (στη διαμόρφωση 11,5x261 MHz) και στα 4 GHz (11,5x348 MHz) με συχνότητα RAM 835 MHz στην πρώτη και στη δεύτερη περίπτωση. Βίντεο σε ανάλυση Full HD 1920x1080, διάρκειας ενός λεπτού και είκοσι δευτερολέπτων. Για τη δημιουργία πρόσθετου φορτίου, ενεργοποιήθηκε ένα φίλτρο μείωσης θορύβου, οι ρυθμίσεις του οποίου παρέμειναν στις προεπιλογές.


Η κωδικοποίηση πραγματοποιήθηκε χρησιμοποιώντας τον κωδικοποιητή DivX 6.8.4. Στις ρυθμίσεις ποιότητας αυτού του κωδικοποιητή, όλες οι τιμές παραμένουν στην προεπιλογή, η λειτουργία πολλαπλών νημάτων είναι ενεργοποιημένη.


Η υποστήριξη πολλαπλών νημάτων στο TMPGEnc είναι αρχικά ενεργοποιημένη στην καρτέλα ρυθμίσεων CPU/GPU. Στην ίδια ενότητα ενεργοποιείται και το CUDA.


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

Με βάση τα αποτελέσματα των δοκιμών, προέκυψαν τα ακόλουθα δεδομένα:


Στα 4 GHz με ενεργοποιημένο το CUDA, κερδίσαμε μόνο μερικά δευτερόλεπτα (ή 2%), κάτι που δεν είναι ιδιαίτερα εντυπωσιακό. Αλλά σε χαμηλότερη συχνότητα, η αύξηση από την ενεργοποίηση αυτής της τεχνολογίας σάς επιτρέπει να εξοικονομήσετε περίπου 13% του χρόνου, κάτι που θα είναι αρκετά αισθητό κατά την επεξεργασία μεγάλων αρχείων. Αλλά και πάλι τα αποτελέσματα δεν είναι τόσο εντυπωσιακά όσο αναμενόταν.

Το πρόγραμμα TMPGEnc διαθέτει ένδειξη φόρτωσης CPU και CUDA· σε αυτήν τη διαμόρφωση δοκιμής, έδειξε το φορτίο της CPU στο 20% περίπου και τον πυρήνα γραφικών στο υπόλοιπο 80%. Ως αποτέλεσμα, έχουμε το ίδιο 100% όπως κατά τη μετατροπή χωρίς CUDA, και μπορεί να μην υπάρχει καθόλου χρονική διαφορά (αλλά εξακολουθεί να υπάρχει). Η μικρή χωρητικότητα μνήμης των 256 MB δεν αποτελεί επίσης περιοριστικό παράγοντα. Κρίνοντας από τις μετρήσεις από το RivaTuner, δεν χρησιμοποιήθηκαν περισσότερα από 154 MB μνήμης βίντεο κατά τη λειτουργία.



συμπεράσματα

Το πρόγραμμα TMPGEnc είναι ένα από αυτά που εισάγουν την τεχνολογία CUDA στις μάζες. Η χρήση της GPU σε αυτό το πρόγραμμα σάς επιτρέπει να επιταχύνετε τη διαδικασία επεξεργασίας βίντεο και να ανακουφίσετε σημαντικά τον κεντρικό επεξεργαστή, γεγονός που θα επιτρέψει στον χρήστη να κάνει άνετα άλλες εργασίες ταυτόχρονα. Στο συγκεκριμένο παράδειγμά μας, η κάρτα γραφικών GeForce 8800GT 256MB βελτίωσε ελαφρώς την απόδοση χρονισμού κατά τη μετατροπή βίντεο με βάση έναν υπερχρονισμένο επεξεργαστή Pentium Dual-Core E5200. Αλλά είναι ξεκάθαρα ορατό ότι όσο μειώνεται η συχνότητα, αυξάνεται το κέρδος από την ενεργοποίηση του CUDA· σε ασθενείς επεξεργαστές, το κέρδος από τη χρήση του θα είναι πολύ μεγαλύτερο. Στο πλαίσιο αυτής της εξάρτησης, είναι πολύ λογικό να υποθέσουμε ότι ακόμη και με αύξηση του φορτίου (για παράδειγμα, η χρήση ενός πολύ μεγάλου αριθμού πρόσθετων φίλτρων βίντεο), τα αποτελέσματα ενός συστήματος με CUDA θα διακρίνονται από σημαντικό δέλτα της διαφοράς στον χρόνο που αφιερώθηκε στη διαδικασία κωδικοποίησης. Επίσης, μην ξεχνάτε ότι το G92 δεν είναι το πιο ισχυρό τσιπ αυτή τη στιγμή και οι πιο σύγχρονες κάρτες γραφικών θα παρέχουν σημαντικά υψηλότερη απόδοση σε τέτοιες εφαρμογές. Ωστόσο, ενώ η εφαρμογή εκτελείται, η GPU δεν φορτώνεται πλήρως και, πιθανώς, η κατανομή του φορτίου εξαρτάται από κάθε διαμόρφωση ξεχωριστά, συγκεκριμένα από τον συνδυασμό επεξεργαστή/κάρτας βίντεο, ο οποίος τελικά μπορεί να δώσει μεγαλύτερη (ή μικρότερη) αύξηση ως ποσοστό ενεργοποίησης CUDA. Σε κάθε περίπτωση, για όσους εργάζονται με μεγάλους όγκους δεδομένων βίντεο, αυτή η τεχνολογία θα τους επιτρέψει να εξοικονομήσουν σημαντικά χρόνο.

Είναι αλήθεια ότι το CUDA δεν έχει ακόμη αποκτήσει ευρεία δημοτικότητα· η ποιότητα του λογισμικού που λειτουργεί με αυτήν την τεχνολογία απαιτεί βελτίωση. Στο πρόγραμμα TMPGEnc 4.0 XPress που εξετάσαμε, αυτή η τεχνολογία δεν λειτουργούσε πάντα. Το ίδιο βίντεο θα μπορούσε να επανακωδικοποιηθεί πολλές φορές και, στη συνέχεια, ξαφνικά, την επόμενη φορά που κυκλοφόρησε, το φορτίο CUDA ήταν ήδη 0%. Και αυτό το φαινόμενο ήταν εντελώς τυχαίο σε εντελώς διαφορετικά λειτουργικά συστήματα. Επίσης, το εν λόγω πρόγραμμα αρνήθηκε να χρησιμοποιήσει το CUDA κατά την κωδικοποίηση σε μορφή XviD, αλλά δεν υπήρχαν προβλήματα με τον δημοφιλή κωδικοποιητή DivX.

Ως αποτέλεσμα, μέχρι στιγμής η τεχνολογία CUDA μπορεί να αυξήσει σημαντικά την απόδοση των προσωπικών υπολογιστών μόνο σε ορισμένες εργασίες. Αλλά το πεδίο εφαρμογής μιας τέτοιας τεχνολογίας θα επεκταθεί και η διαδικασία αύξησης του αριθμού των πυρήνων σε συμβατικούς επεξεργαστές υποδηλώνει αύξηση της ζήτησης για παράλληλους υπολογιστές πολλαπλών νημάτων σε σύγχρονες εφαρμογές λογισμικού. Δεν είναι τυχαίο που πρόσφατα όλοι οι ηγέτες του κλάδου έχουν εμμονή με την ιδέα του συνδυασμού CPU και GPU σε μια ενοποιημένη αρχιτεκτονική (απλώς θυμηθείτε το πολυδιαφημισμένο AMD Fusion). Ίσως το CUDA να είναι ένα από τα στάδια της διαδικασίας αυτής της ενοποίησης.


Ευχαριστούμε τις ακόλουθες εταιρείες για την παροχή εξοπλισμού δοκιμής:

– ένα σύνολο διεπαφών λογισμικού χαμηλού επιπέδου ( API) για τη δημιουργία παιχνιδιών και άλλων εφαρμογών πολυμέσων υψηλής απόδοσης. Περιλαμβάνει υποστήριξη υψηλής απόδοσης 2D- Και 3D- συσκευές γραφικών, ήχου και εισόδου.

Direct3D (D3D) – διεπαφή για εμφάνιση τρισδιάστατων πρωτόγονοι(γεωμετρικά σώματα). Συμπεριλαμβανεται σε .

OpenGL(από τα Αγγλικά Ανοίξτε τη Βιβλιοθήκη Γραφικών, κυριολεκτικά - ανοιχτή βιβλιοθήκη γραφικών) είναι μια προδιαγραφή που ορίζει μια διεπαφή προγραμματισμού πολλαπλών πλατφορμών ανεξάρτητη από τη γλώσσα προγραμματισμού για τη σύνταξη εφαρμογών χρησιμοποιώντας δισδιάστατα και τρισδιάστατα γραφικά υπολογιστή. Περιλαμβάνει περισσότερες από 250 λειτουργίες για τη σχεδίαση σύνθετων τρισδιάστατων σκηνών από απλά πρωτόγονα. Χρησιμοποιείται για τη δημιουργία βιντεοπαιχνιδιών, εικονικής πραγματικότητας και οπτικοποίησης στην επιστημονική έρευνα. Στην πλατφόρμα Windowsανταγωνίζεται με .

OpenCL(από τα Αγγλικά Ανοίξτε τη γλώσσα υπολογιστών, κυριολεκτικά – μια ανοιχτή γλώσσα υπολογισμών) – δομή(πλαίσιο συστήματος λογισμικού) για τη συγγραφή προγραμμάτων υπολογιστή που σχετίζονται με παράλληλους υπολογιστές σε διάφορα γραφικά ( GPU) Και ( ). Στο πλαίσιο OpenCLπεριλαμβάνει μια γλώσσα προγραμματισμού και μια διεπαφή προγραμματισμού εφαρμογών ( API). OpenCLπαρέχει παραλληλισμό σε επίπεδο εντολών και σε επίπεδο δεδομένων και αποτελεί υλοποίηση της τεχνικής GPGPU.

GPGPU(συντομογραφία από τα αγγλικά) Μονάδες επεξεργασίας γενικής χρήσης, Κυριολεκτικά - GPUγενικού σκοπού) είναι μια τεχνική για τη χρήση μιας μονάδας επεξεργασίας γραφικών (GPU) ή μιας κάρτας βίντεο για γενικούς υπολογισμούς που συνήθως εκτελούνται από έναν υπολογιστή.

Shader(Αγγλικά) σκίαση) – ένα πρόγραμμα για την κατασκευή σκιών σε συνθετικές εικόνες, που χρησιμοποιείται σε τρισδιάστατα γραφικά για τον προσδιορισμό των τελικών παραμέτρων ενός αντικειμένου ή μιας εικόνας. Συνήθως περιλαμβάνει αυθαίρετα πολύπλοκες περιγραφές απορρόφησης και σκέδασης φωτός, χαρτογράφηση υφής, ανάκλαση και διάθλαση, σκίαση, μετατόπιση επιφάνειας και εφέ μετά την επεξεργασία. Οι σύνθετες επιφάνειες μπορούν να οπτικοποιηθούν χρησιμοποιώντας απλά γεωμετρικά σχήματα.

Απόδοση(Αγγλικά) απόδοση) – οπτικοποίηση, στα γραφικά υπολογιστή, η διαδικασία λήψης εικόνας από μοντέλο με χρήση λογισμικού.

SDK(συντομογραφία από τα αγγλικά) Κιτ ανάπτυξης λογισμικού) – ένα σύνολο εργαλείων ανάπτυξης λογισμικού.

ΕΠΕΞΕΡΓΑΣΤΗΣ(συντομογραφία από τα αγγλικά) Κεντρική μονάδα επεξεργασίας, κυριολεκτικά – κεντρική/κύρια/κύρια υπολογιστική συσκευή) – κεντρική (μικρο)· μια συσκευή που εκτελεί εντολές μηχανής· ένα κομμάτι υλικού υπεύθυνου για την εκτέλεση υπολογιστικών λειτουργιών (που καθορίζονται από το λειτουργικό σύστημα και το λογισμικό εφαρμογής) και τον συντονισμό της λειτουργίας όλων των συσκευών.

GPU(συντομογραφία από τα αγγλικά) Μονάδα Επεξεργασίας Γραφικών, κυριολεκτικά – γραφική υπολογιστική συσκευή) – επεξεργαστής γραφικών. μια ξεχωριστή συσκευή ή κονσόλα παιχνιδιών που εκτελεί γραφική απόδοση (οπτικοποίηση). Οι σύγχρονες GPU είναι πολύ αποτελεσματικές στην επεξεργασία και την εμφάνιση γραφικών υπολογιστών με ρεαλιστικό τρόπο. Ο επεξεργαστής γραφικών στους σύγχρονους προσαρμογείς βίντεο χρησιμοποιείται ως επιταχυντής γραφικών 3D, αλλά σε ορισμένες περιπτώσεις μπορεί επίσης να χρησιμοποιηθεί για υπολογισμούς ( GPGPU).

Προβλήματα ΕΠΕΞΕΡΓΑΣΤΗΣ

Για μεγάλο χρονικό διάστημα, η αύξηση της απόδοσης των παραδοσιακών συνέβη κυρίως λόγω της σταθερής αύξησης της συχνότητας ρολογιού (περίπου το 80% της απόδοσης καθορίστηκε από τη συχνότητα ρολογιού) με ταυτόχρονη αύξηση του αριθμού των τρανζίστορ σε ένα τσιπ . Ωστόσο, μια περαιτέρω αύξηση της συχνότητας ρολογιού (σε συχνότητα ρολογιού μεγαλύτερη από 3,8 GHz, τα τσιπ απλώς υπερθερμαίνονται!) συναντά μια σειρά από θεμελιώδη φυσικά εμπόδια (καθώς η τεχνολογική διαδικασία έχει σχεδόν πλησιάσει το μέγεθος ενός ατόμου: , και το μέγεθος ενός ατόμου πυριτίου είναι περίπου 0,543 nm):

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

Δεύτερον, τα οφέλη από τις υψηλότερες ταχύτητες ρολογιού αναιρούνται εν μέρει από την καθυστέρηση πρόσβασης στη μνήμη, καθώς οι χρόνοι πρόσβασης στη μνήμη δεν συμβαδίζουν με τις αυξανόμενες ταχύτητες ρολογιού.

Τρίτον, για ορισμένες εφαρμογές, οι παραδοσιακές σειριακές αρχιτεκτονικές καθίστανται αναποτελεσματικές καθώς οι ταχύτητες ρολογιού αυξάνονται λόγω του λεγόμενου «von Neumann bottleneck», ένας περιορισμός απόδοσης που προκύπτει από τη διαδοχική ροή υπολογισμού. Ταυτόχρονα, αυξάνονται οι καθυστερήσεις μετάδοσης σήματος με ωμική-χωρητική αντίσταση, κάτι που είναι ένα επιπλέον εμπόδιο που σχετίζεται με την αύξηση της συχνότητας ρολογιού.

Ανάπτυξη GPU

Παράλληλα με αυτό υπήρξε (και υπάρχει!) ανάπτυξη GPU:

Νοέμβριος 2008 – Intelεισήγαγε μια σειρά 4 πυρήνων Intel Core i7, τα οποία βασίζονται σε μια μικροαρχιτεκτονική νέας γενιάς Nehalem. Οι επεξεργαστές λειτουργούν σε συχνότητα ρολογιού 2,6-3,2 GHz. Κατασκευασμένο με τεχνολογία διεργασίας 45nm.

Δεκέμβριος 2008 – ξεκίνησαν οι παραδόσεις 4 πυρήνων AMD Phenom II 940(κωδικό όνομα - Ντένεμπ). Λειτουργεί σε συχνότητα 3 GHz, που παράγεται με τεχνολογία διεργασίας 45 nm.

Μάιος 2009 – εταιρεία AMDπαρουσίασε την έκδοση GPU ATI Radeon HD 4890με την ταχύτητα ρολογιού του πυρήνα αυξημένη από 850 MHz σε 1 GHz. Αυτό είναι το πρώτο γραφικόςεπεξεργαστής που λειτουργεί στο 1 GHz. Η υπολογιστική ισχύς του τσιπ, χάρη στην αύξηση της συχνότητας, αυξήθηκε από 1,36 σε 1,6 teraflops. Ο επεξεργαστής περιέχει 800 (!) υπολογιστικούς πυρήνες και υποστηρίζει μνήμη βίντεο GDDR5, DirectX 10.1, ATI CrossFireXκαι όλες τις άλλες τεχνολογίες που είναι εγγενείς στα σύγχρονα μοντέλα καρτών γραφικών. Το τσιπ κατασκευάζεται με βάση την τεχνολογία 55 nm.

Βασικές διαφορές GPU

Χαρακτηριστικά γνωρίσματα GPU(σε σύγκριση με το ) είναι:

– μια αρχιτεκτονική που στοχεύει στο μέγιστο βαθμό στην αύξηση της ταχύτητας υπολογισμού των υφών και των πολύπλοκων γραφικών αντικειμένων.

– τυπική μέγιστη ισχύς GPUπολύ υψηλότερο από αυτό ;

– χάρη σε μια εξειδικευμένη αρχιτεκτονική μεταφοράς, GPUπολύ πιο αποτελεσματική στην επεξεργασία γραφικών πληροφοριών από ό,τι .

"Κρίση του είδους"

«Κρίση είδους» για ωρίμασαν μέχρι το 2005 - τότε εμφανίστηκαν. Όμως, παρά την ανάπτυξη της τεχνολογίας, η αύξηση της παραγωγικότητας των συμβατικών μειώθηκε αισθητά. Ταυτόχρονα απόδοση GPUσυνεχίζει να αυξάνεται. Έτσι, μέχρι το 2003, αυτή η επαναστατική ιδέα αποκρυσταλλώθηκε - χρησιμοποιήστε την υπολογιστική ισχύ των γραφικών για τις ανάγκες σας. Οι GPU χρησιμοποιούνται ολοένα και περισσότερο για «μη γραφικούς» υπολογιστές (προσομοίωση φυσικής, επεξεργασία σήματος, υπολογιστικά μαθηματικά/γεωμετρία, λειτουργίες βάσης δεδομένων, υπολογιστική βιολογία, υπολογιστικά οικονομικά, υπολογιστική όραση, κ.λπ.).

Το κύριο πρόβλημα ήταν ότι δεν υπήρχε τυπική διεπαφή προγραμματισμού GPU. Οι προγραμματιστές χρησιμοποίησαν OpenGLή Direct3D, αλλά ήταν πολύ βολικό. Εταιρεία NVIDIA(ένας από τους μεγαλύτερους κατασκευαστές επεξεργαστών γραφικών, πολυμέσων και επικοινωνιών, καθώς και ασύρματων επεξεργαστών πολυμέσων· ιδρύθηκε το 1993) άρχισε να αναπτύσσει ένα ενιαίο και βολικό πρότυπο - και εισήγαγε την τεχνολογία CUDA.

Πώς ξεκίνησε

2006 – NVIDIAκαταδεικνύει CUDA™; η αρχή μιας επανάστασης στους υπολογιστές GPU.

2007 – NVIDIAαπελευθερώνει την αρχιτεκτονική CUDA(ΑΥΘΕΝΤΙΚΗ ΕΚΔΟΧΗ CUDA SDKυποβλήθηκε στις 15 Φεβρουαρίου 2007). υποψηφιότητα «Καλύτερο Νέο Προϊόν» από το περιοδικό Λαϊκή Επιστήμηκαι «Επιλογή Αναγνωστών» από την έκδοση HPCWire.

2008 – τεχνολογία NVIDIA CUDAκέρδισε την κατηγορία «Τεχνική Αριστεία» από PC Magazine.

Τι συνέβη CUDA

CUDA(συντομογραφία από τα αγγλικά) Υπολογισμός Ενοποιημένης Αρχιτεκτονικής Συσκευών, κυριολεκτικά - ενοποιημένη αρχιτεκτονική υπολογιστών συσκευών) - αρχιτεκτονική (ένα σύνολο λογισμικού και υλικού) που σας επιτρέπει να παράγετε σε GPUυπολογισμοί γενικού σκοπού, ενώ GPUστην πραγματικότητα λειτουργεί ως ένας ισχυρός συνεπεξεργαστής.

Τεχνολογία NVIDIA CUDA™είναι το μόνο περιβάλλον ανάπτυξης σε μια γλώσσα προγραμματισμού ντο, το οποίο επιτρέπει στους προγραμματιστές να δημιουργούν λογισμικό που επιλύει πολύπλοκα υπολογιστικά προβλήματα σε λιγότερο χρόνο, χάρη στην επεξεργαστική ισχύ των GPU. Εκατομμύρια άνθρωποι εργάζονται ήδη στον κόσμο GPUμε την υποστήριξη CUDA, και χιλιάδες προγραμματιστές χρησιμοποιούν ήδη (δωρεάν!) εργαλεία CUDAγια την επιτάχυνση των εφαρμογών και την επίλυση των πιο περίπλοκων εργασιών έντασης πόρων - από κωδικοποίηση βίντεο και ήχου έως εξερεύνηση πετρελαίου και φυσικού αερίου, μοντελοποίηση προϊόντων, ιατρική απεικόνιση και επιστημονική έρευνα.

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

Uralsky, κορυφαίος ειδικός στην τεχνολογία NVIDIA, συγκρίνοντας GPUΚαι , λέει το εξής: - Αυτό είναι ένα SUV. Οδηγεί πάντα και παντού, αλλά όχι πολύ γρήγορα. ΕΝΑ GPU- Αυτό είναι ένα σπορ αυτοκίνητο. Σε έναν κακό δρόμο, απλά δεν θα πάει πουθενά, αλλά θα του δώσει μια καλή επιφάνεια και θα δείξει όλη του την ταχύτητά του, την οποία ένα SUV δεν έχει καν ονειρευτεί ποτέ!..”

Τεχνολογικές δυνατότητες CUDA