Halide (linguagem de programação) - Halide (programming language)

Halide
Paradigma funcional , paralelo
Projetado por Jonathan Ragan-Kelley e Andrew Adams
Desenvolvedor MIT , (com ajuda de Stanford , Google e Adobe )
Apareceu pela primeira vez 2012
Disciplina de digitação estático
Linguagem de implementação C ++
SO Mac OS, distribuições principais do Linux, Windows
Local na rede Internet http://halide-lang.org/

Halide é uma linguagem de programação de computador projetada para escrever código de processamento de imagem digital que aproveita a localização da memória , computação vetorial e CPUs e GPUs multi-core . Halide é implementado como uma linguagem de domínio específico (DSL) interna em C ++ .

Língua

A principal inovação que Halide traz é a separação do algoritmo que está sendo implementado de seu cronograma de execução , ou seja, código que especifica o aninhamento do loop , paralelização , desenrolamento do loop e instrução vetorial . Esses dois são geralmente intercalados e experimentar a alteração do cronograma exige que o programador reescreva grandes partes do algoritmo a cada alteração. Com o Halide, a alteração da programação não requer nenhuma mudança no algoritmo e isso permite que o programador faça experiências com a programação e encontre o mais eficiente.

Amostra de código-fonte

A função a seguir define e define o cronograma para um filtro de caixa 3 × 3 definido como uma série de duas passagens 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

O Google usou Halide e TensorFlow para seu Pixel 2 Pixel Visual Core . Adobe Photoshop também usa Halide. Tanto o Google quanto a Adobe estão envolvidos na pesquisa da Halide.

Veja também

Referências

links externos