Noticias
Noticias
¿Se ha trasplantado CUDA y se está reproduciendo una GPU basada en risc-v?
2022-03-17 459

RISC-V ha sido uno de los temas más candentes en informática porque esta arquitectura de conjunto de instrucciones (ISA) permite una amplia personalización y es fácil de entender, además de todo el beneficio de código abierto y sin licencia. Incluso hay un proyecto para diseñar una GPU de uso general basada en RISC-V ISA, y ahora estamos presenciando la migración de la biblioteca de software CUDA de Nvidia a la plataforma Vortex RISC-V GPGPU.


CUDA (Arquitectura de dispositivo unificado de computación) de Nvidia representa una plataforma informática y una interfaz de programación de aplicaciones (API) únicas que se ejecutan en la línea de tarjetas gráficas de Nvidia. Cuando se escribe una aplicación para soporte CUDA, tan pronto como el sistema descubre una GPU basada en CUDA, obtiene una gran aceleración del código por parte de la GPU.


Hoy, los investigadores investigaron una forma de habilitar la compatibilidad con el kit de herramientas de software CUDA en un proyecto GPGPU RISC-V llamado Vortex. La GPGPU Vortex RISC-V está diseñada para proporcionar una GPU RISC-V para todo el sistema basada en RV32IMF ISA. Esto significa que los núcleos de 32 bits pueden escalar desde diseños de GPU de 1 núcleo a 32 núcleos. Es compatible con la API de gráficos OpenCL 1.2 y hoy también admite algunas operaciones CUDA.


Los investigadores explican: "... En este proyecto, proponemos y construimos un canal para admitir la migración CUDA de un extremo a otro: el canal acepta el código fuente CUDA como entrada y lo ejecuta en la arquitectura GPU RISC-V extendida. Nuestro La canalización consta de varios pasos: traducir el código fuente CUDA a NVVM IR, convertir NVVM IR a SPIR-V IR, reenviar SPIR-V IR a POCL para obtener el binario RISC-V y, finalmente, ejecutar en una arquitectura de archivos binarios GPU RISC-V extendida. "



El proceso se visualiza en la imagen de arriba, mostrando todos los pasos para hacerlo funcionar. En términos simples, el código fuente CUDA se representa en un formato de representación intermedia (IR) llamado NVVM IR, basado en el LLVM IR de código abierto. Posteriormente se convirtió a IR de representación intermedia portátil estándar (SPIR-V), que luego se reenvió a una implementación portátil de código abierto del estándar OpenCL, llamada POCL. Dado que Vortex es compatible con OpenCL, proporciona código compatible y puede ejecutarlo sin problemas.


Para obtener más detalles sobre este complejo proceso, haga clic a continuación para leer el artículo original. Es importante destacar que debe agradecer a estos investigadores por sus esfuerzos para hacer que CUDA se ejecute en GPGPU RISC-V. Si bien esto es solo un pequeño paso por ahora, podría ser el comienzo de una era en la que RISC-V se utilice para acelerar aplicaciones informáticas, de manera muy similar a la línea actual de GPU de Nvidia.


Lectura ampliada: ¿Puede RISC-V cambiar la GPU?


¿Puede RISC-V manejar transacciones de GPU? Este es un trabajo en progreso que se puede lograr mediante la creación de un diseño eficiente en áreas pequeñas con programabilidad y escalabilidad personalizadas.  
  Cualquiera que haya estudiado la arquitectura de GPU sabe que se trata de la construcción SIMD de un procesador vectorial. Es un procesador paralelo ultraeficiente que se ha utilizado para todo, desde ejecutar simulaciones y fantásticos juegos hasta enseñar a los robots cómo obtener IA y ayudar a personas inteligentes a manipular el mercado de valores. Incluso revisa mi gramática mientras escribo esto.  
  Pero el campo de la GPU se ha convertido en un campo privado, y su trabajo interno lo realiza la IP y eficaz Suministros de desarrolladores como AMD, Intel y Nvidia. ¿Qué pasaría si existiera un nuevo conjunto de instrucciones gráficas diseñadas para gráficos 3D y procesamiento multimedia? Bueno, puede que sí.  
  Las nuevas instrucciones se están construyendo sobre el conjunto de instrucciones vectoriales básicas RISC-V. Agregarán soporte para nuevos tipos de datos específicos de gráficos como extensiones en capas en el espíritu del núcleo RISC-V ISA. Admite operaciones vectoriales, matemáticas previas, píxeles y texturas, y buffer Z/Frame. Podría ser una CPU-GPU ISA fusionada. La biblioteca - grupo RISC 3D lo llama RV64X (Figura 1) porque las instrucciones tendrán una longitud de 64 bits (32 bits no serán suficientes para admitir una ISA robusta).  
 

Figura 1. El procesador de gráficos RV64X incluye múltiples DSP además de unidades de textura y bloques de funciones dedicados.
 
  El grupo afirmó que su motivación y objetivo era crear un diseño pequeño y eficiente con programabilidad y extensibilidad personalizadas. Debería ofrecer propiedad y desarrollo de propiedad intelectual a bajo costo, no competir con productos comerciales. Se puede implementar en objetivos FPGA y ASIC y es gratuito y de código abierto. El diseño original apunta a microcontroladores de bajo consumo que serán compatibles con Khronos Vulkan y admitirán otras API (OpenGL, DirectX, etc.).  
               

GPU + RISC-V


El hardware de destino tendrá una unidad funcional GPU y un núcleo RISC-V. Esta combinación se presenta en forma de procesadores donde las instrucciones de 64 bits están codificadas como instrucciones escalares. El punto es que el compilador generará instrucciones SIMD a partir de códigos de operación escalares prefijados. Otras características incluyen problemas mutables, un backend SIMD basado en predicados; seguimiento de sucursales; excepciones precisas; y una interfaz vectorial. Los diseños incluirán una versión de punto fijo de 16 bits y una versión de punto flotante de 32 bits. El primero es adecuado para la implementación de FPGA.  
  El equipo dijo: "No es necesario utilizar el mecanismo de llamada RPC/IPC para enviar llamadas API 3D al espacio de memoria de la CPU no utilizado o al espacio de memoria de la GPU no utilizado o al espacio de memoria de la GPU y viceversa".  
  La ventaja del enfoque CPU-GPU ISA "fusionado" es que se pueden utilizar canalizaciones de gráficos estándar en microcódigo y se pueden admitir sombreadores personalizados. Incluso puede incluir extensiones de trazado de rayos.  
  El diseño estará en formato Vblock (de un esfuerzo de GPU Libre):  
 
  • Es algo así como VLIW (pero no realmente).
  • Los bloques de instrucciones están precedidos por marcadores de registro que proporcionan contexto adicional para las instrucciones escalares dentro de ese bloque.
  • Los subbloques incluyen longitud de vector, rotación, superposición de vector/ancho y predicción.
  • ¡Todo esto se agrega a los códigos de operación escalares!
  • No hay códigos de operación vectoriales (ni es necesario ninguno).
  • En un contexto vectorial, es así: si un código de operación escalar usa un registro y ese registro aparece en el contexto vectorial, entonces se activará el modo vectorial.
  • La activación hace que el bucle for a nivel de hardware emita múltiples operaciones escalares consecutivas (en lugar de solo una).
  • Los implementadores son libres de implementar bucles de la forma que quieran: SIMD, multiproblema, de ejecución única; prácticamente cualquier cosa.

  El vector RV32-V maneja operaciones vectoriales de 8, 16 o 32 bits/elementos de 2 a 4 elementos. También habrá instrucciones dedicadas para el proceso general de renderizado de gráficos 3D para puntos XYZW de punto fijo y flotante de 64 y 128 bits. Píxeles RGBA de 8, 16, 24 y 32 bits; Textels UVW de 8 y 16 bits por componente; y ambientes luminosos y materiales (Ia, ka, Id, kd, Is, ks, etc.).  
  El vector de atributos se representa como una matriz de 4×4. El sistema admitirá de forma nativa matrices de 2×2 y 3×3. El soporte vectorial también puede ser adecuado para simulaciones numéricas que utilizan tipos de datos enteros de 8 bits comunes en aplicaciones de inteligencia artificial y aprendizaje automático.  
  Se pueden incluir en el diseño rasterizadores personalizados, como splines, superficies SubDiv y parches. Este método también permite la inclusión de etapas de canalización personalizadas, etapas de geometría/píxel/buffer de fotogramas personalizadas, subdivisores personalizados y operaciones de creación de instancias personalizadas.  
             

RV64X


La implementación de referencia RV64X incluye:
 
 
  • Caché SRAM de instrucciones/datos (32 kB)

  • Microcódigo SRAM (8 kB)

  • Decodificador de instrucciones de doble función (cableado para RV32V y X; decodificador de instrucciones microcodificado para ISA personalizado)

  • ALU de cuatro vectores (32 bits/ALU fija/flotante)

  • Archivo de registro de 136 bits (1k elementos)

  • unidad de función especial

  • unidad de textura

  • Framebuffer local configurable


  RV64X es una arquitectura escalable (Figura 2). Su método de fusión es nuevo, al igual que el uso de registros configurables para tipos de datos personalizados. El microcódigo basado en SRAM definido por el usuario se puede utilizar para implementar extensiones como etapas de rasterizador personalizadas, trazado de rayos, visión artificial y aprendizaje automático. Se puede aplicar un diseño único a un microcontrolador de gráficos independiente o a una solución multinúcleo con unidades de sombreado escalables.  
 

Figura 2. El RV64X puede escalar desde un diseño simple de gama baja (izquierda) hasta una solución multinúcleo (derecha).  
  Las extensiones de gráficos para RISC-V abordan la escalabilidad y el multilingüismo. Esto permite casos de uso de nivel superior que conducen a una mayor innovación.  
             

que sigue


La especificación RV64X aún se encuentra en desarrollo inicial y está sujeta a cambios. Se está creando un foro de discusión. El objetivo inmediato es crear una implementación de ejemplo utilizando el simulador de conjunto de instrucciones. Esto se abrirá utilizando implementaciones de IP de origen y FPGA de IP personalizadas diseñadas como proyectos de código abierto.





Descargo de responsabilidad: este artículo es una reproducción de "Observación de la industria de semiconductores". Este artículo solo representa la opinión personal del autor, no la opinión de Sac Micro y la industria, solo para reimprimir y compartir, soporte Para proteger los derechos de propiedad intelectual, indique la fuente original y el autor para la reimpresión. Si hay alguna infracción, comuníquese con nosotros para eliminarla.

whatsapp

Línea directa de servicio

tel: +86 755 83044319

WhatsApp

Whatsapp:+8618073002950