Ver Mensaje Individual
  #7 (permalink)  
Antiguo 27/07/2010, 15:34
AlanChavez
 
Fecha de Ingreso: junio-2010
Ubicación: Charlotte, NC
Mensajes: 611
Antigüedad: 14 años, 5 meses
Puntos: 95
Respuesta: doble,quad nucleo/core

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
  1. //Definicion del kernel
  2.  
  3. __global__ void SumaVector(float* A, float* B, float* C)
  4.  {
  5. int i = threadIdx.x;
  6. C[i] = A[i] + B[i];
  7.  }
  8. int main()
  9. {
  10.  //Llamada al kernel con N hilos CUDA
  11. 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)

Última edición por AlanChavez; 27/07/2010 a las 15:59