Julia - co to jest wektoryzacja?

0

Witam!

Chciałbym zacząć naukę od języka Julia. Ale w kontekście tegoż języka pada pojęcie wektoryzacji (ang. vectorization). Ktoś może wyjaśnić jak dla idioty ?

3

Jest to na tyle szerokie pojęcie że musisz naipsać coś więcej o tym gdzie ci ta wektoryzacja jest potrzebna. Wektoryzacja to jest generalnie zamiana czegoś na element przestrzeni wektorowej ;]
Weźmy na przykład tekst. Załóżmy że zliczyłeś ile razy każde słowo pada w tekście. Jeśli każdemu słowu przypiszesz teraz pewną liczbę, która określa za który wymiar przestrzeni odpowiada to słowo, to możesz ten tekst przedstawić w postaci prostego wektora.
Jeśli tekst to "ala ma kota" a baza przestrzeni to ["ala", "ma", "kota"] to tekst jest wektorem [1,1,1].
Analogicznie tekst "ala ala kota" to [2,0,1]

Voila, dokonaliśmy wektoryzacji ;]

0

Skoro chcesz jak dla idioty to proszę: http://bit.ly/1uNUkts

1

W skrócie: zamiast operować na zmiennych przechowujących pojedynczą wartość, operujesz na zmiennych przechowujących stałą ilość elementów tego samego typu (wektor). Operacja na wektorach jest obsługiwana jako instrukcja na pojedynczych elementach, parach, trójkach, etc w zależności od ilości parametrów.

Załóżmy, że mówimy o OpenCLu. Jest tam typ int4 który jest 4-elementowym wektorem intów. Dostęp do elementów może odbywać się np poprzez odwołań do pól (aliasów) x, y, z i w. Następujące trzy kody są równoważne semantycznie:

int a[4], b[4];
... // inicjalizacja a i b
a[0] += b[0];
a[1] += b[1];
a[2] += b[2];
a[3] += b[3];
int4 a, b;
... // inicjalizacja a i b
a.x += b.x;
a.y += b.y;
a.z += b.z;
a.w += b.w;
int4 a, b;
... // inicjalizacja a i b
a += b;

Sprzęt (CPU/ GPU/ DSP/ whatever) posiada wyspecjalizowane instrukcje które działają na wektorach, np 4- lub 8-elementowych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1