Halogenură (limbaj de programare) - Halide (programming language)

Halogenură
Paradigmă funcțional , paralel
Proiectat de Jonathan Ragan-Kelley și Andrew Adams
Dezvoltator MIT , (cu ajutorul Stanford , Google și Adobe )
A apărut prima dată 2012
Disciplina de tastare static
Limbajul de implementare C ++
OS Mac OS, distribuții Linux principale, Windows
Site-ul web http://halide-lang.org/

Halide este un limbaj de programare pentru computer conceput pentru scrierea codului de procesare digitală a imaginilor care profită de localitatea memoriei , calcule vectorizate și procesoare și GPU multi-core . Halogenul este implementat ca limbaj intern specific domeniului (DSL) în C ++ .

Limba

Principala inovație pe care o aduce Halide este separarea algoritmului implementat de programul său de execuție , adică codul care specifică cuibărirea buclei , paralelizarea , derularea buclei și instrucțiunile vectoriale . Aceste două sunt de obicei intercalate împreună și experimentarea cu schimbarea programului necesită ca programatorul să rescrie porțiuni mari ale algoritmului la fiecare modificare. Cu Halide, schimbarea programului nu necesită modificări ale algoritmului și acest lucru permite programatorului să experimenteze planificarea și găsirea celui mai eficient.

Exemplu de cod sursă

Următoarea funcție definește și setează programul pentru un filtru de cutie 3 × 3 definit ca o serie de două treceri 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;
}

Utilizare

Google a folosit Halide și TensorFlow pentru Pixel 2 Pixel Visual Core . Adobe Photoshop folosește și Halide. Atât Google, cât și Adobe au fost implicați în cercetarea halogenurilor.

Vezi si

Referințe

linkuri externe