Ejemplos de programación de GPGPU en CUDA

El siguiente código tiene como función multiplicar las posiciones de un vector y asignar a esa mismos posición el resultado, es apropiado para ver como se puede paralelizar usando el id del hilo y del bloque en una sola dimensión.
CUDA - Compile Facil

CUDA – Compile Facil

Debes recordar que cuando llamamos al kernel debemos pasarle por parámetro las entradas y la variable en la cual se guardara el resultado y que estas variables las debes crear tanto en el CPU (en el main) como en la GPU con cudaMalloc y copiarlos en esa dirección (CPU –> GPU).
Espero les sirva tanto como me sirvio a mi.
#include "stdafx.h"
#include <stdio.h>
#include <cuda.h>
// Kernel that executes on the CUDA device
__global__ void square_array(float *a, int N)
{
  int idx = blockIdx.x * blockDim.x + threadIdx.x;
  if (idx<N) a[idx] = a[idx] * a[idx];
}
// main routine that executes on the host
int main(void)
{
  float *a_h, *a_d;  // Pointer to host & device arrays
  const int N = 10;  // Number of elements in arrays
  size_t size = N * sizeof(float);
  a_h = (float *)malloc(size);        // Allocate array on host
  cudaMalloc((void **) &a_d, size);   // Allocate array on device
  // Initialize host array and copy it to CUDA device
  for (int i=0; i<N; i++) a_h[i] = (float)i;
  cudaMemcpy(a_d, a_h, size, cudaMemcpyHostToDevice);
  // Do calculation on device:
  int block_size = 4;
  int n_blocks = N/block_size + (N%block_size == 0 ? 0:1);
  square_array <<< n_blocks, block_size >>> (a_d, N);
  // Retrieve result from device and store it in host array
  cudaMemcpy(a_h, a_d, sizeof(float)*N, cudaMemcpyDeviceToHost);
  // Print results
  for (int i=0; i<N; i++) printf("%d %f\n", i, a_h[i]);
  // Cleanup
  free(a_h); cudaFree(a_d);
}
Anuncios

Curso intensivo de LESS CSS

less-css-logo

Primero que todo ¿que es LESS CSS? Esta pregunta es muy común en estos momentos, ya que LESS apenas está empezando a entrar en furor.

LESS CSS es una ampliación a las famosas hojas de estilo CSS, pero a diferencia de estás funciona como un lenguaje de programación, permitiendo el uso de variables, funciones, operaciones aritmeticas, entre otras, para acelerar y enriquecer los estilos en un sitio web.

LESS CSS no reemplaza a CSS, de hecho el resultado final es una hoja de estilos css completamente funcional y compatible, simplemente ofrece mejoras en el área de desarrollo, por lo que usarlo se vuelve recomendable si quieres ahorrar tiempo de desarrollo, utilizar caracteristicas avanzadas de estilos y para ahorrarte trabajo —de allí su nombre: less css (menos css).

Pueden ver un curso intensivo en este link: http://www.youtube.com/watch?v=BviFQzNhl4E&list=PLEtcGQaT56chi4GvoaXC