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
- Coarray Fortran är nu en integrerad del av språket från och med Fortran 2008
- Unified Parallel C en explicit parallell SPMD-dialekt av programmeringsspråket ISO C
- Chapel ett parallellspråk som ursprungligen utvecklades av Cray under DARPA HPCS-projektet
- UPC++ , Ett C++ -mallbibliotek som tillhandahåller PGAS-kommunikationsoperationer utformade för att stödja högpresterande beräkningar på exascale superdatorer, inklusive Remote Memory Access (RMA) och Remote Procedure Call (RPC)
- Coarray C++ ett C++- bibliotek utvecklat av Cray, vilket ger en nära analog till Fortran-koarrayfunktionalitet
- Global Arrays ett bibliotek som stöder parallell vetenskaplig beräkning på distribuerade arrayer
- DASH ett C++ -mallbibliotek för distribuerade datastrukturer med stöd för hierarkisk lokalitet
- SHMEM en familj av bibliotek som stöder parallell vetenskaplig beräkning på distribuerade arrayer
- X10 ett parallellspråk utvecklat av IBM under DARPA HPCS-projektet
- Fortress ett parallellspråk utvecklat av Sun Microsystems under DARPA HPCS-projektet
- Titanium en uttryckligen parallell dialekt av Java utvecklad vid UC Berkeley för att stödja vetenskaplig högpresterande datoranvändning på storskaliga multiprocessorer
- Split-C en parallell förlängning av programmeringsspråket C som stöder effektiv åtkomst till ett globalt adressutrymme
- Adapteva Epiphany-arkitekturen är ett många kärnnätverk på en chipprocessor med ett minne som kan adresseras mellan kärnorna.
Se även
- Samtidighet
- Icke-blockerande synkronisering
- Icke-enhetlig minnesåtkomst (NUMA)
- Cache-minnesarkitektur (COMA)
externa länkar
- Officiell hemsida
- En introduktion till den partitionerade globala adressutrymmesmodellen
- Programmering i den partitionerade globala adressutrymmesmodellen arkiverad 2010-06-12 på Wayback Machine (2003)
- GASNet Communication System - tillhandahåller en mjukvaruinfrastruktur för PGAS-språk över högpresterande nätverk