Γιατί εξακολουθούμε να χρησιμοποιούμε CPUs Αντί των GPUs;
Όλο και περισσότερο οι GPU χρησιμοποιούνται για μη γραφικά καθήκοντα όπως υπολογισμοί κινδύνου, υπολογισμοί δυναμικής ρευστών και σεισμική ανάλυση. Τι πρέπει να μας εμποδίσει να υιοθετήσουμε συσκευές που βασίζονται σε GPU?
Η σημερινή συνάντηση ερωτήσεων και απαντήσεων έρχεται σε επαφή με τον εαυτό μας με το SuperUser - μια υποδιαίρεση του Stack Exchange, μια κοινοτική μονάδα δίσκου των ιστότοπων ερωτήσεων & απαντήσεων.
Το ερώτημα
Ο αναγνώστης SuperUser Ell συνεχίζει να παρακολουθεί τις τεχνολογικές ειδήσεις και είναι περίεργος γιατί δεν χρησιμοποιούμε περισσότερα συστήματα που βασίζονται σε GPU:
Νομίζω ότι αυτές τις μέρες πολλοί υπολογισμοί γίνονται στην GPU. Προφανώς τα γραφικά γίνονται εκεί, αλλά χρησιμοποιώντας CUDA και τα παρόμοια, AI, αλγόριθμοι κατακερματισμού (think Bitcoins) και άλλοι γίνονται επίσης στη GPU. Γιατί δεν μπορούμε απλά να απαλλαγούμε από τη CPU και να χρησιμοποιήσουμε τη GPU από μόνος μας; Τι κάνει τη GPU τόσο πιο γρήγορη από την CPU?
Γιατί πράγματι; Τι κάνει τη CPU μοναδική?
Η απάντηση
Ο συνεργάτης του SuperUser DragonLord προσφέρει μια καλά υποστηριζόμενη επισκόπηση των διαφορών μεταξύ μονάδων GPU και CPU:
TL; DR απάντηση: Οι μονάδες GPU έχουν πολύ περισσότερους πυρήνες επεξεργαστών από τους επεξεργαστές, αλλά επειδή κάθε πυρήνας GPU διαρκεί πολύ αργότερα από τον πυρήνα της CPU και δεν διαθέτει τα χαρακτηριστικά που απαιτούνται για τα σύγχρονα λειτουργικά συστήματα, δεν είναι κατάλληλα για την εκτέλεση της μεγαλύτερης επεξεργασίας στον καθημερινό υπολογισμό. Είναι πιο κατάλληλες για εντατικές λειτουργίες όπως η επεξεργασία βίντεο και οι προσομοιώσεις φυσικής.
Η λεπτομερής απάντηση: Το GPGPU εξακολουθεί να είναι μια σχετικά νέα αντίληψη. Οι GPU αρχικά χρησιμοποιήθηκαν για την απόδοση γραφικών μόνο. καθώς η τεχνολογία προχώρησε, ο μεγάλος αριθμός πυρήνων στις GPU σε σχέση με τις CPU εκμεταλλεύτηκε αναπτύσσοντας τις υπολογιστικές δυνατότητες για τις GPU έτσι ώστε να μπορούν να επεξεργάζονται πολλές παράλληλες ροές δεδομένων ταυτόχρονα, ανεξάρτητα από το ποια δεδομένα μπορεί να είναι αυτά. Ενώ οι μονάδες GPU μπορούν να έχουν εκατοντάδες ή ακόμα και χιλιάδες επεξεργαστές ρεύματος, κάθε μία από αυτές τρέχει πιο αργά από τον πυρήνα της CPU και έχει λιγότερες δυνατότητες (ακόμα και αν είναι πλήρεις και μπορούν να προγραμματιστούν για να εκτελέσουν οποιοδήποτε πρόγραμμα μπορεί να τρέξει μια CPU). Χαρακτηριστικά που λείπουν από GPU περιλαμβάνουν διακόψεις και εικονική μνήμη, τα οποία απαιτούνται για την εφαρμογή ενός σύγχρονου λειτουργικού συστήματος.
Με άλλα λόγια, οι CPU και οι GPU έχουν σημαντικά διαφορετικές αρχιτεκτονικές που τις καθιστούν καλύτερα προσαρμοσμένες σε διαφορετικά καθήκοντα. Μια GPU μπορεί να χειρίζεται μεγάλα ποσά δεδομένων σε πολλές ροές, εκτελώντας σχετικά απλές λειτουργίες σε αυτές, αλλά δεν είναι κατάλληλη για βαριά ή πολύπλοκη επεξεργασία σε μία ή λίγες ροές δεδομένων. Μια CPU είναι πολύ ταχύτερη σε βάση ανά πυρήνα (από την άποψη των οδηγιών ανά δευτερόλεπτο) και μπορεί να εκτελεί πολύπλοκες λειτουργίες σε ένα ή λίγα ρεύματα δεδομένων πιο εύκολα, αλλά δεν μπορεί να χειριστεί αποτελεσματικά πολλές ροές ταυτόχρονα.
Ως αποτέλεσμα, οι GPU δεν είναι κατάλληλες για να χειρίζονται λειτουργίες που δεν επωφελούνται σημαντικά ή δεν μπορούν να παραλληλιστούν, συμπεριλαμβανομένων πολλών κοινών εφαρμογών καταναλωτών όπως επεξεργαστές κειμένου. Επιπλέον, οι GPU χρησιμοποιούν μια αρχικά διαφορετική αρχιτεκτονική. κάποιος θα πρέπει να προγραμματίσει μια εφαρμογή ειδικά για μια GPU για να λειτουργήσει και απαιτούνται σημαντικά διαφορετικές τεχνικές για την προγραμματισμό των GPU. Αυτές οι διαφορετικές τεχνικές περιλαμβάνουν νέες γλώσσες προγραμματισμού, τροποποιήσεις σε υπάρχουσες γλώσσες και νέα παραδείγματα προγραμματισμού που είναι καλύτερα προσαρμοσμένα στην έκφραση ενός υπολογισμού ως παράλληλης λειτουργίας που πρέπει να εκτελούνται από πολλούς επεξεργαστές ρεύματος. Για περισσότερες πληροφορίες σχετικά με τις τεχνικές που απαιτούνται για την προγραμματισμό των GPU, δείτε τα άρθρα της Wikipedia σχετικά με την επεξεργασία ροής και τον παράλληλο υπολογισμό.
Οι σύγχρονες μονάδες GPU είναι ικανές να εκτελούν πράξεις διανυσμάτων και αριθμητική επίπλευσης με τις πιο πρόσφατες κάρτες που μπορούν να χειριστούν αριθμούς κινητής υποδιαστολής διπλής ακρίβειας. Πλαίσια όπως το CUDA και το OpenCL επιτρέπουν την εγγραφή προγραμμάτων για GPU και η φύση των μονάδων GPU τα καθιστούν τα πιο κατάλληλα για εξαιρετικά παραλληλισμένες λειτουργίες, όπως για παράδειγμα στον επιστημονικό υπολογισμό, όπου μια σειρά εξειδικευμένων υπολογιστικών καρτών GPU μπορεί να αποτελέσει βιώσιμη αντικατάσταση για ένα μικρό υπολογίστε το σύμπλεγμα όπως στην NVIDIA Tesla Personal Supercomputers. Οι καταναλωτές με σύγχρονες GPU που είναι έμπειροι στο Folding @ home μπορούν να τις χρησιμοποιήσουν για να συνεισφέρουν με πελάτες της GPU, οι οποίοι μπορούν να εκτελούν προσομοιώσεις αναδίπλωσης πρωτεϊνών σε πολύ υψηλές ταχύτητες και να συμβάλουν περισσότερο στο έργο (βεβαιωθείτε ότι έχετε διαβάσει πρώτα τις Συχνές Ερωτήσεις GPU). Οι μονάδες GPU μπορούν επίσης να επιτρέψουν την καλύτερη προσομοίωση της φυσικής σε βιντεοπαιχνίδια χρησιμοποιώντας το PhysX, να επιταχύνουν την κωδικοποίηση και την αποκωδικοποίηση βίντεο και να εκτελέσουν άλλες εργασίες που απαιτούν υπολογιστικές μεθόδους. Αυτοί οι τύποι εργασιών είναι οι GPU που ταιριάζουν περισσότερο στην εκτέλεση.
Η AMD πρωτοπορεί σε ένα σχεδιασμό επεξεργαστή που ονομάζεται μονάδα επιτάχυνσης επεξεργασίας (APU) που συνδυάζει συμβατικούς πυρήνες CPU x86 με μονάδες GPU. Αυτό θα μπορούσε να επιτρέψει τα στοιχεία CPU και GPU να συνεργαστούν και να βελτιώσουν την απόδοση σε συστήματα με περιορισμένο χώρο για ξεχωριστά εξαρτήματα. Καθώς η τεχνολογία συνεχίζει να προχωράει, θα δούμε έναν αυξανόμενο βαθμό σύγκλισης αυτών των κάποτε ξεχωριστών τμημάτων. Ωστόσο, πολλά καθήκοντα που εκτελούνται από λειτουργικά συστήματα και εφαρμογές Η / Υ είναι ακόμα καλύτερα προσαρμοσμένα στις CPU και απαιτούνται πολλές προσπάθειες για την επιτάχυνση ενός προγράμματος χρησιμοποιώντας μια GPU. Δεδομένου ότι τόσο πολύ υπάρχον λογισμικό χρησιμοποιεί την αρχιτεκτονική x86 και επειδή οι GPU απαιτούν διαφορετικές τεχνικές προγραμματισμού και λείπουν αρκετά σημαντικά χαρακτηριστικά που απαιτούνται για τα λειτουργικά συστήματα, μια γενική μετάβαση από τη CPU στη GPU για καθημερινή υπολογιστική είναι εξαιρετικά δύσκολη.
Έχετε κάτι να προσθέσετε στην εξήγηση; Απενεργοποιήστε τα σχόλια. Θέλετε να διαβάσετε περισσότερες απαντήσεις από άλλους τεχνολογικούς χρήστες Stack Exchange; Δείτε το πλήρες νήμα συζήτησης εδώ.