Pourquoi les vidéos sont-elles rendues par le CPU au lieu du GPU?

8

Eh bien, je sais que cela peut sembler une question assez stupide, mais je n'ai pas trouvé de réponse en utilisant Google, alors oui ...
Donc, je sais qu'il existe des techniques comme OpenCL et CUDA, mais pourquoi, par défaut, le processeur utilisé pour rendre par exemple un fichier vidéo à partir d'un logiciel de montage vidéo? Cela me semble contre-intuitif que l' unité de traitement graphique ne soit pas utilisée pour traiter des graphiques. Lorsque vous jouez à un jeu vidéo, le GPU est également en charge de produire l'image sur mon écran, n'est-ce pas?

Encore une fois, je sais que cela peut vous paraître stupide. Veuillez être doux ° A °

Edit: je parlais spécifiquement de la sortie vidéo d'un logiciel NLE comme Premiere Pro

MoritzLost
la source
3
La plupart des vidéos en ligne sont compressées, donc le vrai travail consiste à décompresser le fichier, qui est une opération générale gérée par le CPU. Les GPU seraient probablement très bons pour gérer la compression / décompression de fichiers si les bibliothèques le prenaient en charge, mais généralement ils sont exploités pour des appels spécifiques pour dessiner des éléments à l'écran, pas pour le calcul général. Les jeux profitent car ils sont tous dynamiques, donc ils tirent vraiment parti du GPU - la vidéo n'est pas générée à la volée - il est prédéfini ce pixel de couleur à cette coordonnée, donc les GPU ne sont pas utiles pour cela.
ernie
Parlez-vous spécifiquement d'un logiciel de montage vidéo qui rend un fichier vidéo? Sinon, pouvez-vous s'il vous plaît offrir quelques autres exemples? La quantité de GPU qu'un éditeur vidéo utilise pendant le rendu dépend énormément du progiciel de rendu utilisé. En l'état, c'est trop large (OMI).
Ƭᴇcʜιᴇ007
Oui, j'en parlais. Désolé si cela n'était pas clair.
MoritzLost
Veuillez ensuite modifier votre question pour qu'elle concerne le problème spécifique auquel vous êtes confronté, inclure le logiciel que vous avez essayé, le système d'exploitation et ce que vous avez tenté de corriger. Posez ensuite une question spécifique sur ce problème spécifique. Encore une fois, tel quel est trop large, car de nombreux packages de rendu vidéo peuvent utiliser le GPU, s'ils sont correctement configurés. Ensuite, nous pourrons peut-être vous aider à comprendre pourquoi la vôtre ne l'est pas. :)
Ƭᴇcʜιᴇ007

Réponses:

14

Avant que la HD ne soit une chose, les processeurs pouvaient facilement gérer le décodage vidéo. Lorsque la HD est devenue populaire il y a environ 8 ans, les fabricants de GPU ont commencé à implémenter le décodage vidéo accéléré dans leurs puces. Vous pouvez facilement trouver des cartes graphiques commercialisées comme supportant des vidéos HD et d'autres slogans. Aujourd'hui, tout GPU prend en charge la vidéo accélérée, même les GPU intégrés comme Intel HD Graphics ou leurs prédécesseurs, Intel GMA. Sans cet ajout, votre processeur aurait du mal à digérer la vidéo 1080p avec un taux de rafraîchissement acceptable, sans parler de l'augmentation de la consommation d'énergie. Vous utilisez donc déjà la vidéo accélérée tous les jours.

Maintenant, lorsque les GPU ont une puissance de calcul de plus en plus générale, ils sont également largement utilisés pour accélérer le traitement vidéo. Cette tendance a commencé à peu près au même moment où le décodage accéléré a été introduit. Des programmes comme Badaboom ont commencé à gagner en popularité car il s'est avéré que les GPU sont bien meilleurs pour (ré) encoder la vidéo que les CPU. Cependant, cela ne pouvait pas être fait auparavant, car les GPU manquaient de capacités de calcul génériques.

Mais les GPU pouvaient déjà mettre à l'échelle, faire pivoter et transformer des images depuis le moyen-âge, alors pourquoi n'avons-nous pas pu utiliser ces fonctionnalités pour le traitement vidéo? Eh bien, ces fonctionnalités n'ont jamais été implémentées pour être utilisées de cette manière, elles étaient donc sous-optimales pour diverses raisons.

Lorsque vous programmez un jeu, vous téléchargez d'abord tous les graphiques, effets, etc. sur le GPU, puis vous ne faites que rendre des polygones et leur mapper les objets appropriés. Vous n'avez pas à envoyer de textures chaque fois qu'elles sont nécessaires, vous pouvez les charger et les réutiliser. En ce qui concerne le traitement vidéo, vous devez constamment alimenter les images dans le GPU, les traiter et les récupérer pour les réencoder sur le processeur (rappelez-vous, nous parlons de temps de pré-calcul GPU). Ce n'était pas ainsi que les GPU étaient censés fonctionner, donc les performances n'étaient pas excellentes.

Une autre chose est que les GPU ne sont pas axés sur la qualité en ce qui concerne les transformations d'images. Lorsque vous jouez à un jeu à plus de 40 images par seconde, vous ne remarquerez pas vraiment de fausses déclarations de pixels. Même si vous le vouliez, les graphiques du jeu n'étaient pas suffisamment détaillés pour que les gens s'en soucient. Diverses astuces et astuces utilisées pour accélérer le rendu peuvent légèrement affecter la qualité. Les vidéos sont également lues à des fréquences d'images assez élevées, il est donc acceptable de les redimensionner dynamiquement lors de la lecture, mais le réencodage ou le rendu doit produire des résultats parfaits en pixels ou au moins aussi proches que possible à un coût raisonnable. Vous ne pouvez pas y parvenir sans les fonctionnalités appropriées implémentées directement dans le GPU.

De nos jours, l'utilisation de GPU pour traiter des vidéos est assez courante car nous avons mis en place la technologie requise. Pourquoi ce n'est pas le choix par défaut est plutôt une question pour l'éditeur du programme, pas pour nous - c'est leur choix. Ils pensent peut-être que leurs clients ont un matériel orienté vers le traitement des vidéos sur le processeur, donc le passage au GPU affectera négativement les performances, mais c'est juste ma supposition. Une autre possibilité est qu'ils traitent toujours le rendu GPU comme une fonctionnalité expérimentale qui n'est pas encore assez stable pour le définir comme défaut par défaut. Vous ne voulez pas perdre des heures à rendre votre vidéo juste pour réaliser que quelque chose est foiré en raison d'un bug de rendu GPU. Si vous décidez de l'utiliser de toute façon, vous ne pouvez pas blâmer l'éditeur de logiciels - c'était votre décision.

gronostaj
la source