parsifal Δημοσ. 2 Δεκεμβρίου 2009 Δημοσ. 2 Δεκεμβρίου 2009 δλδ στο Cuda επιβαρύνεται η cpu ή ότι το DXVA κάνει καλύτερη δουλειά? Ειδικά όσον αφορά το θέμα του video decoding: Χωρίς καμμία υποβοήθηση από τη GPU -> Επιβαρύνεται μόνο η CPU CUDA -> Επιβαρύνεται και η CPU (λιγότερο από την προηγούμενη περίπτωση) και το programmable τμήμα της GPU DXVA bitstream offloading -> Δεν επιβαρύνεται καθόλου η CPU, δεν επιβαρύνεται καθόλου το programmable τμήμα της GPU. Μόνο το τμήμα της GPU που αντιστοιχεί στην fixed, non-programmable μονάδα PureVideo HD. Πιο (power) efficient τρόπος αποκωδικοποίησης: ο 3ος. Λογικό, μιλάμε για dedicated ASIC που έχει φτιαχτεί γι' αυτήν και μόνο τη δουλειά. Πιο ευέλικτος τρόπος αποκωδικοποίησης: 1ος και 2ος Για γενικούς αλγορίθμους και υπολογιστικά προβλήματα που δεν αφορούν H.264/VC-1 (και απλό MPEG-4 ASP στo τελευταίο feature set της nVIDIA, βλ. GT210/220 και Σία), η μονάδα PureVideo HD προφανώς βγαίνει εκτός παιχνιδιού. Άρα, απομένει η CPU και η χρήση των SP της GPU ως general-purpose processors μέσω CUDA ή άλλου framework. Εκεί, κάθε instruction που μεταφέρεις από τη CPU στους GPU SPs είναι κέρδος.
Super Moderators Thresh Δημοσ. 2 Δεκεμβρίου 2009 Super Moderators Δημοσ. 2 Δεκεμβρίου 2009 ok my bad τότε sorry για την παραπληροφόρηση
Kostas75 Δημοσ. 3 Δεκεμβρίου 2009 Δημοσ. 3 Δεκεμβρίου 2009 Ειδικά όσον αφορά το θέμα του video decoding: Πιο (power) efficient τρόπος αποκωδικοποίησης: ο 3ος. Λογικό, μιλάμε για dedicated ASIC που έχει φτιαχτεί γι' αυτήν και μόνο τη δουλειά. Πιο ευέλικτος τρόπος αποκωδικοποίησης: 1ος και 2ος ... Άρα, απομένει η CPU και η χρήση των SP της GPU ως general-purpose processors μέσω CUDA ή άλλου framework. Εκεί, κάθε instruction που μεταφέρεις από τη CPU στους GPU SPs είναι κέρδος. parsifal φαίνεται να το κατέχεις καλύτερα από όλους μας το θέμα και το post σου είναι πολύ ενδιαφέρον. Μπορείς να μου εξηγήσεις λίγο καλύτερα τα παραπάνω όμως; Στη πρώτη πρόταση, καταλαβαίνω ότι καλύτεροι τρόποι από άποψης performance (πιο γρήγορη κωδικοποίηση/αποκωδικοποίηση διατηρώντας την ίδια ποιότητα) είναι ο 1ος και ο 2ος. Και τελικά αυτό μας ενδιαφέρει περισσότερο, ποιον ενδιαφέρει το power consumption όταν κάνει τη δουλειά του πιο γρήγορα;; Διόρθωσέ με αν κάνω λάθος. Σχετικά με τη δεύτερη παράγραφο που ξεχώρισα παραπάνω, ποιά από τις μεθόδους τελικά μεταφέρει περισσότερα instructions από τη CPU στους GPU SPs (οπότε και έχουμε το μεγαλύτερο κέρδος);; Δεν μου είναι ξεκάθαρο. Αν σου είναι εύκολο διαφώτισέ με. Ευχαριστούμε πολύ γενικά για την ανάλυσή σου. Πρώτη φορά διαβάζω για το θέμα τόσο τεκμηριωμένη άποψη.
parsifal Δημοσ. 4 Δεκεμβρίου 2009 Δημοσ. 4 Δεκεμβρίου 2009 Μπορείς να μου εξηγήσεις λίγο καλύτερα τα παραπάνω όμως;Στη πρώτη πρόταση, καταλαβαίνω ότι καλύτεροι τρόποι από άποψης performance (πιο γρήγορη κωδικοποίηση/αποκωδικοποίηση διατηρώντας την ίδια ποιότητα) είναι ο 1ος και ο 2ος. Το αντίθετο. Ας δούμε π.χ. τη μονάδα UVD που καταλαμβάνει ένα τμήμα (κάτω δεξιά) από το ολοκληρωμένο μίας σύγχρονης GPU (RV770) της ATI (αντίστοιχα ισχύουν και για άλλους κατασκευαστές): Πηγή: The Tech Report. GIF animation by me. Αυτή η μονάδα είναι ένα «μαύρο κουτί» για τον προγραμματιστή που θέλει να την εκμεταλλευτεί, δεν ξέρει πώς λειτουργεί εσωτερικά. Το μόνο που ξέρει είναι ότι πρέπει να στείλει στην είσοδό της ένα συμβατό video stream (π.χ. Η.264 με συγκεκριμένα τεχνικά χαρακτηριστικά) και θα πάρει στην έξοδό της raw (αποκωδικοποιημένο) video, έτοιμο για αποστολή σε κάποιον video renderer. Με λίγα λόγια, το UVD είναι ένας video decoder υλοποιημένος όχι σε software αλλά σε hardware. "Fixed" logic στη σχετική ορολογία, δηλαδή δεν είναι προγραμματιζόμενη κατά το δοκούν μονάδα αλλά η διάταξη των transistors σε αυτήν καθορίζει τον (πάντα σταθερό) αλγόριθμο-επεξεργασία που εφαρμόζει στα δεδομένα εισόδου της. Το καλό με τα παραπάνω είναι ότι η συγκεκριμένη μονάδα έχει εγγυημένη απόδοση όσον αφορά το latency. Ανεξάρτητα από το πόσο αργή ή γρήγορη είναι η CPU του συστήματος, αν τροφοδοτείς επαρκώς γρήγορα το UVD με συμβατό video stream όσο πολύπλοκο και να είναι αυτό, θα παίρνεις στην έξοδο αποτέλεσμα με αρκούντως μικρό latency: τόσο ώστε να διασφαλίζεται η προβολή του video με ρυθμό που να καλύπτει τον χαρακτηριστικό ρυθμό FPS-Frames Per Second του video. Αντίθετα, αν προσπαθούσες να αποκωδικοποιήσεις μέσω software και CPU ένα «βαρβάτο» video π.χ. Η.264 προδιαγραφών Blu-ray (ανάλυση 1920x1080, bitrate 30-40Mbps κλπ) σε ένα μηχανάκι με «αδύναμη» CPU (έναν Intel Atom π.χ. ή έναν μονοπύρηνο desktop επεξεργαστή μερικών ετών), δεν έχεις την προηγούμενη εγγύηση. Αποτέλεσμα: «Σπασίματα» στην αναπαραγωγή του video, ο επεξεργαστής δεν «προλαβαίνει» να το αποκωδικοποιήσει με τον απαιτούμενο ρυθμό. Και πάμε και στον άλλο τρόπο, όπου εμπλέκονται όροι όπως nVIDIA CUDA, ATI Stream, OpenCL, Microsoft DirectCompute κλπ.: Τί είναι όλα αυτά; Τεχνολογίες μέσω των οποίων μπορούμε να μεταφέρουμε υπολογιστικό φόρτο από τη CPU στις σύγχρονες GPU. Κάποιες δουλεύουν μόνο σε GPU συγκεκριμένου κατασκευαστή, κάποιες είναι πιο generic και ανοιχτές και δουλεύουν (ή φιλοδοξούν να το κάνουν, μέσω υποστήριξης σε μελλοντικούς drivers) σε GPU περισσότερων κατασκευαστών. Έχω παρατηρήσει (και εδώ στο φόρουμ) πως υπάρχει ένα σχετικό misconception, ειδικά όσον αφορά το CUDA. Ότι δηλαδή είναι χρήσιμο μόνο για video decoding. Μάλλον είναι παρενέργεια της δημοφιλίας ορισμένων λογισμικών όπως π.χ. του CoreAVC codec ή του Badaboom encoder. Λάθος! Είναι χρήσιμο για general purpose computing, μπορούμε δυνητικά να το εκμεταλλευτούμε σε διαφόρων ειδών προγράμματα, όχι μόνο όσον αφορά video encoding ή decoding! Τί κέρδος έχουμε με αυτές τις τεχνολογίες; Οι σύγχρονες GPU είναι δομημένες κατά τέτοιον τρόπο ώστε να μοιάζουν με «συστοιχίες» πάρα πολλών (δεκάδων έως εκατοντάδων) μικρών επεξεργαστών που μπορούν να λειτουργούν και να εκτελούν υπολογισμούς παράλληλα. Αν εκμεταλλευτούμε αυτό το γεγονός κατάλληλα, μπορούμε να επιτύχουμε σημαντική επιτάχυνση στα προγράμματα που φτιάχνουμε (ή που χρησιμοποιούμε, ως χρήστες). Μας συμφέρει πάντα να χρησιμοποιούμε τη GPU έναντι της CPU για υπολογισμούς; Όχι απαραίτητα. Η συγκεκριμένη δόμηση που προαναφέρθηκε ευνοεί την εκτέλεση κώδικα που λύνει προβλήματα μέσω μοντέλου παράλληλου προγραμματισμού. Δεν είναι όλα τα υπολογιστικά προβλήματα τέτοιας φύσεως που να μπορούν να λυθούν μέσω παράλληλων αλγορίθμων ή που να επιταχύνονται επαρκώς σε περίπτωση που προσπαθήσουμε να τα λύσουμε με παράλληλο προγραμματισμό. Και τελικά αυτό μας ενδιαφέρει περισσότερο, ποιον ενδιαφέρει το power consumption όταν κάνει τη δουλειά του πιο γρήγορα;; Διόρθωσέ με αν κάνω λάθος. Πάρα πολλούς ενδιαφέρει το power efficiency. Και κατασκευαστές (απαιτήσεις σε ψύξη, κατασκευαστικό κόστος) και χρήστες. Π.χ. σκέψου ένα netbook ή ένα laptop να θερμαίνεται τόσο ώστε να φέρνει προσκόμματα στην ομαλή λειτουργία και χρήση του. Και άντε, το laptop το ακουμπάς σε μία επιφάνεια, πες ότι δεν είναι ανάγκη να το έχεις στο "lap" σου. Ένα Smartphone όμως που να μη μπορείς να το αγγίξεις και να το χειριστείς χωρίς να δυσανασχετείς όμως; Σχετικά με τη δεύτερη παράγραφο που ξεχώρισα παραπάνω, ποιά από τις μεθόδους τελικά μεταφέρει περισσότερα instructions από τη CPU στους GPU SPs (οπότε και έχουμε το μεγαλύτερο κέρδος);; Δεν μου είναι ξεκάθαρο. 1η μέθοδος: Όλες οι εντολές για την αποκωδικοποίηση του video εκτελούνται από τη CPU. 2η μέθοδος: Κάποιες εντολές εκτελούνται από τη CPU, κάποιες από τη GPU. Πόσες/Τί ποσοστό; Δεν υπάρχει μονοσήμαντη απάντηση: Εξαρτάται από το πρόβλημα και την ικανότητα του προγραμματιστή. Νομίζω το κάλυψα λίγο πιο πάνω και με τη συντομή αναφορά στον παράλληλο προγραμματισμό. 3η μέθοδος: Δε μεταφέρουμε απλά instructions, αλλά ολόκληρο το πρόβλημα της αποκωδικοποίησης στην εύθυνη της ειδικής μονάδας video της GPU.
Kostas75 Δημοσ. 4 Δεκεμβρίου 2009 Δημοσ. 4 Δεκεμβρίου 2009 parsifal έκανες ολόκληρη ανάλυση στο θέμα και μάλλον μετά από σχετική έρευνα που είχες κάνει στο παρελθόν! Τα συμπεράσματα είναι πολύ ενδιαφέροντα και ρίχνουν αρκετό "φως" στο θέμα που συζητάμε. Να είσαι καλά! Αυτό που καταλαβαίνω τελικά από την ανάλυσή σου είναι ότι η 3η μέθοδος είναι η πιο "καλή", αν μπορούμε να το πούμε έτσι, και εννοώντας ότι λογικά θα προσφέρει τα ταχύτερα αποτελέσματα, ελπίζω με την ίδια ποιότητα με τις πιο "αργές" μεθόδους που πάνε όλα μέσω CPU, ή τις εναλλακτικές μέσω CPU+GPU (CUDA). Οπότε καλύτερα να πάρουμε μια ATI, που χρησιμοποιεί περισσότερη GPU καθώς και το πολύ καλό DXVA και ταυτόχρονα, τη δεδομένη χρονική στιγμή, προσφέρει καλύτερες επιδόσεις στο 3D gaming με λιγότερα τα: χρήματα, κατανάλωση και θερμότητα. Πάλι, διόρθωσέ με αν κάνω λάθος. Σε ευχαριστώ πολύ για όλη σου τη βοήθεια μέσα από τα πολύ χρήσιμα posts σου!
parsifal Δημοσ. 4 Δεκεμβρίου 2009 Δημοσ. 4 Δεκεμβρίου 2009 Αυτό που καταλαβαίνω τελικά από την ανάλυσή σου είναι ότι η 3η μέθοδος είναι η πιο "καλή", αν μπορούμε να το πούμε έτσι, και εννοώντας ότι λογικά θα προσφέρει τα ταχύτερα αποτελέσματα, ελπίζω με την ίδια ποιότητα με τις πιο "αργές" μεθόδους που πάνε όλα μέσω CPU, ή τις εναλλακτικές μέσω CPU+GPU (CUDA). Η ποιότητα είναι εξαρτώμενη από το πόσο καλή υλοποίηση του decoding αλγορίθμου αποτελεί ο κάθε decoder. Προσωπικά, δε μπόρεσα να αντιληφθώ κάποια αξιοσημείωτη διαφορά μεταξύ software-based λύσεων και του dedicated decoder των δύο nVIDIA GPUs που έχω (nForce 8300 και 9800GT. Η μονάδα PureVideo HD είναι ίδιας γενιάς νομίζω). Οπότε καλύτερα να πάρουμε μια ATI, που χρησιμοποιεί περισσότερη GPU καθώς και το πολύ καλό DXVA και ταυτόχρονα, τη δεδομένη χρονική στιγμή, προσφέρει καλύτερες επιδόσεις στο 3D gaming με λιγότερα τα: χρήματα, κατανάλωση και θερμότητα. Πάλι, διόρθωσέ με αν κάνω λάθος. Τα όσα ανέφερα στο προηγούμενο post μου δεν αφορούσαν συγκεκριμένα ATI, ίσως σε μπέρδεψε η εικόνα GIF (δυστυχώς, δε μπόρεσα να εντοπίσω κάποια ανάλογη για nVIDIA στο λίγο χρόνο που αφιέρωσα για googling). Έγραψα όμως ότι τα αντίστοιχα ισχύουν και για GPUs άλλων κατασκευαστών. Τώρα, το ποιος κατασκευαστής προσφέρει τη δεδομένη χρονική στιγμή προϊόν με καλύτερες επιδόσεις (είτε απόλυτες είτε λόγο απόδοσης/τιμή) αν βάλεις μέσα κι άλλους παράγοντες όπως το gaming, είναι αλλουνού παπά ευαγγέλιο!
JUST-GAMER Δημοσ. 5 Φεβρουαρίου 2011 Δημοσ. 5 Φεβρουαρίου 2011 Ρε παιδιά τι ακριβώς είναι αυτό το νέο ati stream και τι ακριβώς κάνει? Εμάς τους απλούς χρήστες θα μας βοηθήσει πουθενά ή είναι μόνο για τους προγραμματιστές παιχνιδιών? Και πως το ενεργοποιώ στους νέους drivers 11.1 γιατί εχω το πρόγραμμα "xilisoft video converter 6.5.2 build 0125" και δεν με αφήνει να το ενεργοποιήσω κοινώς να τικαρω το κουτάκι στη παρακατω φώτο. [/url]
parsifal Δημοσ. 5 Φεβρουαρίου 2011 Δημοσ. 5 Φεβρουαρίου 2011 Μήπως από αυτά που λέει ακριβώς κάτω από την επιλογή, στο μήνυμα, έκανες τα μισά μόνο; Λέει να περάσεις τελευταίο Catalyst driver (λες ότι τον έχεις, 11.1) και το Avivo Package (έχει αλλάξει όνομα, τώρα λέγεται AMD Media Codec Package). Το δεύτερο το πέρασες... ;
Titanomaxos Δημοσ. 7 Φεβρουαρίου 2011 Δημοσ. 7 Φεβρουαρίου 2011 Ασχολείστε με Cuda encoding = low quality ...
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.