GPU Computing – Τι είναι;

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

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

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

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

Τι είναι μια GPU;

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

Οι GPU ήταν αρχικά απλές συσκευές που συνδυάζουν γραφικά στοιχεία για να δημιουργήσουν μια ιδανική έξοδο για μια συγκεκριμένη συσκευή. Με την πάροδο του χρόνου, ωστόσο, και με την έλευση των παιχνιδιών υπολογιστών, οι GPU άρχισαν να αυξάνονται σε πολυπλοκότητα και δύναμη, δημιουργώντας GPGPU ή Υπολογισμός Γενικού Σκοπού σε GPU.

Τι είναι το GPU Computing;

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

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

Καθώς η CPU του υπολογιστή γινόταν πιο ισχυρή και μπορούσε να χειριστεί πιο πολύπλοκα προγράμματα και παιχνίδια, οι κατασκευαστές καρτών βίντεο προσπάθησαν επίσης να συμβαδίσουν με τις εξελίξεις στους σύγχρονους υπολογιστές και τα τρισδιάστατα γραφικά. Η Nvidia αποκάλυψε το GeForce 256 το 1999 ως η πρώτη κάρτα βίντεο GPU στον κόσμο και τα πράγματα εξελίχθηκαν από εκεί.

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

Ποιες είναι οι εφαρμογές για υπολογιστές GPU;

Οι εφαρμογές των υπολογιστών GPU είναι πολλές, εδώ είναι μια ματιά σε μερικές κορυφαίες χρήσεις:

  1. Μηχανική μάθηση και νευρωνικά δίκτυα
  2. Ασαφής λογική
  3. Βιοπληροφορική
  4. Μοριακή μοντελοποίηση
  5. Απόδοση βίντεο
  6. Γεωμετρικός υπολογισμός
  7. Έρευνα για το κλίμα και πρόγνωση καιρού
  8. Αστροφυσική
  9. Κρυπτογράφηση
  10. Οραματισμός υπολογιστών
  11. Σπάσιμο κωδικού πρόσβασης
  12. Κβαντική έρευνα

GPU Vs Επεξεργασία CPU

Οι GPU και οι CPU επεξεργάζονται ψηφιακά δεδομένα, αλλά το κάνουν με διαφορετικούς τρόπους. Η CPU ή η κεντρική μονάδα επεξεργασίας έχει σχεδιαστεί για σειριακή επεξεργασία σε υψηλές ταχύτητες, ενώ οι GPU έχουν σχεδιαστεί για παράλληλη επεξεργασία σε πολύ χαμηλότερες ταχύτητες. Φυσικά, μια CPU μπορεί να χρησιμοποιήσει το hyper-threading για να πάρει 2 νήματα ανά πυρήνα ή ακόμα και να έχει δεκάδες πυρήνες, αλλά είναι ουσιαστικά σειριακούς επεξεργαστές.

Ενώ οι CPU μπορούν να έχουν λίγους πυρήνες, οι σύγχρονες GPU διαθέτουν χιλιάδες πυρήνες, για παράδειγμα, Nvidia GeForce RTX 3090 που διαθέτει πυρήνες 10K+. Ωστόσο, για να έχετε ένα πλεονέκτημα έναντι των CPU, τα δεδομένα πρέπει να είναι ικανά για παράλληλη επεξεργασία, όπως η επεξεργασία μιας ροής που περιέχει χιλιάδες εικόνες εν κινήσει.

GPU εναντίον ASIC

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

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

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

GPU Vs Cluster Computing

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

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

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

Επιτάχυνση GPU Vs Hyper-threading

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

Οι σχεδιαστές υπολογιστών μπορούν να αποφύγουν αυτό το τρομακτικό σενάριο χρησιμοποιώντας είτε υπερ-νηματοποίηση είτε επιτάχυνση GPU. Το Hyper-threading επιτρέπει σε έναν πυρήνα CPU να λειτουργεί ως δύο νήματα επεξεργασίας. Έτσι, όταν ένα νήμα παγιδεύεται σε έναν βρόχο έντασης υπολογιστών, το άλλο νήμα μπορεί να κρατήσει το σύστημα ενωμένο.

Οι σύγχρονοι υπολογιστές έχουν πλέον πολλαπλούς πυρήνες από 2 έως 4, 8, 16, 32 και ούτω καθεξής. Επιπλέον, διαθέτουν hyper-threading, έτσι μια CPU 2 πυρήνων προσφέρει 4 νήματα, ένας 4 πυρήνων προσφέρει 8 νήματα και ούτω καθεξής.

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

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

Βασικές αρχές προγραμματισμού GPGPU

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

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

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

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

CUDA Cores Vs Stream Processors

Συχνά, θα συναντήσετε τους όρους Πυρήνες Cuda και επεξεργαστές ροής. Και οι δύο όροι αναφέρονται απλώς στον πυρήνα της GPU ή Αριθμητικές Λογικές Μονάδες μιας GPU. Το CUDA Core είναι μια αποκλειστική τεχνολογία της Nvidia, ενώ οι επεξεργαστές Stream είναι της AMD.

Ένας άλλος όρος που μπορεί να συναντήσετε είναι Streaming Multi-Processor ή SM. Αυτή είναι μια άλλη τεχνολογία Nvidia που αρχικά ομαδοποιούσε 8 πυρήνες CUDA ανά SM. Εκτελεί παραμορφώσεις 32 νημάτων εν κινήσει, χρησιμοποιώντας 4 κύκλους ρολογιού ανά εντολή. Τα νεότερα σχέδια διαθέτουν πλέον πάνω από 100 πυρήνες ανά πολυεπεξεργαστή ροής.

Κορυφαίες γλώσσες και βιβλιοθήκες GPU

Υπάρχουν τόσες πολλές βιβλιοθήκες και γλώσσες εκεί έξω που λειτουργούν τόσο σε πλατφόρμες Nvidia CUDA όσο και σε πλατφόρμες AMD. Ακολουθούν μερικά μόνο:

  1. Nvidia cuBLAS – Βασικά υποπρογράμματα γραμμικής άλγεβρας για CUDA
  2. cuDNN – Βιβλιοθήκη βαθιάς νευρωνικών δικτύων
  3. OpenCL – Ανοιχτό πρότυπο για παράλληλο προγραμματισμό
  4. Openmp – Για GPU της AMD
  5. ΙΣΧΙΟ – Βιβλιοθήκη C++
  6. Nvidia CURAND – Δημιουργία τυχαίων αριθμών
  7. CUFFT – Για γρήγορο μετασχηματισμό Fourier
  8. Nvidia NPP – Επεξεργασία 2D εικόνας και σήματος
  9. GPU VSIPL – Διανυσματική επεξεργασία εικόνας και σήματος
  10. OpenCV – Βιβλιοθήκη GPU για όραση υπολογιστή
  11. OpenACC – Γλώσσα για παράλληλη ανάπτυξη
  12. Στο PyCU – Python για πλατφόρμα CUDA
  13. TensorRT – Βαθιά μάθηση για το CUDA
  14. CUDA C++ – Γλώσσα C++ για CUDA
  15. CUDA C – Γλώσσα C για CUDA
  16. CUDA Fortran – CUDA για προγραμματιστές FORTRAN

Κορυφαία έργα συμπλέγματος GPU

Από τον Ιούνιο του 2022, 8 από τους 10 ταχύτερους υπερυπολογιστές στον κόσμο έχουν επιτάχυνση GPU. Όλοι μοιράζονται επίσης το λειτουργικό σύστημα Linux και είναι οι εξής:

ΤάξηΌνομαPetaflopsCPU CoresGPU πυρήνεςΙσχύς (kW)Έτος
1.Σύνορο1,102591,8728,138,24021,1002022
2.ΛΟΥΜΙ151.9075,2641,034,8802,9002022
3.Κορυφή148.6202,7522,211,84010,0962018
4.Οροσειρά94.64190,0801,382,4007,4382018
5.Περλμούτερ64.59Ολοκληρώστε τις επιλογές σαςΟλοκληρώστε τις επιλογές σας2,5892021
6.Σελήνη63.4671,680483,8402,6462020
7.Tianhe-261.445427,0084,554,75218,4822013
8.Αδάστρα46.121,632297,4409212022

Συμπέρασμα

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

Για περισσότερες πληροφορίες, μπορείτε να ανατρέξετε στην πλατφόρμα προγραμματιστών του Nvidia εδώ ή αυτό του AMD εδώ.

Nnamdi Okeke

Nnamdi Okeke

Ο Nnamdi Okeke είναι ένας λάτρης των υπολογιστών που του αρέσει να διαβάζει ένα ευρύ φάσμα βιβλίων. Έχει προτίμηση στο Linux έναντι των Windows/Mac και το χρησιμοποιεί
Το Ubuntu από τις πρώτες μέρες του. Μπορείτε να τον πιάσετε στο twitter μέσω bongotrax

Άρθρα: 298

Λάβετε είδη τεχνολογίας

Τεχνικές τάσεις, τάσεις εκκίνησης, κριτικές, διαδικτυακό εισόδημα, διαδικτυακά εργαλεία και μάρκετινγκ μία ή δύο φορές το μήνα