SPMD

С Википедије, слободне енциклопедије

У рачунарству, SPMD (један програм, више података (енгл. single program, multiple data)) је техника која се користи да би се постигао паралелизам; то је подкатегорија MIMD-а. Задаци су подељени и покренути истовремено на више процесора са различитим улазом како би брже добили резултате. SPMD је најчешћи стил паралелног програмирања.[1] То је такође предуслов за истраживање појмова као што су активне поруке и расподељена општа меморија.

Флинова подела
  Једноструке инструкције Вишеструке инструкције
Једноструки подаци SISD MISD
Вишеструки подаци SIMD MIMD

SPMD насупрот SIMD[уреди | уреди извор]

У SPMD, више аутономних процесора истовремено извршава исти програм на независним тачкама, пре него у енгл. lockstep-у који SIMD намеће различитим подацима. Са SPMD-ом, задаци се могу извршити на процесоримаопште намене; SIMD захтева векторске процесоре да би манипулисао токовима података. Имајте на уму да ово двоје нису узајамно искључиви.

Расподељена меморија[уреди | уреди извор]

SPMD обично се односи на програмирања порука на расподељеној меморији рачунарске архитектуре. Расподељена меморија рачунара се састоји од колекције независних рачунара, називаји се чворовима. Сваки чвор почиње свој програм и комуницира са другим чворовима слањем и примањем порука, позивајући рутину слање/примање за ту намену. Синхронизација препрека може такође бити имплеметнирана порукама. Поруке се могу слати низом механизама комуникације, као што су TCP/IP преко Етернета, или специјализованим брзим водовима као што су Myrinet и суперкомпијутерски водови. Серијски делови програма се спроводе идентичним рачунањем на свим чворовима, пре него израчунавањем резултата на једном чвору и слање другим чворовима.

Данас, стандардним интерфејсом програмер је изолован из детаља преношења порука, као што су PVM и MPI.

Расподељена меморија је стил програмирања који се користи на паралелним суперрачунарима из домаћег Beowulf cluster с до највећих кластера на Teragridу.

Дељена меморија[уреди | уреди извор]

На машини са дељеном меморијом (рачунар са неколико Процесора који приступају истом мемоијском простору), порука може бити послата наношењем њеног садржаја у дељену меморију. Ово је често најефикаснији начин да се програмира дељена меморија рачунара са великим бројем процесора, посебно на NUMA машинама, где је меморија локална на процесорима и приступ меморије другог процесора траје дуже. SPMD на машини са дељеном меморијом је обично имплементиран стандардим (енгл. heavyweight) процесима.

За разлику од SPMD, дељена меморија мултипроцесирања, такође се зове SMP, представља програмера са заједничким меморијским простором и могућности паралелног извршавања тако што програм узима различите путање на различитим процесорима. Програм почиње извршавање на једном процесору и извршење дели у паралелном региону, које почиње када се паралелне директиве сусретну. У паралелном региону, процесори извршавају један програм на различитим подацима. Типичан пример је паралелна DO петља, где различити процесори раде на посебним деловима низова укључених у петљи. На крају петље, извршење се синхронизује, само један процесор наставља, а други чекају. Садашњи стандардни интерфејс за мултипроцесорску дељену меморију је OpenMP. Обично је имплементиран лаким процесима, који се називају нити.

Комбинација нивоа паралелизма[уреди | уреди извор]

Тренутни рачунари омогућавају искоришћавање многих паралелних режима истовремено за максимални ефекат. Расподељена општа меморија користи MPI који може да ради на прикупљању чворова. Сваки чвор може бити дељена меморија рачунара и извршава се паралелно на више процесора који користе OpenMP. У оквиру сваког процесора, SIMD векторске инструкције (обично аутоматски генерисане од компајлера) и суперскаларне инструкције извршења (обично барата транспарентно од стране самог процесора), као што је pipelining и коришћење вишеструких паралелних функционалних јединица, користе се за максималну брзину процесора.

Историја[уреди | уреди извор]

SPMD је први предложио 1983. енгл. Michel Auguin (University of Nice Sophia-Antipolis) и енгл. François Larbey (Thomson/Sintra) у паралелном рачунару OPSILA.[2] и даље, 1984. од Frederica Darema на IBM-у за високо паралелне машине попут RP3 (IBM-ов истраживачки прототип паралелног процесора), у необјављеном IBM-ом допису.[3] Касних 1980их, било је много расподељених рачунара са власничким message passing библиотекама. Први SPMD стандард био је PVM. Тренутни де факто стандард је MPI.

Cray-ове паралелне директиве су биле директан претходник за OpenMP.

Референце[уреди | уреди извор]

  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.

Види још[уреди | уреди извор]

Спољашње везе[уреди | уреди извор]