SM, Núcleos CUDA y Arquitectura de GPU
SM, Núcleos CUDA y Arquitectura de GPU
La arquitectura de GPU de NVIDIA se construye alrededor de una estructura jerárquica. La unidad más pequeña es el núcleo CUDA, que es una unidad aritmética simple que puede realizar una operación de punto flotante o entera por ciclo de reloj. Los núcleos CUDA se agrupan en unidades más grandes llamadas Multiprocesadores de Flujo, o SM. Cada SM contiene un número fijo de núcleos CUDA, junto con memoria compartida, registros y lógica de planificación.
El número de núcleos CUDA por SM ha aumentado con cada generación. En la arquitectura Turing, cada SM tenía 64 núcleos CUDA. En Ampere, subió a 128. En Ada Lovelace, cada SM tiene 128 núcleos CUDA, pero la arquitectura es más eficiente, por lo que cada núcleo hace más trabajo por ciclo. Una RTX 4090 de gama alta tiene 128 SM para un total de 16,384 núcleos CUDA.
Los núcleos CUDA no son todos idénticos. Las GPU modernas de NVIDIA tienen núcleos separados para matemáticas enteras y de punto flotante, y pueden ejecutar ambos tipos de instrucciones simultáneamente. Esto se llama concurrencia FP32 e INT32, y mejora la utilización. También hay unidades funcionales especiales para operaciones como raíces cuadradas y funciones trigonométricas, y tensor cores para operaciones matriciales.
El SM también contiene un planificador que decide qué hilos ejecutar a continuación. Las GPU utilizan paralelismo masivo, ejecutando miles de hilos simultáneamente. El planificador agrupa los hilos en warps de 32 hilos cada uno. Los 32 hilos en un warp ejecutan la misma instrucción, pero sobre datos diferentes. Si los hilos en un warp toman diferentes caminos de código, algunos tienen que esperar, lo que reduce la eficiencia.
La jerarquía de memoria es crítica en la arquitectura de GPU. Cada SM tiene su propio archivo de registros y memoria compartida, que son extremadamente rápidos pero de tamaño limitado. Todos los SM comparten una caché L2 más grande, y más allá está la VRAM global. Comprender esta jerarquía es esencial para escribir código GPU eficiente. Los datos que permanecen en registros o memoria compartida son cientos de veces más rápidos de acceder que los datos en memoria global.
Trabajemos juntos
¿Necesitas más información, ayuda con tu proyecto o desarrollar una idea?
Ya sea una pregunta sencilla, una duda rápida o una charla de 5 minutos, envíame un mensaje—no cuesta nada y siempre estoy listo para ayudar. Me gusta escuchar para entender el problema, ser creativo en las soluciones y centrarme en ideas simples, confiables y fáciles de implementar rápidamente.
Contáctame →