Ask HN: ¿Cómo aprender CUDA hasta un nivel experto?
(news.ycombinator.com)- Tengo curiosidad sobre qué libros/cursos/proyectos debería tomar para aprender programación CUDA (porque muchas empresas en las que me gustaría trabajar piden experiencia con CUDA)
Resumen de las respuestas de HN
-
Materiales de aprendizaje y primeros pasos
- Recomiendan la CUDA Programming Guide oficial de NVIDIA y el archivo de libros de NVIDIA
- Empezar con programas de ejemplo pequeños e ir practicando paralelización poco a poco; el conocimiento previo de C/C++ es muy importante
- Usar código open source (GitHub, etc.) y LLMs (por ejemplo, ChatGPT) para interpretar la estructura del código y practicar
- Se recomienda un plan de unas 6 a 8 semanas con enfoque principalmente práctico
-
Hardware y entorno necesarios
- Una GPU NVIDIA de los últimos 10 años es suficiente (en especial Turing/RTX 20xx, Ampere/RTX 30xx o superior); las más antiguas (anteriores a Maxwell) tienen límites de soporte y rendimiento
- Usar la versión más reciente de CUDA Toolkit y verificar la Compute Capability de la GPU (tabla de soporte)
- Se puede trabajar tanto en Windows como en Linux, y según el entorno también se puede aprovechar Docker y VPS
- Si no tienes GPU, puedes probar con emuladores en línea como leetgpu.com
-
Fundamentos de programación paralela
- Más que la sintaxis de CUDA en sí, es más importante entender los algoritmos paralelos y la arquitectura del hardware
- Libros representativos:
- Programming Massively Parallel Processors (PMPP)
- Foundations of Multithreaded, Parallel, and Distributed Programming
- Scientific Parallel Computing
- The Art of High Performance Computing (Victor Eijkhout, gratis)
- En el trabajo real con CUDA, la demanda suele centrarse en usar bibliotecas basadas en CUDA como cuBLAS y cuDNN, y maximizar el rendimiento paralelo
-
Metodología de aprendizaje
- Más que estudiar solo la sintaxis, se recomienda el enfoque de portar código pequeño de CPU a CUDA → medir rendimiento → optimizar gradualmente
- Al principio, enfocarse en la corrección; después aplicar optimización de rendimiento paso a paso (gestión de memoria,
shared memory, uso de registros, etc.) - Ejemplos prácticos recomendados: prefix scan, GEMM, n-body simulation y otros algoritmos paralelos clásicos
- Conviene aprender primero bibliotecas de abstracción de alto nivel como CUDA Thrust, CUTLASS y cub; la implementación directa puede venir después
-
Trabajo real y carrera profesional
- La experiencia con CUDA se pide sobre todo en deep learning, ingeniería de datos, HPC (cómputo científico), gráficos para videojuegos, etc.
- Hay puestos que no solo buscan experiencia con PyTorch/Tensorflow, sino también optimización de kernels y bibliotecas CUDA centrales
- Para construir especialización práctica, también es importante saber usar herramientas de bajo nivel como PTX, nvcc, cuobjdump y Nsight Systems/Compute
- Participación en comunidad: comunidades activas como gpumode Discord y GPU Puzzles permiten revisión de código real y discusión
-
Precauciones y consejos realistas
- Empezar es fácil, pero optimizar para cada hardware (arquitectura/conjunto de instrucciones) y asegurar compatibilidad es muy difícil; la barrera de entrada es alta
- En la práctica, la experiencia laboral y la red de contactos importan mucho, y el aprendizaje autodidacta por sí solo no puede sustituir la experiencia profesional
- CUDA es un campo donde se entrelazan hardware, cómputo paralelo, algoritmos y optimización, así que se recomienda concentrarse en un área y profundizar en ella
2 comentarios
Bueno. No sé si alguna vez habrá casos en los que se use
cudadirectamente. Especialmente en Corea.Comentario de Hacker News
Como participante del
cudacontestde NVidia en 2008, y una de las pocas personas que enviaron una propuesta desde India, además de haber recibido un premio de participación con una BlackEdition Card, comparto el método que seguíNVidia CUDA Programming GuideRevisé directamente el código CUDA de Leela Chess Zero y me pareció entendible
Si tu motivación es el dinero, recomiendo dejar de lado HPC y las áreas matemáticas
Los recursos y la comunidad de Discord de gpumode.com dan material de estudio suficiente para varios meses
Programming massively parallel processorsRecomiendo dividir el alcance del aprendizaje para hacerlo más accesible
Comparto mi experiencia personal aprendiendo CUDA
compute-sanitizer, Nsight)Presento materiales que usé al enseñar CUDA a estudiantes de secundaria: no bastan para dominar todo por cuenta propia, pero ayudan mucho para empezar
Aún no lo he usado, pero recomiendo la plataforma leetgpu.com porque se ve bastante bien
Pido la opinión de gente del sector sobre qué trabajos, posiciones y tipos de empresa están contratando ingenieros CUDA
slippy mapy hacemos procesamiento resumido del raster en GPUCon los cambios de la época, también sirve preguntarles a LLM como Claude para obtener al mismo tiempo código de resultado y explicación