Cómo reactivar Nvidia CUDA Video Encoder (NVCUVENC.dll) después de actualizar al driver 340.52 o posterior

Cómo reactivar Nvidia CUDA Video Encoder

Si somos de las personas que en nuestros PCs convertimos o editamos videos (de forma casual o usual) y contamos con una tarjeta gráfica Nvidia, sabemos que podemos usar la potencia de sus núcleos CUDA (presente en algunos modelos) para reducir considerablemente el trabajo del CPU en estas tareas y también el tiempo de codificación.

Aquellos que hayan usado o usen CUDA para estos trabajos de conversión o codificación no me dejarán mentir, y estarán de acuerdo en que esta tecnología es un verdadero alivio en estas tareas. Pero no es suficiente tener el hardware, el software editor o conversor usado debe ser compatible con Nvidia CUDA de manera que pueda usar esos recursos (como Cyberlink PowerDirector, Xilisoft Video Converter, Mirillis Action, Corel VideoStudio Pro, y muchísimos más); y finalmente - pero no menos importante - también hace falta el módulo del driver de nombre NVCUVENC, un fichero DLL que sirve de comunicación entre el hardware de los núcleos CUDA y el software de codificación de videos.

Ahora vamos al motivo de este artículo. ¿Qué pasaría si de un día para otro luego de actualizar el driver de tu tarjeta gráfica Nvidia a la versión más reciente, tu software de edición, conversión o codificación de video favorito ya no puede usar CUDA para realizar sus funciones? Pues eso es lo que ha pasado. Si actualizas el driver de tu tarjeta gráfica Nvidia a la versión estable 340.52 o posterior, ya no podrás usar los núcleos CUDA (de forma nativa) para realizar tus trabajos de codificación de videos.


Adiós! Nvidia CUDA Video Encoder (NVCUVENC), ¡hola! Nvidia Video Encoder (NVENC)

¿Qué fue lo que pasó? ¿Por qué de repente nuestro software de codificación de video dejó de ser aparentemente compatible con CUDA luego de actualizar el driver?

Por dar un ejemplo, el software Xilisoft Video Converter ha dejado de ser compatible con CUDA luego de instalar el driver más reciente y actualizado de mi tarjeta gráfica Nvidia, y curiosamente me solicita actualizarlo:


No es culpa del software, el tema viene del lado de Nvidia y su implementación general (antes era parcial) a nivel de software en sus drivers para sus nuevas tarjetas gráficas (y no tan nuevas) de una tecnología integrada dedicada exclusívamente a la codificación de videos. Es decir, lo que ha hecho Nvidia es poner a un costado a CUDA para que sus núcleos sean aprovechados en otras funciones o trabajos, mientras que las tareas de codificación de videos la hará únicamente la nueva tecnología de nombre NVENC.

A partir del driver con número de versión 340.52 ya no se incluye el módulo del driver NVCUVENC para hacer codificaciones de video usando CUDA, en su lugar ahora se incluye sólo el módulo NVENC quien será su reemplazo para estas tareas de codificación. ¿Cuál es el problema? NVENC no usa lo núcleos CUDA, sino su propia y exclusiva tecnología basada en hardware de codificación de video ya integrada en las tarjetas gráficas Nvidia compatibles. Nuevamente ¿Cuál es el problema? Los programas de conversión, edición y codificación de video que antes usaban CUDA, ahora no podrán usar esos núcleos para estas tareas porque en el driver ya no existe el módulo de software NVCUVENC que es el puente de comunicación entre el hardware o núcleos CUDA y el software de codificación (nuestro editor/conversor de video).

Ahora en lugar de buscar el logo "Compatible con NVIDIA CUDA", hay que buscar también el logo que diga "Compatible con NVIDIA NVENC". Por ejemplo, Mirillis Action! ya ha implementado esta compatibilidad con NVENC (la imagen de arriba a la derecha es el logo que han puesto en su web).

Pero hay un detalle, como se ha mencionado, NVENC es una tecnología de codificación de video basada en hardware, vale decir, viene en tu tarjeta gráfica, son núcleos dedicados única y exclusívamente a las tareas de codificación de videos, de esta forma los núcleos CUDA quedan libres para otras exigencias. La pregunta es, ¿Todas las tarjetas gráficas Nvidia incluyen este hardware conocido como NVENC? No. Sólo las tarjetas gráficas Nvidia basadas en GPUs Kepler y Maxwell tienen NVENC, como la serie GeForce 600 fabricadas en Marzo del 2012 y posteriores.


El argumento de Nvidia para usar NVENC

Dejo la traducción literal de un archivo PDF hecho por la compañía sobre NVENC:

La última generación de GPUs NVIDIA basadas en la arquitectura Kepler contienen un codificador de vídeo H.264 basado en hardware (en adelante conocido como NVENC).

Antes de los GPUs Kepler, la única solución de NVIDIA para la codificación de vídeo era mediante el uso del codificador basado en CUDA de NVIDIA, operativa a través de la API NVCUVENC. Una de las desventajas del codificador basado en CUDA es que utiliza una combinación del CPU y el motor 3D de la GPU para la codificación, dejando muy poco poder de procesamiento para otras tareas. Este enfoque también aumenta el consumo total de energía del sistema.

NVENC, siendo hardware H.264 dedicado, no utiliza el motor 3D y, por tanto, se utiliza menos energía en comparación con el codificador basado en CUDA. También deja libre al CPU para realizar otras tareas. El hardware está optimizado para proporcionar una excelente calidad a un alto rendimiento. El codificador de hardware NVENC mejora el rendimiento de codificación por casi un factor de 4 en comparación con el codificador CUDA (en calidad equivalente).

Si es así, totalmente de acuerdo en usar NVENC. Sólo es cuestión de tiempo para que tu software de codificación de video favorito - que ahora dejó de ser compatible con CUDA - se actualice, pero ¿Y si tu tarjeta gráfica no tiene en su hardware a NVENC? o ¿Si tu editor o conversor de video decide no implementar los nuevos cambios basados en NVENC en sus nuevas versiones? Simplemente no podrás aprovechar la potencia de los núcleos CUDA de la GPU otra vez al realizar codificaciones de videos. De una u otra forma, hemos quedado limitados.


Reactivando la compatibilidad entre CUDA y el software de codificación de video

Aún teniendo el driver Nvidia más reciente ya instalado que incluye NVENC, es posible restaurar NVCUVENC (un fichero DLL) en nuestro sistema, de esta forma podremos seguir actualizando los controladores gráficos para no perder las optimizaciones de las nuevas versiones. Debemos seguir estas indicaciones:

1. Tenemos que descargar el último driver compatible con nuestra tarjeta gráfica que contenga el módulo NVCUVENC. Sólo debemos ingresar a la siguiente página y buscar la lista de versiones de controladores aplicables según el modelo de nuestra tarjeta Nvidia:

Sugerencia: En la pestaña Recommended/Beta, elige Recommended/Certified que son versiones estables de drivers.


Al realizar la búsqueda, nuestra referencia será la versión 340.52 (esta versión o cualquier numeración posterior no tiene el módulo NVCUVENC), entonces debemos descargar la versión más próxima anterior a la 340.52. En mi ejemplo descargaré la versión 337.88, en otros casos puede variar, por ello es importante que descarguen el driver específico para su tarjeta gráfica.


2. Una vez descargado no debemos ejecutarlo. Usaremos WinRAR para extraer su contenido: damos clic derecho sobre el EXE del driver y elegimos Extraer en nombre_del_archivo. Se generará una carpeta con el contenido extraído.


3. Ahora ingresaremos a la carpeta extraída, y luego en la subcarpeta Display.Driver. Allí buscaremos dos ficheros de nombre: nvcuvenc32.dl_ y nvcuvenc64.dl_


4. Por una cuestión de orden copiaremos esos ficheros a otra ubicación (una carpeta nueva por ejemplo). Ahora debemos abrir una consola de comandos en esa carpeta. Para esto, en Windows 7, 8 y 8.1 dentro de dicha carpeta sólo presionamos las teclas Ctrl + Shift + clic derecho y elegimos Abrir ventana de comandos aquí.


5. En la consola de comandos debemos ejecutar las siguientes instrucciones una a una para obtener los ficheros DLLs del módulo de NVCUVENC que usaremos más adelante:
expand nvcuvenc32.dl_ nvcuvenc32.dll
expand nvcuvenc64.dl_ nvcuvenc64.dll


Una vez terminado, cerramos CMD. En la imagen anterior están remarcados en amarillo los DLLs de NVCUVENC que hemos obtenido:

  • El fichero nvcuvenc32.dll es el módulo de 32-Bit | Peso: 2.30 MB
  • El fichero nvcuvenc64.dll es el módulo de 64-Bit | Peso: 2.65 MB

6. Ahora debemos insertar estos DLLs generados en la carpeta del sistema. Esto lo haremos según sea el caso:

Para Windows 7, 8 y 8.1 de 32-Bit:



Para Windows 7, 8 y 8.1 de 64-Bit:




Con el procedimiento anterior hemos logrado reactivar el módulo NVCUVENC de manera que podemos volver a usar los núcleos CUDA para la codificación de videos aún teniendo el driver Nvidia más reciente. Aquí un ejemplo con el programa Xilisoft Video Converter una vez reactivado el módulo requerido:


Bueno, espero que en algún momento les sea útil este post. Si tienen alguna duda o pregunta, pueden expresarlo en los comentarios. Nos vemos en la siguiente entrada.

0 comentarios