Partitionerat globalt adressutrymme

Inom datavetenskap är partitionerat globalt adressutrymme ( PGAS ) ett parallellt programmeringsmodellparadigm . PGAS kännetecknas av kommunikationsoperationer som involverar en global abstraktion av minnesadressutrymme som är logiskt uppdelad, där en del är lokal för varje process, tråd eller bearbetningselement . Det nya med PGAS är att delarna av det delade minnesutrymmet kan ha en affinitet för en viss process, och därigenom utnyttja referenslokaliteten för att förbättra prestandan. En PGAS-minnesmodell finns i olika parallella programmeringsspråk och bibliotek, inklusive: Coarray Fortran , Unified Parallel C , Split-C , Fortress , Chapel , X10 , UPC++ , Coarray C++ , Global Arrays , DASH och SHMEM . PGAS-paradigmet är nu en integrerad del av Fortran -språket, från och med Fortran 2008 som standardiserade koarrayer.

De olika språken och biblioteken som erbjuder en PGAS-minnesmodell skiljer sig mycket åt i andra detaljer, såsom basprogrammeringsspråket och de mekanismer som används för att uttrycka parallellism. Många PGAS-system kombinerar fördelarna med en SPMD- programmeringsstil för distribuerade minnessystem (som används av MPI ) med datareferenssemantiken för delade minnessystem. I motsats till meddelandeöverföring erbjuder PGAS-programmeringsmodeller ofta ensidiga kommunikationsoperationer såsom Remote Memory Access (RMA), varvid ett bearbetningselement kan komma direkt åt minnet med affinitet till en annan (potentiellt fjärrstyrd) process, utan explicit semantisk inblandning av passiv målprocess. PGAS erbjuder mer effektivitet och skalbarhet än traditionella metoder för delat minne med ett platt adressutrymme, eftersom hårdvaruspecifik datalokalitet explicit kan exponeras i den semantiska partitioneringen av adressutrymmet.

En variant av PGAS-paradigmet, asynkront partitionerat globalt adressutrymme ( APGAS ) utökar programmeringsmodellen med faciliteter för både lokal och fjärrstyrd asynkron uppgiftsskapande. Två programmeringsspråk som använder denna modell är Chapel och X10 .

Exempel

Se även

externa länkar