Vektorisering (parallel computing)

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 21. juni 2018; verifikation kræver 1 redigering .

Vektorisering (i parallel computing ) er en type programparallelisering , hvor enkelttrådede applikationer, der udfører en operation ad gangen, modificeres til at udføre flere operationer af samme type på samme tid.

Skalære operationer, der behandler et par operander, erstattes af operationer på arrays (vektorer), der behandler flere elementer i vektoren på et givet tidspunkt.

Vektordatabehandling bruges både i forbrugercomputere og supercomputere .

Automatisk vektorisering er et vigtigt forskningsområde inden for datalogi, hvis mål er at finde metoder, der gør det muligt for compileren automatisk at konvertere skalarprogrammer til vektorprogrammer.

Eksempel

Der vises et programfragment, der elementmæssigt multiplicerer to arrays bestående af tal:

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

Denne løkke kan vektoriseres sådan:

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

I det andet fragment betyder indgangen C[i:i+3]en vektor af 4 elementer - fra C[i]til C[i+3]inklusive, og under *forstås driften af ​​element-vis multiplikation af vektorer. Vektorprocessoren i dette eksempel vil være i stand til at udføre 4 skalaroperationer med én vektorinstruktion i en tid tæt på at udføre en skalaroperation. Således vil vektoroperationer kræves 4 gange mindre, og programmet vil blive udført hurtigere.

Vektorudvidelser

Vektoroperationer kan tilføjes til skalære processorer, så kaldes de vektorinstruktionsudvidelser. Eksempler: MMX , SSE , SSE2 , AltiVec .

Noter