“If debugging is the process of removing bugs, then programming must be the process of putting them in.” (Edsger W. Dijkstra)
Escritas por: Uriel Aceves y Leonardo Castro
Las notas que se encuentran en esta carpeta fueron escritas como parte de nuestro servicio social durante nuestra licenciatura en Física en la UNAM, con la intención de enseñar el lenguaje de programación CUDA C al lector, asi como el paradigma de la programación en paralelo. Puede tomarse como un curso introductorio a cursos de programación utilizando procesadores gráficos. El propósito principal de las notas es mostrar lo básico de CUDA y PyCUDA para que al completar la lectura y los ejercicios, el lector sea capaz de hacer sus propios programas en paralelo y tenga la posibilidad de acercarse a libros de enseñanza de CUDA tales como CUDA by Example o Programming Massively Parallel Processors y el lenguaje no sea tan árido como para una persona que nunca ha lidiado con C.
Las notas se dividen en dos partes principales:
##Parte I
Capítulo | Estado |
---|---|
Procesadores gráficos y CUDA | Terminado |
Bases de CUDA | Terminado |
Multiplicación de vectores | Terminado |
Patrones de comunicación | Terminado |
Multiplicación de matrices | Terminado |
Programación con teselas | Terminado |
Ejercicios | Terminado |
##Parte II
Capítulo | Estado |
---|---|
Introducción a PyCUDA | Terminado |
Distribuciones de probabilidad | Terminado |
Caminantes aleatorios | Terminado |
Ecuación maestra | Terminado |
Cadenas de Markov | Terminado |
Impresiones y tiempos | Terminado |
Operaciones con matrices | Terminado |
##Apéndices
Capítulo | Estado |
---|---|
Instalación de CUDA C | Terminado |
Instalación de git, julia y el ipython notebook | Terminado |
Números aleatorios con CUDA C | Terminado |
===
Se pueden encontrar otras notas de PyCUDA hechas por Roberto Antonio Zamora Zamora con un enfoque diferente aquí, se les sugiere a los lectores interesados en aprender más del tema, se acerquen a este sitio.
===
Una aclaración pertinente es el hecho de que no somos expertos en el tema de programación en paralelo, o el uso de CUDA y/o PyCUDA sino que estas notas son el resultado de nuestro progreso desde no saber nada de CUDA hasta el punto en que nos encontramos actualmente. Las notas fueron escritas a la par que fuimos aprendiendo y al final se revisaron para pulir detalles. Si se complementan con algunos métodos numéricos bien podrían tener valía para un curso semestral de 3 horas semanales.
Agradecemos a la Facultad de Ciencias de la UNAM por la educación y las oportunidades que nos brindaron. Al Dr. David P. Sanders (perfil de GitHub), nuestro tutor por su paciencia, sus acertadas observaciones, y proveernos un lugar para trabajar durante el desarrollo del proyecto.
Esperamos que estas notas cumplan su propósito: ayudar en la enseñanza y formación de científicos de calidad, para México y América Latina. Que realmente este servicio social sea lo que su nombre pregona.
===
Si existen sugerencias o se detectan algunas erratas en las notas, comunicarse a los correos: