Halide (linguagem de programação) - Halide (programming language)
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.