Vektorisointi (rinnakkaislaskenta)

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 21. kesäkuuta 2018 tarkistetusta versiosta . vahvistus vaatii 1 muokkauksen .

Vektorisointi ( rinnakkaislaskennassa ) on eräänlainen ohjelmien rinnakkaistoiminto , jossa yksisäikeisiä sovelluksia, jotka suorittavat yhden toiminnon kerrallaan, muutetaan suorittamaan useita samantyyppisiä operaatioita samanaikaisesti.

Operandiparia prosessoivat skalaarioperaatiot korvataan taulukoiden (vektorien) operaatioilla, jotka käsittelevät useita vektorin elementtejä kulloinkin.

Vektoritietojen käsittelyä käytetään sekä kuluttajatietokoneissa että supertietokoneissa .

Automaattinen vektorointi on tärkeä tietotekniikan tutkimusalue, jonka tavoitteena on löytää menetelmiä, joiden avulla kääntäjä voisi muuntaa skalaariohjelmat automaattisesti vektoriohjelmiksi.

Esimerkki

Esitetään ohjelmafragmentti, joka kertoo elementtikohtaisesti kaksi luvuista koostuvaa taulukkoa:

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

Tämä silmukka voidaan vektoroida seuraavasti:

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

Toisessa fragmentissa merkintä C[i:i+3]tarkoittaa 4 elementin vektoria - alkaen C[i]- mukaan C[i+3]lukien, ja alla *ymmärretään vektorien elementtikohtaisen kertolasku. Tämän esimerkin vektoriprosessori pystyy suorittamaan 4 skalaarioperaatiota yhdellä vektorikäskyllä ​​ajassa, joka on lähellä skalaarioperaation suorittamista. Siten vektorioperaatioita tarvitaan 4 kertaa vähemmän ja ohjelma suoritetaan nopeammin.

Vektorilaajennukset

Vektorioperaatioita voidaan lisätä skalaariprosessoreihin, jolloin niitä kutsutaan vektorikäskylaajennuksiksi. Esimerkkejä: MMX , SSE , SSE2 , AltiVec .

Muistiinpanot