OpenCL en Adobe Premiere Pro: ¿Cuánto más rápido es una GPU que una CPU?

Hola giktayms Tras descubrir recientemente el maravilloso mundo de acelerar el procesamiento de datos con tarjetas de video con OpenCL, decidí escribir un pequeño material introductorio para principiantes que no están familiarizados con esta tecnología en la práctica. Internet a menudo plantea las preguntas "¿qué tipo de aumento de productividad obtendré?", Pero las respuestas son abstractas o demasiado teorizadas.
El objetivo de esta publicación es demostrar cómo el uso de OpenCL puede acelerar la representación de video en programas de edición de video. No encontrará una inmersión profunda en teoría y matemáticas: hay muchos artículos teóricos detallados sobre OpenCL en Giktims y Habré sin mí. Solo habrá una descripción de la tarea y los resultados de la prueba, así que trate el texto exactamente como una guía introductoria simple para principiantes.



¿Por qué es necesario?


Las tarjetas gráficas modernas son verdaderos monstruos informáticos, cuya potencia total generalmente se gasta en juegos. La gente estúpida se dio cuenta de que si los programadores tenían acceso directo a las unidades de cómputo de los chips de video, entonces toda esta potencia colosal podría utilizarse para cualquier otra tarea, y no solo para el procesamiento de gráficos en 3D.

NVIDIA fue el primero en tener éxito en implementar esta idea con su arquitectura de computación paralela Compute Unified Device Architecture (CUDA). Usando la sintaxis extendida del lenguaje C y un compilador especial, los desarrolladores pudieron usar un chip gráfico para tareas computacionales. AMD, a su vez, presentó Stream SDK, su visión patentada para CUDA.

El resultado fue fenomenal: los procesos asociados con el procesamiento de datos de medios, lo que implica un alto nivel de paralelización, se completaron muchas veces más rápido que en el caso de los cálculos del procesador central. La ventaja de la GPU fue especialmente pronunciada al renderizar en programas de modelado 3D y procesamiento de video.



Un año después del lanzamiento de CUDA, el consorcio del Grupo Khronos lanzó el marco OpenCL. De hecho, tuvo que unificar el código para acceder a la potencia informática de los procesadores en diferentes arquitecturas, incluidos los núcleos de video. A partir de ese momento, el soporte para el nuevo marco comenzó a introducirse activamente en el software profesional.

Hasta la fecha, OpenCL admite programas de Adobe, conversores de medios, una serie de renders 3D, CAD y software para modelado matemático.



¿Mejor CUDA o OpenCL?


Una pregunta muy frecuente y muy interesante está subtitulada. Estas dos tecnologías son como a diferencia de los hermanos. Al igual que el sufrido PhysX, CUDA es una tecnología cerrada compatible solo con chips NVIDIA y de ninguna manera todo un software especializado. OpenCL es un extrovertido, el código está abierto para cualquier entusiasta, cualquier software que soporte cómputo GPU por definición funciona con OpenCL.

Los programadores de NVIDIA no se pierden: si toma dos tarjetas de video esféricas en el vacío con el mismo rendimiento, entonces CUDA en el chip NVIDIA muestra un promedio de 20% más de rendimiento que OpenCL en el chip AMD. Pero hay un matiz, como dicen: si el CUDA de NVIDIA funciona rápida y bien, entonces OpenCL en las tarjetas de esta compañía es ligeramente inferior a la velocidad de procesamiento de OpenCL de AMD. Hace unos años, la situación era muy deplorable, pero con el tiempo, utilizando los controladores, se hizo la brecha. Sin embargo, el rendimiento específico de NVIDIA GeForce en OpenCL sigue siendo ligeramente inferior al de AMD Radeon. Por lo tanto, aquellos que hayan comprado una tarjeta NVIDIA para trabajar con una aplicación que admita exclusivamente OpenCL estarán en una mala posición: el adaptador saldrá más caro y su eficiencia puede ser menor que la de Radeon. Tal juego no vale la pena.



Hierro


Descubrí el maravilloso mundo de OpenCL solo este verano, después de haber comprado dos tarjetas de video AMD Radeon 300 series a la vez: SAPPHIRE NITRO R9 380 y SAPPHIRE Tri-X R9 390X . Uno de ellos fue planeado para ser devuelto a la tienda, dependiendo de los resultados de las pruebas en el hogar. Las tarjetas se compraron para editar videos en casa, la elección en la dirección de Radeon fue bastante consciente: por un lado, CUDA es más rápido que OpenCL. Por otro lado, como resultó, OpenCL es compatible con un software significativamente más profesional que CUDA, y el rendimiento de las tarjetas NVIDIA en OpenCL deja mucho que desear.



Del surtido propuesto de tarjetas SAPPHIRE, me gustó más que el resto. A diferencia de los entusiastas del diseño de referencia, SAPPHIRE usa ventiladores clásicos en el sistema de enfriamiento, que son mucho más silenciosos que los aerogeneradores centrífugos de referencia. Desarrollé un fuerte disgusto por ellos después de un rápido conocimiento de la aspiradora de tarjetas de video Radeon 4870x2.
En casa, al desempacar dos cajas enormes, me sentí como un mastodonte cubierto de musgo: las tarjetas de video son bastante grandes. SAPPHIRE R9 390X es realmente enorme, con tres ventiladores y un disipador térmico que supera el tamaño de la placa de circuito impreso. Al principio, incluso me preocupaba si estos monstruos encajarían en mi cuerpo. Afortunadamente, entramos, pero un disco duro tuvo que ser retirado de la caja del disco duro. Una fuente de alimentación de kilovatios tampoco era superflua: el R9 390X requiere dos conectores de alimentación de cuatro pines, y no todas las unidades de suministro de energía extraerán dicha corriente.



Entonces, mi configuración de inicio, en la que se realizaron las pruebas comparativas de OpenCL:
  • Procesador: Intel Core i5-2500K, overclockeado a 3.7 GHz
  • RAM: 12 GB DDR-1333
  • Placa base: ASUS P8Z77-V PRO
  • Unidades: SSD del sistema A-DATA de 120 GB, HDD de 2 TB WD Black WD20EARS contenido
  • Fuente de alimentación: Corsair 1000 W


Suave


Si Adobe Premiere Pro CS4 era una carga pesada en la oficina, entonces en casa podría organizar un espacio de trabajo a su gusto. Casi nunca pensaría en comprar Premiere Pro si Adobe no hubiera implementado el maravilloso, en mi opinión, el sistema de suscripción Creative Cloud. Ahora por 600 rublos al mes tengo un Premiere Pro CC legal y constantemente actualizado. ¡Y él, a diferencia de la vieja oficina, admite de forma nativa el renderizado usando OpenCL y CUDA!
Si su tarjeta de video funciona con OpenCL o CUDA, en la etapa de creación de un proyecto en Premiere Pro puede elegir un render. Para hardware, la aceleración cumple con la GPU Mercury Playback Engine (OpenCL) o (CUDA). En un proyecto terminado, el renderizador se puede cambiar a través de la Configuración del proyecto desde el menú Archivo.



Como ya dije, usando OpenCL puede transferir cálculos sobre la aplicación de efectos de video a la tarjeta de video. Sin embargo, no todos los efectos en Premiere Pro son compatibles con OpenCL; puede averiguarlo mediante la presencia o ausencia de dicho icono en la lista.



Pruebas


Como proyecto de prueba, elegí un video de dos minutos, que consta de muchos segmentos de video Full HD con una tasa de bits de 72 Mbps y una velocidad de cuadros de 24 cuadros por segundo. Por encima de toda esta desgracia, se aplicó el efecto acelerado de Lumetri Color, mediante el cual realicé la corrección de color. La salida debería haber sido una película en formato h.264, en una resolución de 1920x1080 (es decir, sin cambios), con una tasa de bits de 6-7 Mbit / s, se utilizó la codificación de dos pasos.
Para confirmar el funcionamiento de la tarjeta de video, tomé los parámetros de GPU-Z: al observar la frecuencia del núcleo de gráficos, es fácil entender cuándo la CPU procesa el video y cuándo la GPU.





En la primera prueba, desactivé el efecto Lumetri Color, por lo que todo el renderizado cambió la tasa de bits del video.

Ejecución 1:
proyecto 2 minutos, h.264, 6-7 mbps, sin efectos
UPC3:09
SAPPHIRE Tri-X R9 390X2:33
SAPPHIRE NITRO R9 3802:38

Sin aplicar efectos, la diferencia en la velocidad de renderizado entre el procesador y la potente tarjeta gráfica moderna es muy pequeña. Al procesar video con una duración total de aproximadamente una hora, la ganancia del uso de OpenCL será más notable, pero aún muy pequeña. Sin embargo, casi siempre durante el proceso de edición, los efectos de corrección de color se aplican al video, por lo que esta prueba debe considerarse "sintética".

Ejecución 2:
proyecto 2 minutos, h.264, 6-7 mbps, efecto Lumetri Color
UPC11:33
SAPPHIRE Tri-X R9 390X2:42
SAPPHIRE NITRO R9 3802:48

Los resultados hablan por sí mismos: si ambas tarjetas de video sin esfuerzo hacen que el video sea un poco más lento que el tiempo real, entonces el procesador gasta casi seis minutos en reproducir cada minuto. ¡Y esto es con un solo efecto habilitado! Si antes de la prueba esperaba procesar una película de una hora de duración con corrección de color durante toda la duración, luego de los resultados decidí abandonar esta idea. En mi trabajo, aplico corrección de color a pequeños segmentos del video, y una o dos horas de renderizado no me molestan mucho. No tuve tiempo de perder cuatro o cinco horas con fines de prueba.
Al extrapolar los resultados, podemos suponer que el procesador habría logrado una corrección de color de 60 minutos en 4.5 horas, ¡mientras que las tarjetas de video necesitarían menos de una hora!

recomendaciones


Según los resultados de la prueba, me dejé la SAPPHIRE NITRO R9 380: la tarjeta cuesta mucho más barata que la R9 390X más genial, pero en Premiere Pro el rendimiento de los dos adaptadores es casi idéntico. Dado que el adaptador fue comprado para hacer el trabajo, lo que significa que gastar 17 mil rublos no es una pena. Además, en GTA V el mapa demostró ser excelente, pero este tema es para una nota completamente diferente.

En cuanto a la experiencia de usar OpenCL, uno no puede dejar de admitir: un salvador llegó al mundo de la edición de video: la representación se convirtió en un placer. En comparación con el procesador Intel Core i5 overclockeado, las GPU procesan video sin esfuerzo con efectos superpuestos en Premiere Pro. Con tales resultados de prueba, no hay duda de si usar el renderizado por GPU. La única pregunta es qué tarjeta de video adaptar a esto. Algo del segmento de juegos superior estará bien, por ejemplo, AMD Radeon R9 3xx. SAPPHIRE NITRO R9 380 satisfizo completamente mis necesidades, pero los adaptadores de nivel medio e incluso de nivel básico también son compatibles con OpenCL, lo que significa que acelerarán significativamente su trabajo en software profesional.

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


All Articles