SPMD

S Vikipedije, slobodne enciklopedije

U računarstvu, SPMD (jedan program, više podataka (engl. single program, multiple data)) je tehnika koja se koristi da bi se postigao paralelizam; to je podkategorija MIMD-a. Zadaci su podeljeni i pokrenuti istovremeno na više procesora sa različitim ulazom kako bi brže dobili rezultate. SPMD je najčešći stil paralelnog programiranja.[1] To je takođe preduslov za istraživanje pojmova kao što su aktivne poruke i raspodeljena opšta memorija.

Flinova podela
  Jednostruke instrukcije Višestruke instrukcije
Jednostruki podaci SISD MISD
Višestruki podaci SIMD MIMD

SPMD nasuprot SIMD[uredi | uredi izvor]

U SPMD, više autonomnih procesora istovremeno izvršava isti program na nezavisnim tačkama, pre nego u engl. lockstep-u koji SIMD nameće različitim podacima. Sa SPMD-om, zadaci se mogu izvršiti na procesorimaopšte namene; SIMD zahteva vektorske procesore da bi manipulisao tokovima podataka. Imajte na umu da ovo dvoje nisu uzajamno isključivi.

Raspodeljena memorija[uredi | uredi izvor]

SPMD obično se odnosi na programiranja poruka na raspodeljenoj memoriji računarske arhitekture. Raspodeljena memorija računara se sastoji od kolekcije nezavisnih računara, nazivaji se čvorovima. Svaki čvor počinje svoj program i komunicira sa drugim čvorovima slanjem i primanjem poruka, pozivajući rutinu slanje/primanje za tu namenu. Sinhronizacija prepreka može takođe biti implemetnirana porukama. Poruke se mogu slati nizom mehanizama komunikacije, kao što su TCP/IP preko Eterneta, ili specijalizovanim brzim vodovima kao što su Myrinet i superkompijuterski vodovi. Serijski delovi programa se sprovode identičnim računanjem na svim čvorovima, pre nego izračunavanjem rezultata na jednom čvoru i slanje drugim čvorovima.

Danas, standardnim interfejsom programer je izolovan iz detalja prenošenja poruka, kao što su PVM i MPI.

Raspodeljena memorija je stil programiranja koji se koristi na paralelnim superračunarima iz domaćeg Beowulf cluster s do najvećih klastera na Teragridu.

Deljena memorija[uredi | uredi izvor]

Na mašini sa deljenom memorijom (računar sa nekoliko Procesora koji pristupaju istom memoijskom prostoru), poruka može biti poslata nanošenjem njenog sadržaja u deljenu memoriju. Ovo je često najefikasniji način da se programira deljena memorija računara sa velikim brojem procesora, posebno na NUMA mašinama, gde je memorija lokalna na procesorima i pristup memorije drugog procesora traje duže. SPMD na mašini sa deljenom memorijom je obično implementiran standardim (engl. heavyweight) procesima.

Za razliku od SPMD, deljena memorija multiprocesiranja, takođe se zove SMP, predstavlja programera sa zajedničkim memorijskim prostorom i mogućnosti paralelnog izvršavanja tako što program uzima različite putanje na različitim procesorima. Program počinje izvršavanje na jednom procesoru i izvršenje deli u paralelnom regionu, koje počinje kada se paralelne direktive susretnu. U paralelnom regionu, procesori izvršavaju jedan program na različitim podacima. Tipičan primer je paralelna DO petlja, gde različiti procesori rade na posebnim delovima nizova uključenih u petlji. Na kraju petlje, izvršenje se sinhronizuje, samo jedan procesor nastavlja, a drugi čekaju. Sadašnji standardni interfejs za multiprocesorsku deljenu memoriju je OpenMP. Obično je implementiran lakim procesima, koji se nazivaju niti.

Kombinacija nivoa paralelizma[uredi | uredi izvor]

Trenutni računari omogućavaju iskorišćavanje mnogih paralelnih režima istovremeno za maksimalni efekat. Raspodeljena opšta memorija koristi MPI koji može da radi na prikupljanju čvorova. Svaki čvor može biti deljena memorija računara i izvršava se paralelno na više procesora koji koriste OpenMP. U okviru svakog procesora, SIMD vektorske instrukcije (obično automatski generisane od kompajlera) i superskalarne instrukcije izvršenja (obično barata transparentno od strane samog procesora), kao što je pipelining i korišćenje višestrukih paralelnih funkcionalnih jedinica, koriste se za maksimalnu brzinu procesora.

Istorija[uredi | uredi izvor]

SPMD je prvi predložio 1983. engl. Michel Auguin (University of Nice Sophia-Antipolis) i engl. François Larbey (Thomson/Sintra) u paralelnom računaru OPSILA.[2] i dalje, 1984. od Frederica Darema na IBM-u za visoko paralelne mašine poput RP3 (IBM-ov istraživački prototip paralelnog procesora), u neobjavljenom IBM-om dopisu.[3] Kasnih 1980ih, bilo je mnogo raspodeljenih računara sa vlasničkim message passing bibliotekama. Prvi SPMD standard bio je PVM. Trenutni de fakto standard je MPI.

Cray-ove paralelne direktive su bile direktan prethodnik za OpenMP.

Reference[uredi | uredi izvor]

  1. ^ single program multiple data
  2. ^ M. Auguin, F. Larbey, OPSILA : an advanced SIMD for numerical analysis and signal processing, in Microcomputers : developments in industry, business, and education / Ninth EUROMICRO Symposium on Microprocessing and Microprogramming, pp 311-318 Madrid, September 13-16, 1983
  3. ^ F. Darema, SPMD model: past, present and future, Recent Advances in Parallel Virtual Machine and Message Passing Interface: 8th European PVM/MPI Users' Group Meeting, Santorini/Thera, Greece, September 23–26, 2001. Lecture Notes in Computer Science 2131, p. 1, 2001.

Vidi još[uredi | uredi izvor]

Spoljašnje veze[uredi | uredi izvor]