Ejecutando OpenCL en una GPU Raspberry Pi

Este es un desarrollo interesante para los usuarios de medios y los piratas informáticos de aprendizaje automático: [doe300] implementó OpenCL en la Raspberry Pi 3 Modelo B + llamado VCFCL Esta es una gran noticia, ya que la Pi 3+ tiene una Unidad de Procesamiento de Gráficos (GPU) incorporada en el procesador, que generalmente se ha subutilizado. La GPU VideoCore IV está integrada en el Broadcom BCM2837B0 y es sorprendentemente capaz de funcionar con un chip de bajo consumo. Aunque esta GPU está bien documentada, no se ha utilizado tan ampliamente porque necesita codificar específicamente para esta clase de GPU. Agregar soporte para un marco avanzado como OpenCL hace que sea mucho más fácil ejecutar y adaptar paquetes existentes.

Este OpenCL es el resultado final de la maestría de Daniel Steadelmann en Nurenberg Tech, y esta implementación es compatible con el perfil de entrada para OpenCL 1.2. Esto incluye solo un subconjunto de los comandos completos de OpenCL. Sin embargo, admite un decodificador de cliente instalable (ICD), lo que significa que puede iniciar otra implementación de OpenCL al mismo tiempo. Este es un buen truco si desea ejecutar tareas de OpenCL en la GPU y la CPU al mismo tiempo con una implementación de CPU como POCL.

El rendimiento de la GPU VideoCore IV no solo encenderá el mundo: el autor estima el rendimiento máximo alrededor de 24 GFLOPS. Compare eso con los 8200 GFLOP que puede manejar Nvidia GTX1080, y puede apreciar que es posible que no se aleje mucho mientras extrae Etherium. Sin embargo, eso sería suficiente para mejorar programas como Plex y Encode en Raspberry Pi de manera más realista si se implementan, ya que es suficiente para admitir la transcodificación en tiempo real de la transmisión de video.

  • Ostraco dice:

    "Domina estos"

    Es bueno tenerlos. ;-D

    • colin dice:

      Quizás sea el plural de una tesis: P

  • Gregg Eshelman dice:

    Transcodificación en tiempo real, ¿a qué códec? Me encantaría tener un hardware de lujo que pueda convertir películas de 1080p a HEVC en tiempo real o más rápido.

    • Max Siegieda (@CampGareth) dice:

      Sospecho que necesitará un codificador de video de dispositivo para esto. Considere por un momento que los xeon e5-2670 duales son similares en rendimiento a la GPU del rasp y esas CPU no pueden manejar HEVC en tiempo real (tal vez lo harían sin todas las campanas y silbatos x265 encendidos: P).

    • Robert Mateja dice:

      Nvidia NVENC + Mini-ITX?

    • Entropía 512 dice:

      Rara vez he visto la transcodificación en tiempo real utilizando OCL: el hardware de codificación / decodificación dedicado suele ser más potente, eficiente y más barato y el pi ya tiene capacidad de codificación / decodificación H.264 de hardware, estoy bastante seguro de que llegará a 1080p

    • colin dice:

      Tiene mucho más sentido usar algo como NeTV2 para una transcodificación seria en tiempo real. No está haciendo nada en tiempo real sobre la arquitectura del microprocesador.

  • Bo dice:

    ¿Funciona incluso con el nuevo controlador VC4 o depende del antiguo firmware propietario?

  • mentir ahora dice:

    ¿Funciona incluso con la nueva arquitectura VC4 o depende del antiguo firmware propietario?

  • rastersoft dice:

    Puede que no sea una codificación, pero agregar nuevos decodificadores de video que no son compatibles con el hardware puede ser una buena idea.

    • Daniel dice:

      Un decodificador que use OpenCL también sería bueno para mi placa Nvidia ION, que no puede reproducir H.264 y H.265 de 10 bits a 1080p. Esta GPU tiene 54 GFLOP según Wikipedia.

  • Adán dice:

    ¿Por qué solo Pi 3+ si los chips BCM más antiguos también tienen VideoCore IV?

    • Sugerencia dice:

      Un artículo es engañoso, en un repositorio de fuentes no se menciona ningún modelo.

    • Nicolás Lafferty dice:

      Dice en el sitio web de GitHub que es para todos los Pi.

  • Nicolás Lafferty dice:

    ¿Se puede usar para fachadas de juegos retro? (Especialmente para ayudar con la emulación N64)

    • Ed Dodd dice:

      Eso es exactamente lo que me estaba preguntando.

  • Steve dice:

    Vale la pena señalar que Raspberry Pi ya es una plataforma Kodi bastante buena. Tiene decodificación de hardware 1080p para H.264 como estándar (con enlaces 1080i decentes en los modelos Quad core), decodificación de hardware MPEG2 y VC-1 con las licencias adecuadas, codificación de hardware H.264, no se requiere licencia, viene como norma)

    Para tareas de reproducción de codificación MPEG2 / H.264 / VC-1 de 1080p, el Pi ya es una buena solución.

    Existen soluciones para la transcodificación de dispositivos de video basadas en Pi (usando el decodificador y codificador de dispositivos)

    También hay decodificadores optimizados para HEVC acelerados por GPU ahora en las últimas versiones de Kodi / ffmpeg, que creo que reproducirán contenido HEVC / h.265 de 10 bits de 1080p.

  • No fidedigno dice:

    ¿RaspberryPi todavía no necesita una carga de blob binario para su uso? Meh.

    • Cierto dice:

      Y esas manchas permanecerán hasta al menos 2025, cuando la patente del códec expire en todos los países (ref: https://www.raspberrypi.org/forums/viewtopic.php?t=201449)

  • Marty dice:

    Una cosa que no se menciona en el artículo es que los programas que usan esta implementación de OpenCL deben ejecutarse como root, ya que la interfaz DMA para el VC4 no tiene una unidad de administración de memoria y por lo tanto puede acceder a cualquier parte de la memoria del sistema (!!) Es un gran preocupación por la seguridad.

    • colin dice:

      Esa es una advertencia interesante, pero creo que debido a la placa única de Pi y los casos de uso para esto, mucha gente no se molestará en darle una raíz (aunque no es apropiado).

  • Slincolne dice:

    Sería bueno tener algunos ejemplos de cómo escribir y ejecutar código para estos. Dejando de lado la transcodificación de videos, esta parece una excelente manera de realizar el procesamiento de señales digitales para cosas como la radio definida por software.

    • kristoff dice:

      Hola,

      Hay algunas aplicaciones en "VC4CL / test".

      Pero cuando trato de compilarlos "cmake.", Aparece un error ("Error de CMake en CMakeLists.txt: 10 (ExternalProject_Get_Property): comando de CMake desconocido" ExternalProject_Get_Property ".")
      Grr .. 🙁

      Kristoff

  • JohnU dice:

    Leer todo, sin embargo, no sé en absoluto qué es OpenCL o por qué lo querría. ¡Vamos!

    • Im_Int dice:

      OpenCL es un marco de programación de GPU abierto. Sin OpenCL, rpi nunca obtendrá buenas bibliotecas informáticas aceleradas por GPU. Actualmente, RPi es casi inútil para el aprendizaje profundo porque hay muy poca compatibilidad con GPU para la aceleración de gpu y las CPU son demasiado lentas para la mayoría de las aplicaciones. Tan pronto como a alguien se le ocurra un producto de precio similar que pueda realizar aprendizaje automático acelerado por gpu sin la complejidad de la programación personalizada de gpu, frambuesa morirá porque todos quieren cambiar. Es por eso que frambuesa necesita desesperadamente OpenCV.

    • Cierto dice:

      OpenCL es una abreviatura de Open Computing Language. Las GPU suelen tener muchos elementos de procesamiento muy pequeños que pueden realizar en paralelo una operación matemática básica. Por lo tanto, pueden usarse para acelerar la codificación de video, codificación de audio, función de pirateo criptográfico, transformaciones rápidas de Fourier, multiplicación de vectores matriciales, ... y mucho más. Básicamente, pueden usarse para acelerar cualquier operación matemática que se beneficie de las operaciones paralelas.

      • kristoff dice:

        Hola,

        Al observar las especificaciones de estas GPU, se menciona que estos dispositivos pueden hacer muchas cosas diferentes, gráficos 2D (openVG), gráficos 3D (openGL / openGL ES), codificación y decodificación de video en tiempo real.

        Lo que nunca entendí es esto:
        ¿Esto realmente se hace con el mismo hardware? ¿Se accede a estos mismos procesadores / elementos de procesamiento por diferentes API? ¿O estas diversas piezas de los dados están todas especializadas para hacer lo suyo?

        Kr.

        • Hinojo dice:

          Es el mismo hardware para todo. Lo que cambia de una API a otra es la forma en que administran los datos.
          Técnicamente, podría aprender automáticamente con OpenGL, pero necesitaría hacer cosas muy desagradables para adaptar sus datos a un formato que acepte la API, cómo convertirlos en texturas. Además, la API tiene límites que harían que hacer cualquier cosa que no sean gráficos sea muy difícil, si no imposible.

          Desde ahora, se han creado varias generaciones de GPU para que sean máquinas de números en lugar de procesadores gráficos especiales, de modo que puedan usarse en varios campos.

  • SSL Bell dice:

    Y observe el proyecto de minería de monedas completamente impráctico y que pierde dinero en 3 .. 2 .. .1 ...

  • Papá feliz dice:

    Me gustaría ver el RPi como el nuevo Amiga / C64 de la escena de demostración y ver hasta dónde pueden llegar.

    Un dispositivo de 5 vatios que lanza animaciones locas en 3D a 1080p 60 fps o encuentra la manera de ir aún más alto.

Eva Jiménez
Eva Jiménez

Deja una respuesta

Tu dirección de correo electrónico no será publicada.