/CUDA_pyCUDA

Una introducción a Python, CUDA y PyCUDA para científicos, en español. Archivos .tex y notebooks.

Primary LanguageJupyter NotebookMIT LicenseMIT

Una introducción a CUDA y PyCUDA para científicos

“If debugging is the process of removing bugs, then programming must be the process of putting them in.” (Edsger W. Dijkstra)

Las notas que se encuentran en esta carpeta fueron escritas 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: