¿Cuál es la diferencia entre los núcleos CUDA y los núcleos tensoriales? (Explicación) - All The Differences
Tabla de contenido
Los núcleos CUDA y Tensor son productos desarrollados por una empresa llamada Nvidia. Entonces, ¿qué son los núcleos CUDA y los núcleos Tensor? CUDA son las siglas de Compute Unified Device Architecture. Los núcleos CUDA están presentes en tus GPU, smartphones e incluso en tus coches, como dicen los desarrolladores de Nvidia.
Los núcleos CUDA son una plataforma de cálculo paralelo y una interfaz de programación de aplicaciones (API) que permite al software hacer uso de tipos específicos de unidades de procesamiento gráfico (GPU) para el procesamiento de propósito general.
Por su parte, los núcleos tensoriales, también desarrollados por Nvidia, se utilizan en las GPU. Los núcleos tensoriales permiten la computación de precisión mixta, adaptando los cálculos dinámicamente para aumentar el rendimiento sin perder precisión.
En palabras sencillas, estos núcleos son una parte importante de las GPU de tu PC para realizar determinados cálculos. Los núcleos CUDA se utilizan para multiplicar dos números y sumarlos a otro número.
Mientras que Tensor core es lo mismo pero con matrices de 4×4. Estos cálculos son básicamente renderizar gráficos más rápido para ti.
¿Qué es CUDA?
Compute Unified Device Architecture, abreviado CUDA, desarrollado por Nvidia y publicado el 23 de junio de 2007, es una plataforma de cálculo paralelo y una interfaz de programación de aplicaciones (API).
Esto permite al software utilizar tipos específicos de unidades de procesamiento gráfico (GPU) para el procesamiento de propósito general, un método conocido como computación de propósito general en GPU (GPU).
Ver también: ¿Cuál es la diferencia entre MashaAllah e InshaAllah? - Todas las diferenciasCUDA es una capa de software que proporciona acceso directo al conjunto de instrucciones virtuales de la GPU y a los elementos de cálculo paralelo para la ejecución de los kernels de cálculo. CUDA se desarrolló para funcionar con diferentes lenguajes de programación, incluidos C, C++ y Fortran.
La posibilidad de trabajar con distintos lenguajes de programación facilita a los especialistas en programación paralela el aprovechamiento de los recursos de la GPU, si la diferenciamos de APIs anteriores como Direct3D u OpenGL, que requerirían una base de conocimientos más avanzada en programación gráfica.
Las GPU con CUDA también admiten marcos de programación, como OpenMP, OpenACC, OpenCL y también HIP, que puede compilar dicho código en CUDA. El primer nombre utilizado para CUDA fue un acrónimo de Compute Unified Device Architecture (Arquitectura de Dispositivos de Computación Unificada). Sin embargo, Nvidia abandonó posteriormente el acrónimo comúnmente utilizado.
Una potente tarjeta gráfica Nvidia GTX 1080 Ti
Más información sobre CUDA
Como procesador informático especializado, la unidad de procesamiento gráfico (GPU) satisface las necesidades de las cargas de trabajo de gráficos 3D en tiempo real y con alta carga computacional.
Hacia 2012, las GPU evolucionaron y se convirtieron en sistemas multinúcleo altamente paralelos que permitían un procesamiento eficaz de datos para grandes bloques.
Al procesar enormes bloques de datos en paralelo, este diseño es superior al de las unidades centrales de procesamiento (CPU) de propósito general para algoritmos como:
- funciones hash criptográficas
- aprendizaje automático
- simulaciones de dinámica molecular
- motores físicos
- algoritmos de ordenación
Usos de la arquitectura CUDA ahora y en el futuro
- Renderizado acelerado de gráficos 3D
- Interconversión acelerada de formatos de archivo de vídeo
- Cifrado, descifrado y compresión acelerados
- Bioinformática, por ejemplo, secuenciación NGS del ADN BarraCUDA
- Cálculos distribuidos, como la predicción de la conformación nativa de las proteínas.
- Simulaciones de análisis médicos, por ejemplo, realidad virtual basada en imágenes de tomografía computarizada y resonancia magnética.
- Simulaciones físicas, en particular en dinámica de fluidos
- Entrenamiento de redes neuronales en problemas de aprendizaje automático
- Reconocimiento facial
- Proyectos de computación distribuida, como [email protected] y otros proyectos que utilizan BOINC
- Dinámica molecular
- Minería de criptomonedas
- Software de estructura a partir del movimiento (SfM)
¿Qué es un núcleo tensorial?
Los núcleos especializados denominados Tensor Cores permiten la formación de precisión mixta. La generación inicial de estos núcleos especializados lo hace con un algoritmo de multiplicación- suma fusionado. Esto hace posible multiplicar y sumar dos matrices de 4 x 4 FP16 a una matriz de 4 x 4 FP16 o FP32.
El resultado final será FP32 con sólo una ligera pérdida de precisión, la computación de precisión mixta se designa como tal aunque las matrices de entrada puedan ser FP16 de baja precisión.
En la práctica, esto acelera considerablemente los cálculos sin apenas influir en la eficacia final del modelo. Esta capacidad ha sido ampliada por microarquitecturas posteriores a representaciones numéricas de ordenador aún menos precisas.
La primera generación se introdujo con la microarquitectura Volta a partir de la V100, y con cada generación se ofrecían más formatos de precisión numérica para el cálculo con las nuevas microarquitecturas de GPU.
Hablaremos de cómo la capacidad y funcionalidad de los Tensor Cores han cambiado y mejorado con cada generación de microarquitectura en la sección siguiente.
Una imagen renderizada gráficamente por una Titan V
¿Cómo funcionan los núcleos sensores?
Primera generación:
La microarquitectura de la GPU Volta se incluyó con la primera generación de Tensor Cores, que permitían entrenar con precisión mixta y el formato numérico FP16.
Los 640 núcleos de la V100 de gama alta multiplican por 5 la velocidad de rendimiento de las GPU Pascal de la generación anterior.
Segunda generación:
Con la introducción de las GPUs Turing, se introdujo la segunda generación de Tensor Cores. Int8, Int4 e Int1 se añadieron a la lista de precisiones soportadas por los Tensor Core, que anteriormente estaban limitadas a FP16.
Gracias a los procedimientos de entrenamiento de precisión mixta, el rendimiento de la GPU aumentó hasta 32 veces en comparación con las GPU Pascal.
Tercera generación:
La arquitectura de una GPU Ampere amplía los avances anteriores de las microarquitecturas Volta y Turing al añadir soporte para las precisiones FP64, TF32 y bfloat16.
Por ejemplo, el formato TF32 funciona de forma similar a FP32 y garantiza una aceleración de hasta 20 veces sin necesidad de modificar el código.
Entonces, con sólo unas pocas líneas de código, la implementación automática de precisión mixta acelerará el entrenamiento en 2x adicionales.
Ver también: Cuál es la diferencia entre potencia de ataque y fuerza de ataque (en personajes de ficción) - Todas las diferenciasNVLink de tercera generación para permitir interacciones multi-GPU ultrarrápidas, núcleos Ray Tracing de tercera generación y especialización en matemáticas de matrices dispersas son otros aspectos de la microarquitectura Ampere. .
Cuarta generación:
Está prevista una futura versión de la cuarta generación de Tensor Cores basada en la microarquitectura Hopper. La cuarta generación de Tensor Cores en el próximo H100.
cuyo lanzamiento está previsto para marzo de 2022, podrá manejar formatos de precisión FP8 y, según NVIDIA, acelerará los modelos de lenguaje enorme "en una asombrosa proporción 30X superior a la generación anterior."
Una tarjeta gráfica RTX se utiliza para renderizar gráficos muy rápido, ya que contiene núcleos tensoriales.
Diferencia entre núcleos CUDA y núcleos tensoriales
Los núcleos de tensor están limitados actualmente a Titan V y Tesla V100. Los 5120 núcleos CUDA de ambas GPU tienen una capacidad máxima de una operación de multiplicación-acumulación de precisión simple (por ejemplo, en fp32: x += y * z) por reloj de GPU (por ejemplo, la frecuencia PCIe de Tesla V100 es de 1,38Gz).
Cada núcleo tensor opera con matrices pequeñas de 4×4. Por cada reloj de la GPU, cada núcleo tensor puede completar una operación de multiplicación-acumulación de matrices.
Multiplica dos matrices 4×4 FP16 y suma la matriz 4×4 FP32 que resulta en el acumulador (que también es una matriz fp32 4×4).
Dado que las matrices de entrada son fp16 mientras que los resultados de la multiplicación y el acumulador son fp32, el algoritmo se conoce como de precisión mixta.
El término correcto sería probablemente "núcleos de matriz 4×4", pero el equipo de marketing de NVIDIA ha optado por utilizar "núcleos de tensor".
Explicación completa de los núcleos tensores en pocas palabras
Tarjeta GPU | Núcleos CUDA | VRAM |
---|---|---|
GeForce GTX 1660 Ti | 1536 | 6 GB |
GeForce GTX 1660 Super | 1408 | 6 GB |
GeForce GTX 1660 | 1408 | 6 GB |
GeForce GTX 1650 Super | 1408 | 4 GB |
GeForce GTX 1650 | 1024 y 896 | 4 GB |
GeForce GTX 1060 de 3 GB | 1280 | 4 GB |
GeForce GTX 1650 | 1280 | 3 GB |
GeForce GTX 1060 6 GB | 768 | 6 GB |
GeForce GTX 1050 Ti (3 GB) | 768 | 4 GB |
GeForce GTX 1050 (2 GB) | 640 | 3 GB |
GeForce GTX 960 | 1024 | 2 GB |
GeForce GTX 950 | 786 | 2 GB |
GeForce GTX 780 Ti | 2880 | 2 GB |
GeForce GTX 780 | 2304 | 3 GB |
GeForce GTX 750 Ti | 640 | 2 GB |
GeForce GTX 750 | 512 | 1 GB o 2 GB |
GPUs que contienen núcleos CUDA
Conclusión
- Los núcleos CUDA y Tensor son productos desarrollados por una empresa llamada Nvidia. CUDA son las siglas de Compute Unified Device Architecture. Estos núcleos CUDA están presentes en tus GPU, smartphones e incluso en tus coches.
- Mientras que los núcleos tensoriales, también desarrollados por Nvidia, se utilizan en las GPU. Los núcleos especializados denominados "núcleos tensoriales" permiten entrenar con precisión mixta. La primera generación de núcleos tensoriales permitía entrenar con precisión mixta y el formato numérico FP16.
- Se han añadido Int8, Int4 e Int1 a la lista de precisiones compatibles con Tensor Core.
- Gracias a los procedimientos de entrenamiento de precisión mixta, el rendimiento de la GPU se incrementó hasta 32 veces. Está prevista una futura versión de la cuarta generación de Tensor Cores basada en la microarquitectura Hopper.