Bueno escarbando en mi repositorio de codigo encontre uno muy basico que suma dos vectores.
Pero para compilarlo tienes que tener una computadora compatible con CUDA, el SDK y el compilador nvcc, pero a manera ilustrativa un programa en
C, muy simple para un GPU multinucleo, luciria algo asi:
La arquitectura CUDA te permite crear funciones escritas en C, llamadas kernels.
Cuando las llamas, son ejecutadas N veces, en paralelo por N hilos (threads) CUDA
Cada hilo generado por CUDA, se le asigna una ID unica, la cual podemos accesar a traves de la palabra reservada threadIDx
Código C:
Ver original//Definicion del kernel
__global__ void SumaVector(float* A, float* B, float* C)
{
int i = threadIdx.x;
C[i] = A[i] + B[i];
}
int main()
{
//Llamada al kernel con N hilos CUDA
SumaVector<<<1, N>>>(A, B, C); }
Otro detalle es que en este tipo de programacion, raras veces utilizas un for, ya que el for restringe tu programa a un solo nucleo, y estarias desaprovechando la capacidad que tiene tu CPU (o GPU en mi caso)