Presentación
A lo largo de este tutorial de CUDA trabajaremos con una serie de códigos eminentemente didácticos que tratarán de aportarnos las nociones básicas sobre cómo manejarnos con el hardware y el paradigma de programación CUDA.
Listados en el orden en que intervendrán en nuestro tutorial, estos códigos son los siguientes:
Testeos y métricas
Aquí aprenderemos a medir tiempos y extraer las propiedades hardware más interesantes de la GPU con la que vamos a interactuar: Número de cores y sus frecuencias, memorias y sus anchos de banda, ...
El producto de matrices
El popular algoritmo de la multiplicación de matrices cuadradas y densas nos servirá para ilustrar una serie de optimizaciones relacionadas con la descomposición del código en bloques de hilos y la ubicación de los datos en la jerarquía de memoria de la GPU.
La suma por reducción
Este código realiza la suma de un vector de N elementos mediante un operador binario de reducción, es decir, en log2(N) pasos. Suponemos un N suficientemente grande como para que requiera la comunicación intra-bloque e inter-bloque entre los hilos CUDA implicados en la computación.