Perché i video sono resi dalla CPU anziché dalla GPU?


8

Beh, so che potrebbe sembrare una domanda piuttosto stupida, ma non sono riuscito a trovare una risposta usando Google, quindi sì ...
Quindi, so che ci sono tecniche come OpenCL e CUDA, ma perché, per impostazione predefinita, il processore è utilizzato rendere ad esempio un file video da un software di editing video? Mi sembra controintuitivo che l' unità di elaborazione grafica non sia utilizzata per elaborare, bene, la grafica. Quando si gioca a un videogioco, la GPU si occupa anche di produrre l'immagine sul mio schermo, no?

Ancora una volta, so che questo potrebbe sembrare stupido per te. Si prega di essere gentile ° A °

Modifica: stavo parlando in particolare dell'output video di un software NLE come Premiere Pro


3
La maggior parte dei video online è compressa, quindi il vero lavoro consiste nel decomprimere il file, operazione generale gestita dalla CPU. Le GPU probabilmente sarebbero davvero molto brave a gestire la compressione / decompressione dei file se le librerie lo supportassero, ma generalmente vengono sfruttate per chiamate specifiche per disegnare elementi sullo schermo, non per calcoli generali. I giochi ne traggono vantaggio poiché sono tutti dinamici, quindi sfruttano davvero la GPU - il video non viene generato al volo - è predefinito questo pixel di colore a questa coordinata, quindi le GPU non sono utili per questo.
Ernie,

Stai parlando in particolare del software di editing video che rende un file video? In caso contrario, puoi offrire altri esempi? La quantità di GPU utilizzata da un editor video durante il rendering dipende immensamente dal pacchetto software di rendering utilizzato. Così com'è è troppo ampio (IMO).
Ƭᴇcʜιᴇ007,

Sì, ne stavo parlando. Scusami se non era chiaro.
Moritz

Quindi modifica la domanda in modo che riguardi il problema specifico che stai riscontrando, includi il software che hai provato, quale sistema operativo e cosa hai tentato di correggerlo. Quindi fai una domanda specifica su quel problema specifico. Ancora una volta, così com'è è troppo ampio, poiché molti pacchetti di rendering video possono utilizzare la GPU, se configurati correttamente. Quindi potremmo essere in grado di aiutarti a capire perché il tuo non lo è. :)
Ƭᴇcʜιᴇ007,

Risposte:


14

Prima che l'HD fosse una cosa, le CPU potevano gestire facilmente la decodifica video. Quando l'HD è diventato popolare circa 8 anni fa, i produttori di GPU hanno iniziato a implementare la decodifica video accelerata nei loro chip. È possibile trovare facilmente schede grafiche commercializzate come supporto di video HD e alcuni altri slogan. Oggi qualsiasi GPU supporta video accelerati, anche GPU integrate come Intel HD Graphics o i loro predecessori, Intel GMA. Senza quell'aggiunta la tua CPU avrebbe difficoltà a cercare di digerire video 1080p con framerate accettabile, per non parlare di un aumento del consumo di energia. Quindi stai già utilizzando video accelerati ogni giorno.

Ora, quando le GPU hanno sempre più potere di calcolo generale, sono ampiamente utilizzate anche per accelerare l'elaborazione video. Questa tendenza è iniziata nello stesso periodo in cui è stata introdotta la decodifica accelerata. Programmi come Badaboom hanno iniziato a guadagnare popolarità in quanto si è scoperto che le GPU sono molto meglio nella (ri) codifica dei video rispetto alle CPU. Non si poteva fare prima, però, perché le GPU mancavano di capacità computazionali generiche.

Ma le GPU potrebbero già ridimensionare, ruotare e trasformare le immagini dal Medioevo, quindi perché non siamo stati in grado di utilizzare queste funzionalità per l'elaborazione video? Bene, queste funzionalità non sono mai state implementate per essere utilizzate in questo modo, quindi non erano ottimali per vari motivi.

Quando programmate un gioco, caricate prima tutta la grafica, gli effetti, ecc. Sulla GPU, quindi riproducete semplicemente poligoni e mappate gli oggetti appropriati su di essi. Non è necessario inviare trame ogni volta che sono necessarie, è possibile caricarle e riutilizzarle. Quando si tratta di elaborazione video, è necessario alimentare costantemente i frame nella GPU, elaborarli e recuperarli per ricodificarli sulla CPU (ricordate, stiamo parlando di tempi pre-computazionali-GPU). Non era così che le GPU dovevano funzionare, quindi le prestazioni non erano eccezionali.

Un'altra cosa è che le GPU non sono orientate alla qualità quando si tratta di trasformazioni di immagini. Quando giochi a una velocità superiore a 40 fps, non noterai davvero lievi false dichiarazioni di pixel. Anche se lo facessi, la grafica del gioco non era abbastanza dettagliata da interessare alla gente. Esistono vari hack e trucchi utilizzati per accelerare il rendering che possono influire leggermente sulla qualità. I video vengono riprodotti anche con framerate piuttosto elevati, quindi è accettabile ridimensionarli dinamicamente durante la riproduzione, ma la ricodifica o il rendering devono produrre risultati perfetti per i pixel o almeno il più vicino possibile a costi ragionevoli. Ciò non è possibile senza le funzionalità appropriate implementate direttamente nella GPU.

Oggigiorno l'uso delle GPU per elaborare i video è abbastanza comune perché abbiamo richiesto la tecnologia in atto. Perché non è la scelta predefinita è piuttosto una domanda per l'editore del programma, non per noi: è la loro scelta. Forse credono che i loro clienti siano orientati all'hardware per elaborare i video sulla CPU, quindi il passaggio alla GPU influirà negativamente sulle prestazioni, ma è solo una mia ipotesi. Un'altra possibilità è che trattano ancora il rendering GPU come funzionalità sperimentale che non è abbastanza stabile da impostarlo come predefinito. Non vuoi perdere ore a rendere il tuo video solo per rendersi conto che qualcosa è rovinato a causa di un bug di rendering della GPU. Se decidi di utilizzarlo comunque, non puoi incolpare l'editore del software: è stata una tua decisione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.