OpenCL no Adobe Premiere Pro: Quão mais rápida é uma GPU do que uma CPU?

Olá Giktayms! Tendo descoberto recentemente o maravilhoso mundo de acelerar o processamento de dados usando placas de vídeo usando o OpenCL, decidi escrever um pouco de material introdutório para iniciantes que não estão familiarizados com essa tecnologia na prática. A Internet geralmente levanta as perguntas “que tipo de ganho de produtividade vou obter?”, Mas as respostas são abstratas ou excessivamente teorizadas.
Esta publicação pretende demonstrar como o uso do OpenCL pode acelerar a renderização de vídeo em programas de edição de vídeo. Você não encontrará uma imersão profunda em teoria e matemática - há muitos artigos teóricos detalhados sobre o OpenCL no Giktims e Habré sem mim. Haverá apenas uma descrição da tarefa e dos resultados do teste; portanto, trate o texto exatamente como um guia introdutório simples para iniciantes.



Por que é necessário?


Placas gráficas modernas são monstros de computação reais, cuja potência total é geralmente gasta em jogos. Pessoas não estúpidas perceberam que, se os programadores tivessem acesso direto às unidades de computação dos chips de vídeo, todo esse poder colossal poderia ser usado para outras tarefas, e não apenas para o processamento de gráficos 3D.

A NVIDIA foi a primeira a implementar essa idéia com sua arquitetura de computação paralela Compute Unified Device Architecture (CUDA). Usando a sintaxe estendida da linguagem C e um compilador especial, os desenvolvedores puderam usar um chip gráfico para tarefas computacionais. A AMD, por sua vez, introduziu o Stream SDK - sua visão proprietária da CUDA.

O resultado foi fenomenal - os processos associados ao processamento de dados de mídia, o que implica um alto nível de paralelização, concluído muitas vezes mais rápido do que no caso de cálculos pelo processador central. A vantagem da GPU foi especialmente pronunciada na renderização em programas de modelagem 3D e processamento de vídeo.



Um ano após o lançamento do CUDA, o consórcio Khronos Group lançou o framework OpenCL. De fato, ele teve que unificar o código para acessar o poder computacional dos processadores em diferentes arquiteturas, incluindo núcleos de vídeo. A partir desse momento, o suporte para a nova estrutura começou a ser ativamente introduzido no software profissional.

Até o momento, o OpenCL suporta programas da Adobe, conversores de mídia, vários renderizadores 3D populares, CAD e software para modelagem matemática.



Melhor CUDA ou OpenCL?


Uma pergunta muito frequente e muito interessante é legendada. Essas duas tecnologias são diferentes dos irmãos. Assim como o sofrido PhysX, o CUDA é uma tecnologia fechada suportada apenas pelos chips NVIDIA e de modo algum por todos os softwares especializados. O OpenCL é um extrovertido, o código é aberto a qualquer entusiasta, qualquer software que suporte a computação de GPU por definição funciona com o OpenCL.

Os programadores da NVIDIA não demoram - se você colocar duas placas de vídeo esféricas no vácuo com o mesmo desempenho, o CUDA no chip NVIDIA mostra uma média de 20% a mais de desempenho do que o OpenCL no chip AMD. Mas há uma nuance, como se costuma dizer - se o CUDA da NVIDIA funcionar rápido e bem, o OpenCL nos cartões desta empresa é ligeiramente inferior à velocidade de processamento do OpenCL da AMD. Alguns anos atrás, a situação era muito deplorável, mas com o tempo, usando os drivers, a lacuna foi preenchida. No entanto, o desempenho específico da NVIDIA GeForce no OpenCL ainda é um pouco menor que o da AMD Radeon. Portanto, aqueles que adquiriram uma placa NVIDIA para trabalhar com um aplicativo que suporta exclusivamente OpenCL estarão em uma posição ruim - o adaptador ficará mais caro e sua eficiência poderá ser menor que a da Radeon. Esse jogo não vale a pena.



Ferro


Eu descobri o maravilhoso mundo do OpenCL apenas neste verão, depois de comprar duas placas de vídeo da série AMD Radeon 300 de uma só vez: SAPPHIRE NITRO R9 380 e SAPPHIRE Tri-X R9 390X . Um deles foi planejado para ser devolvido à loja, dependendo dos resultados dos testes em casa. Os cartões foram comprados para edição de vídeo em casa, a escolha na direção da Radeon foi bastante consciente: por um lado, o CUDA é mais rápido que o OpenCL. Por outro lado, o OpenCL é suportado por um software significativamente mais profissional que o CUDA, e o desempenho das placas NVIDIA no OpenCL deixa muito a desejar.



Da variedade proposta de cartões SAPPHIRE, gostei mais do que o resto. Diferentemente dos entusiastas do design de referência, o SAPPHIRE usa ventiladores clássicos no sistema de refrigeração, que são muito mais silenciosos do que as turbinas eólicas centrífugas de referência - desenvolvi uma forte antipatia por eles depois de um rápido conhecimento do aspirador de placa de vídeo Radeon 4870x2.
Em casa, ao desembalar duas caixas enormes, eu me senti como um mastodonte musgoso - as placas de vídeo são bastante grandes. O SAPPHIRE R9 390X é realmente enorme, com três ventiladores e um dissipador de calor que excede o tamanho da placa de circuito impresso. No começo, fiquei até preocupado se esses monstros se encaixariam no meu corpo. Felizmente, entramos, mas um disco rígido teve que ser removido da gaiola do disco rígido. Uma fonte de alimentação de quilowatt também não era supérflua - o R9 390X requer dois conectores de alimentação de quatro pinos, e nem todas as PSUs usam essa corrente.



Então, minha configuração inicial, na qual os testes comparativos do OpenCL foram realizados:
  • Processador: Intel Core i5-2500K, com overclock para 3,7 GHz
  • RAM: 12 GB DDR-1333
  • Placa-mãe: ASUS P8Z77-V PRO
  • Unidades: SSD de sistema A-DATA de 120 GB, HDD de 2 TB WD Black WD20EARS
  • Fonte de alimentação: Corsair 1000 W


Suave


Se o Adobe Premiere Pro CS4 foi uma carga pesada no escritório, em casa, você pode organizar uma área de trabalho ao seu gosto. Eu quase nunca pensaria em comprar o Premiere Pro se a Adobe não tivesse implementado o maravilhoso, na minha opinião, sistema de assinatura da Creative Cloud. Agora, para 600 rublos por mês, tenho um Premiere Pro CC legal e atualizado constantemente. E ele, diferentemente do escritório antigo, suporta nativamente a renderização usando OpenCL e CUDA!
Se a sua placa de vídeo funcionar com OpenCL ou CUDA, na fase de criação de um projeto no Premiere Pro, você poderá escolher uma renderização. Para a aceleração de hardware, atende à GPU Mercury Playback Engine (OpenCL) ou (CUDA). Em um projeto finalizado, o renderizador pode ser alterado através das Configurações do projeto no menu Arquivo.



Como eu já disse, usando o OpenCL você pode transferir cálculos sobre a aplicação de efeitos de vídeo para a placa de vídeo. No entanto, nem todos os efeitos no Premiere Pro oferecem suporte ao OpenCL - você pode descobrir isso pela presença ou ausência de um ícone na lista.



Testes


Como projeto de teste, escolhi um vídeo de dois minutos composto por vários segmentos do vídeo em Full HD com uma taxa de bits de 72 Mbps e uma taxa de quadros de 24 quadros por segundo. Acima de toda essa desgraça, foi aplicado o efeito acelerado do Lumetri Color, pelo qual realizei a correção de cores. A saída deveria ter sido um filme no formato h.264, em uma resolução de 1920x1080 (ou seja, sem alterações), com uma taxa de bits de 6-7 Mbit / s, foi usada a codificação de duas passagens.
Para confirmar a operação da placa de vídeo, tomei os parâmetros da GPU-Z - observando a frequência do núcleo gráfico, é fácil entender quando o vídeo está sendo renderizado pela CPU e quando a GPU.





Na primeira execução de teste, desliguei o efeito Lumetri Color, para que toda a renderização fosse alterar a taxa de bits do vídeo.

Execução 1:
projeto 2 minutos, h.264, 6-7 mbps, sem efeitos
CPU3:09
SAPPHIRE Tri-X R9 390X2:33
SAPPHIRE NITRO R9 3802:38

Sem aplicar efeitos, a diferença na velocidade de renderização entre o processador e a poderosa placa de vídeo moderna é muito pequena. Ao processar vídeo com uma duração total de cerca de uma hora, o ganho do uso do OpenCL será mais perceptível, mas ainda muito pequeno. No entanto, quase sempre durante o processo de edição, efeitos de correção de cores são aplicados ao vídeo, portanto esse teste deve ser considerado "sintético".

Execução 2:
projeto 2 minutos, h.264, 6-7 mbps, efeito Lumetri Color
CPU11:33
SAPPHIRE Tri-X R9 390X2:42
SAPPHIRE NITRO R9 3802:48

Os resultados falam por si - se ambas as placas de vídeo renderizaram o vídeo sem esforço um pouco mais devagar que o tempo real, o processador passou quase seis minutos processando cada minuto. E isso é com apenas um efeito ativado! Se antes do teste eu esperava processar um filme de uma hora com correção de cor por toda a duração, depois dos resultados decidi abandonar essa idéia. No meu trabalho, aplico a correção de cores a pequenos segmentos do vídeo, e uma ou duas horas de renderização não me incomodam muito. Não tive tempo de perder quatro ou cinco horas para fins de teste.
Ao extrapolar os resultados, podemos assumir que o processador teria conseguido com a correção de cores com duração de 60 minutos em 4,5 horas, enquanto as placas de vídeo precisariam de menos de uma hora!

achados


Com base nos resultados do teste, deixei o SAPPHIRE NITRO R9 380 - o cartão custa muito mais barato que o R9 390X mais bacana, mas no Premiere Pro o desempenho dos dois adaptadores é quase idêntico. Dado que o adaptador foi comprado para fazer o trabalho, o que significa ganhar dinheiro gasto 17 mil rublos não é uma pena. Além disso, no GTA V, o mapa se mostrou ótimo, mas esse tópico é para uma observação completamente diferente.

Quanto à experiência de usar o OpenCL, não se pode deixar de admitir - um salvador chegou ao mundo da edição de vídeo: renderizar tornou-se um prazer. Comparadas ao Intel Core i5 com overclock, as GPUs processam sem esforço vídeos com efeitos sobrepostos no Premiere Pro. Com esses resultados de teste, não há dúvida se a renderização é feita pela GPU. A única questão é qual placa de vídeo se adaptar a isso. Alguma coisa do segmento superior de jogos estará correta, por exemplo, AMD Radeon R9 3xx. O SAPPHIRE NITRO R9 380 atendeu totalmente às minhas necessidades, mas os adaptadores de nível intermediário e até básico também oferecem suporte ao OpenCL, o que significa que eles irão acelerar significativamente o seu trabalho em software profissional.

Source: https://habr.com/ru/post/pt383405/


All Articles