Vektorizálás (párhuzamos számítástechnika)

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2018. június 21-én felülvizsgált verziótól ; az ellenőrzéshez 1 szerkesztés szükséges .

A vektorizálás ( párhuzamos számításban ) a programpárhuzamosítás egy olyan típusa , amelyben az egyszálú, egyszerre egy műveletet végrehajtó alkalmazásokat úgy módosítják, hogy egyidejűleg több azonos típusú műveletet hajtsanak végre.

Az operanduspárt feldolgozó skaláris műveleteket felváltják a tömbök (vektorok) műveletei, amelyek egy adott időpontban a vektor több elemét dolgozzák fel.

A vektoros adatfeldolgozást fogyasztói számítógépekben és szuperszámítógépekben egyaránt alkalmazzák .

Az automatikus vektorizálás a számítástechnika egyik fontos kutatási területe, amelynek célja olyan módszerek megtalálása, amelyek lehetővé teszik a fordító számára, hogy automatikusan konvertálja a skaláris programokat vektoros programokká.

Példa

Egy programrészlet látható, amely elemenként megszoroz két számokból álló tömböt:

for ( i = 0 ; i < 1024 ; i ++ ) C [ i ] = A [ i ] * B [ i ];

Ez a hurok a következőképpen vektorizálható:

for ( i = 0 ; i < 1024 ; i + = 4 ) C [ i : i + 3 ] = A [ i : i + 3 ] * B [ i : i + 3 ];

A második töredékben a bejegyzés C[i:i+3]4 elemből álló vektort jelent - től C[i]- C[i+3]ig, alatta *pedig a vektorok elemenkénti szorzásának műveletét értjük. Ebben a példában a vektorprocesszor 4 skaláris műveletet tud végrehajtani egy vektorutasítással egy skaláris művelet végrehajtásához közeli idő alatt. Így 4-szer kevesebb vektorműveletre lesz szükség, és a program gyorsabban lefut.

Vektor kiterjesztések

A skaláris processzorokhoz vektorműveletek adhatók, majd ezeket vektorutasítás-kiterjesztéseknek nevezzük. Példák: MMX , SSE , SSE2 , AltiVec .

Jegyzetek