Halide (lenguaje de programación) - Halide (programming language)

Haluro
Paradigma funcional , paralelo
Diseñada por Jonathan Ragan-Kelley y Andrew Adams
Desarrollador MIT , (con ayuda de Stanford , Google y Adobe )
Apareció por primera vez 2012
Disciplina de mecanografía estático
Lenguaje de implementación C ++
SO Mac OS, distribuciones principales de Linux, Windows
Sitio web http://halide-lang.org/

Halide es un lenguaje de programación de computadoras diseñado para escribir código de procesamiento de imágenes digitales que aprovecha la ubicación de la memoria , el cálculo vectorizado y las CPU y GPU de múltiples núcleos . Halide se implementa como un lenguaje específico de dominio interno (DSL) en C ++ .

Idioma

La principal innovación que aporta Halide es la separación del algoritmo que se está implementando de su programa de ejecución , es decir, el código que especifica la anidación de bucles , la paralelización , el desenrollado de bucles y la instrucción vectorial . Estos dos generalmente están intercalados y experimentar con el cambio de horario requiere que el programador vuelva a escribir grandes porciones del algoritmo con cada cambio. Con Halide, cambiar la programación no requiere ningún cambio en el algoritmo y esto permite al programador experimentar con la programación y encontrar la más eficiente.

Código fuente de muestra

La siguiente función define y establece el horario para un filtro de caja de 3 × 3 definido como una serie de dos pases de 3 × 1:

Func blur_3x3(Func input) {
  Func blur_x, blur_y;
  Var x, y, xi, yi;

  // The algorithm - no storage or order
  blur_x(x, y) = (input(x-1, y) + input(x, y) + input(x+1, y))/3;
  blur_y(x, y) = (blur_x(x, y-1) + blur_x(x, y) + blur_x(x, y+1))/3;

  // The schedule - defines order, locality; implies storage
  blur_y.tile(x, y, xi, yi, 256, 32)
        .vectorize(xi, 8).parallel(y);
  blur_x.compute_at(blur_y, x).vectorize(x, 8);

  return blur_y;
}

Usar

Google usó Halide y TensorFlow para su Pixel 2 Pixel Visual Core . Adobe Photoshop también utiliza Halide. Tanto Google como Adobe han estado involucrados en la investigación de Halide.

Ver también

Referencias

enlaces externos