119:, PGAS programming models frequently offer one-sided communication operations such as Remote Memory Access (RMA), whereby one processing element may directly access memory with affinity to a different (potentially remote) process, without explicit semantic involvement by the passive target process. PGAS offers more efficiency and scalability than traditional shared-memory approaches with a flat address space, because hardware-specific
1405:
106:
The various languages and libraries offering a PGAS memory model differ widely in other details, such as the base programming language and the mechanisms used to express parallelism. Many PGAS systems combine the advantages of a
731:
821:
673:
134:) augments the programming model with facilities for both local and remote asynchronous task creation. Two programming languages that use this model are
276:
60:
586:. Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA’05) (2005).
802:
1069:
1092:
257:
244:
177:
981:
51:
in order to improve performance. A PGAS memory model is featured in various parallel programming languages and libraries, including:
1087:
1064:
595:
Katherine Yelick, Paul
Hilfinger, Susan Graham, Dan Bonachea, Jimmy Su, Amir Kamil, Kaushik Datta, Phillip Colella, and Tong Wen,
666:
1059:
874:
357:
249:
64:
608:
Katherine Yelick, Susan Graham, Paul
Hilfinger, Dan Bonachea, Jimmy Su, Amir Kamil, Kaushik Datta, Phillip Colella, Tong Wen,
1435:
1166:
1029:
327:
311:
1390:
1224:
842:
762:
527:
John Bachan, Scott B. Baden, Steven
Hofmeyr, Mathias Jacquelin, Amir Kamil, Dan Bonachea, Paul H. Hargrove, Hadia Ahmed. "
169:
135:
68:
316:
1430:
1409:
1355:
815:
659:
266:
1334:
1129:
1014:
976:
826:
716:
270:
236:
190:
139:
72:
32:
204:
80:
1350:
1329:
1274:
1161:
1151:
1124:
986:
321:
112:
1304:
930:
869:
782:
625:
Culler, D. E., Dusseau, A., Goldstein, S. C., Krishnamurthy, A., Lumetta, S., Von Eicken, T., & Yelick, K.
544:
1219:
1365:
1360:
810:
531:", In 33rd IEEE International Parallel & Distributed Processing Symposium (IPDPS'19), May 20–24, 2019.
1104:
1036:
940:
832:
787:
629:. In Supercomputing'93: Proceedings of the 1993 ACM/IEEE conference on Supercomputing (pp. 262-273). IEEE.
280:
164:
894:
1196:
1156:
1109:
1099:
837:
757:
696:
547:. Proceedings of the 7th International Conference on PGAS Programming Models. pp. 54–66. PGAS’13 (2013),
198:
48:
1136:
1024:
1019:
1009:
996:
792:
599:, The International Journal Of High Performance Computing Applications, August 1, 2007, 21(3):266-290
388:
1299:
1254:
1080:
1075:
1054:
920:
1324:
1173:
1146:
971:
935:
925:
726:
706:
701:
682:
515:
194:
160:
56:
40:
884:
39:
abstraction that is logically partitioned, where a portion is local to each process, thread, or
1370:
1046:
1004:
899:
298:
294:
1380:
1179:
1114:
961:
777:
772:
767:
736:
253:
20:
1244:
1184:
1119:
966:
956:
889:
721:
711:
558:
Global arrays: A nonuniform memory access programming model for high-performance computers
405:"An Evaluation of Global Address Space Languages: Co-Array Fortran and Unified Parallel C"
361:
151:
116:
52:
879:
511:
1375:
1191:
848:
741:
404:
227:
template library for distributed data structures with support for hierarchical locality
370:- provides a software infrastructure for PGAS languages over high-performance networks
1424:
1264:
1141:
214:
120:
84:
44:
36:
354:
233:
a family of libraries supporting parallel scientific computing on distributed arrays
211:
library developed by Cray, providing a close analog to
Fortran coarray functionality
864:
642:
Proceedings of
Languages and Compilers for Parallel Computing (LCPC'18). Oct 2018.
613:
155:
100:
417:"An Introduction to the Partitioned Global Address Space (PGAS) Programming Model"
482:
189:
template library that provides PGAS communication operations designed to support
35:
paradigm. PGAS is typified by communication operations involving a global memory
1385:
392:
570:
115:) with the data referencing semantics of shared memory systems. In contrast to
626:
596:
529:
UPC++: A High-Performance
Communication Framework for Asynchronous Computation
123:
can be explicitly exposed in the semantic partitioning of the address space.
1259:
1234:
609:
597:"Parallel Languages and Compilers: Perspective from the Titanium Experience"
571:
DASH: Data
Structures and Algorithms with Support for Hierarchical Locality
640:
GASNet-EX: A High-Performance, Portable
Communication Library for Exascale
583:
556:
Nieplocha, Jaroslaw; Harrison, Robert J.; Littlefield, Richard J. (1996).
481:
Tarek El-Ghazawi, William
Carlson, Thomas Sterling, and Katherine Yelick.
441:
1309:
1289:
1214:
291:
287:
470:
466:
428:
416:
349:
217:
a library supporting parallel scientific computing on distributed arrays
47:
space may have an affinity for a particular process, thereby exploiting
1314:
1294:
1269:
904:
96:
1284:
1279:
651:
582:
P. Charles, C. Grothoff, V. Saraswat, C. Donawa, A. Kielstra, et al.
557:
455:
Coarray support in gfortran as specified in the
Fortran 2008 standard
469:
17th Annual International Conference on Supercomputing (ICS), 2003.
498:, Lawrence Berkeley National Lab Tech Report LBNL-6623E, Nov 2013.
391:, Encyclopedia of Parallel Computing, Springer, (2011): 1539-1545.
262:
224:
208:
186:
643:
639:
532:
528:
499:
495:
465:
W. Chen, D. Bonachea, J. Duell, P. Husbands, C. Iancu, K. Yelick.
230:
92:
111:
programming style for distributed memory systems (as employed by
1319:
1249:
1239:
584:
X10: an object-oriented approach to nonuniform cluster computing
173:
108:
655:
220:
88:
1229:
1206:
569:
K. Furlinger, C. Glass, A. Knupfer, J. Tao, D. Hunich, et al.
454:
240:
350:
An Introduction to the Partitioned Global Address Space Model
616:, edited by David Padua, (Springer: 2011) Pages: 2049-2055
367:
355:
Programming in the Partitioned Global Address Space Model
197:
supercomputers, including Remote Memory Access (RMA) and
283:
that supports efficient access to a global address space
342:
182:
76:
16:
Parallel programming model paradigm in computer science
403:
Cristian Coarfă; Yuri Dotsenko; John Mellor-Crummey,
95:. The PGAS paradigm is now an integrated part of the
389:"PGAS (Partitioned Global Address Space) Languages."
1343:
1205:
1045:
995:
949:
913:
857:
801:
750:
689:
518:, edited by Pavan Balaji, MIT Press, November 2015.
467:
A Performance Analysis of the Berkeley UPC Compiler
43:. The novelty of PGAS is that the portions of the
560:. The Journal of Supercomputing. 10 (2): 169–189.
573:. Euro-Par Parallel Processing Workshops (2014).
444:. SIGPLAN Fortran Forum 29(2), 10–27 (July 2010)
431:. ACM SIGPLAN Fortran Forum 17(2), 1–31 (1998).
269:developed at UC Berkeley to support scientific
163:an explicitly parallel SPMD dialect of the ISO
667:
496:UPC Language and Library Specifications, v1.3
393:https://doi.org/10.1007/978-0-387-09766-4_210
154:now an integrated part of the language as of
128:asynchronous partitioned global address space
8:
172:a parallel language originally developed by
674:
660:
652:
483:UPC: distributed shared memory programming
516:Programming Models for Parallel Computing
429:Co-array Fortran for parallel programming
380:
471:https://doi.org/10.1145/782814.782825
442:Coarrays in the Next Fortran Standard
7:
614:Encyclopedia of Parallel Computing
265:an explicitly parallel dialect of
14:
252:a parallel language developed by
239:a parallel language developed by
1404:
1403:
126:A variant of the PGAS paradigm,
25:partitioned global address space
875:Analysis of parallel algorithms
644:https://doi.org/10.25344/S4QP4W
627:Parallel programming in Split-C
533:https://doi.org/10.25344/S4V88H
500:https://doi.org/10.2172/1134233
485:. John Wiley & Sons, 2005.
328:Cache-only memory architecture
273:on large-scale multiprocessors
1:
822:Simultaneous and heterogenous
103:which standardized coarrays.
1410:Category: Parallel computing
317:Non-blocking synchronization
279:a parallel extension of the
368:GASNet Communication System
290:Epiphany architecture is a
1452:
717:High-performance computing
301:addressable between cores.
271:high-performance computing
191:high-performance computing
33:parallel programming model
1399:
1351:Automatic parallelization
987:Application checkpointing
510:Bradford L. Chamberlain,
427:Numrich, R.W., Reid, J.,
322:Non-uniform memory access
1366:Embarrassingly parallel
1361:Deterministic algorithm
638:Bonachea D, Hargrove P.
1081:Associative processing
1037:Non-blocking algorithm
843:Clustered multi-thread
281:C programming language
165:C programming language
1436:Programming paradigms
1197:Hardware acceleration
1110:Superscalar processor
1100:Dataflow architecture
697:Distributed computing
199:Remote Procedure Call
49:locality of reference
1076:Pipelined processing
1025:Explicit parallelism
1020:Implicit parallelism
1010:Dataflow programming
1300:Parallel Extensions
1105:Pipelined processor
1431:Parallel computing
1174:Massively parallel
1152:distributed shared
972:Cache invalidation
936:Instruction window
727:Manycore processor
707:Massively parallel
702:Parallel computing
683:Parallel computing
360:2010-06-12 at the
258:DARPA HPCS project
245:DARPA HPCS project
178:DARPA HPCS project
161:Unified Parallel C
57:Unified Parallel C
41:processing element
1418:
1417:
1371:Parallel slowdown
1005:Stream processing
895:Karp–Flatt metric
299:scratchpad memory
295:network on a chip
1443:
1407:
1406:
1381:Software lockout
1180:Computer cluster
1115:Vector processor
1070:Array processing
1055:Flynn's taxonomy
962:Memory coherence
737:Computer network
676:
669:
662:
653:
646:
636:
630:
623:
617:
606:
600:
593:
587:
580:
574:
567:
561:
554:
548:
541:
535:
525:
519:
508:
502:
494:UPC Consortium,
492:
486:
479:
473:
463:
457:
451:
445:
438:
432:
425:
419:
413:
407:
401:
395:
387:Almasi, George.
385:
346:
345:
343:Official website
254:Sun Microsystems
99:language, as of
21:computer science
1451:
1450:
1446:
1445:
1444:
1442:
1441:
1440:
1421:
1420:
1419:
1414:
1395:
1339:
1245:Coarray Fortran
1201:
1185:Beowulf cluster
1041:
991:
982:Synchronization
967:Cache coherence
957:Multiprocessing
945:
909:
890:Cost efficiency
885:Gustafson's law
853:
797:
746:
722:Multiprocessing
712:Cloud computing
685:
680:
650:
649:
637:
633:
624:
620:
607:
603:
594:
590:
581:
577:
568:
564:
555:
551:
543:T. A. Johnson:
542:
538:
526:
522:
509:
505:
493:
489:
480:
476:
464:
460:
452:
448:
439:
435:
426:
422:
414:
410:
402:
398:
386:
382:
377:
362:Wayback Machine
341:
340:
337:
308:
297:processor with
152:Coarray Fortran
148:
117:message passing
53:Coarray Fortran
17:
12:
11:
5:
1449:
1447:
1439:
1438:
1433:
1423:
1422:
1416:
1415:
1413:
1412:
1400:
1397:
1396:
1394:
1393:
1388:
1383:
1378:
1376:Race condition
1373:
1368:
1363:
1358:
1353:
1347:
1345:
1341:
1340:
1338:
1337:
1332:
1327:
1322:
1317:
1312:
1307:
1302:
1297:
1292:
1287:
1282:
1277:
1272:
1267:
1262:
1257:
1252:
1247:
1242:
1237:
1232:
1227:
1222:
1217:
1211:
1209:
1203:
1202:
1200:
1199:
1194:
1189:
1188:
1187:
1177:
1171:
1170:
1169:
1164:
1159:
1154:
1149:
1144:
1134:
1133:
1132:
1127:
1120:Multiprocessor
1117:
1112:
1107:
1102:
1097:
1096:
1095:
1090:
1085:
1084:
1083:
1078:
1073:
1062:
1051:
1049:
1043:
1042:
1040:
1039:
1034:
1033:
1032:
1027:
1022:
1012:
1007:
1001:
999:
993:
992:
990:
989:
984:
979:
974:
969:
964:
959:
953:
951:
947:
946:
944:
943:
938:
933:
928:
923:
917:
915:
911:
910:
908:
907:
902:
897:
892:
887:
882:
877:
872:
867:
861:
859:
855:
854:
852:
851:
849:Hardware scout
846:
840:
835:
830:
824:
819:
813:
807:
805:
803:Multithreading
799:
798:
796:
795:
790:
785:
780:
775:
770:
765:
760:
754:
752:
748:
747:
745:
744:
742:Systolic array
739:
734:
729:
724:
719:
714:
709:
704:
699:
693:
691:
687:
686:
681:
679:
678:
671:
664:
656:
648:
647:
631:
618:
601:
588:
575:
562:
549:
536:
520:
503:
487:
474:
458:
446:
433:
420:
408:
396:
379:
378:
376:
373:
372:
371:
365:
352:
347:
336:
335:External links
333:
332:
331:
325:
319:
314:
307:
304:
303:
302:
284:
274:
260:
247:
234:
228:
218:
212:
202:
180:
167:
158:
147:
144:
15:
13:
10:
9:
6:
4:
3:
2:
1448:
1437:
1434:
1432:
1429:
1428:
1426:
1411:
1402:
1401:
1398:
1392:
1389:
1387:
1384:
1382:
1379:
1377:
1374:
1372:
1369:
1367:
1364:
1362:
1359:
1357:
1354:
1352:
1349:
1348:
1346:
1342:
1336:
1333:
1331:
1328:
1326:
1323:
1321:
1318:
1316:
1313:
1311:
1308:
1306:
1303:
1301:
1298:
1296:
1293:
1291:
1288:
1286:
1283:
1281:
1278:
1276:
1273:
1271:
1268:
1266:
1265:Global Arrays
1263:
1261:
1258:
1256:
1253:
1251:
1248:
1246:
1243:
1241:
1238:
1236:
1233:
1231:
1228:
1226:
1223:
1221:
1218:
1216:
1213:
1212:
1210:
1208:
1204:
1198:
1195:
1193:
1192:Grid computer
1190:
1186:
1183:
1182:
1181:
1178:
1175:
1172:
1168:
1165:
1163:
1160:
1158:
1155:
1153:
1150:
1148:
1145:
1143:
1140:
1139:
1138:
1135:
1131:
1128:
1126:
1123:
1122:
1121:
1118:
1116:
1113:
1111:
1108:
1106:
1103:
1101:
1098:
1094:
1091:
1089:
1086:
1082:
1079:
1077:
1074:
1071:
1068:
1067:
1066:
1063:
1061:
1058:
1057:
1056:
1053:
1052:
1050:
1048:
1044:
1038:
1035:
1031:
1028:
1026:
1023:
1021:
1018:
1017:
1016:
1013:
1011:
1008:
1006:
1003:
1002:
1000:
998:
994:
988:
985:
983:
980:
978:
975:
973:
970:
968:
965:
963:
960:
958:
955:
954:
952:
948:
942:
939:
937:
934:
932:
929:
927:
924:
922:
919:
918:
916:
912:
906:
903:
901:
898:
896:
893:
891:
888:
886:
883:
881:
878:
876:
873:
871:
868:
866:
863:
862:
860:
856:
850:
847:
844:
841:
839:
836:
834:
831:
828:
825:
823:
820:
817:
814:
812:
809:
808:
806:
804:
800:
794:
791:
789:
786:
784:
781:
779:
776:
774:
771:
769:
766:
764:
761:
759:
756:
755:
753:
749:
743:
740:
738:
735:
733:
730:
728:
725:
723:
720:
718:
715:
713:
710:
708:
705:
703:
700:
698:
695:
694:
692:
688:
684:
677:
672:
670:
665:
663:
658:
657:
654:
645:
641:
635:
632:
628:
622:
619:
615:
611:
605:
602:
598:
592:
589:
585:
579:
576:
572:
566:
563:
559:
553:
550:
546:
540:
537:
534:
530:
524:
521:
517:
513:
507:
504:
501:
497:
491:
488:
484:
478:
475:
472:
468:
462:
459:
456:
450:
447:
443:
437:
434:
430:
424:
421:
418:
412:
409:
406:
400:
397:
394:
390:
384:
381:
374:
369:
366:
363:
359:
356:
353:
351:
348:
344:
339:
338:
334:
329:
326:
323:
320:
318:
315:
313:
310:
309:
305:
300:
296:
293:
289:
285:
282:
278:
275:
272:
268:
264:
261:
259:
255:
251:
248:
246:
242:
238:
235:
232:
229:
226:
222:
219:
216:
215:Global Arrays
213:
210:
206:
203:
200:
196:
192:
188:
184:
181:
179:
175:
171:
168:
166:
162:
159:
157:
153:
150:
149:
145:
143:
141:
137:
133:
129:
124:
122:
121:data locality
118:
114:
110:
104:
102:
98:
94:
90:
86:
85:Global Arrays
82:
78:
74:
70:
66:
62:
58:
54:
50:
46:
45:shared memory
42:
38:
37:address space
34:
30:
26:
22:
950:Coordination
880:Amdahl's law
816:Simultaneous
634:
621:
604:
591:
578:
565:
552:
539:
523:
506:
490:
477:
461:
449:
436:
423:
411:
399:
383:
156:Fortran 2008
131:
127:
125:
105:
101:Fortran 2008
28:
24:
18:
1386:Scalability
1147:distributed
1030:Concurrency
997:Programming
838:Cooperative
827:Speculative
763:Instruction
545:Coarray C++
415:Tim Stitt,
312:Concurrency
205:Coarray C++
81:Coarray C++
1425:Categories
1391:Starvation
1130:asymmetric
865:PRAM model
833:Preemptive
610:"Titanium"
453:GCC wiki,
375:References
256:under the
243:under the
176:under the
1125:symmetric
870:PEM model
440:J. Reid:
1356:Deadlock
1344:Problems
1310:pthreads
1290:OpenHMPP
1215:Ateji PX
1176:computer
1047:Hardware
914:Elements
900:Slowdown
811:Temporal
793:Pipeline
358:Archived
306:See also
292:manycore
288:Adapteva
263:Titanium
250:Fortress
195:exascale
146:Examples
65:Fortress
1315:RaftLib
1295:OpenACC
1270:GPUOpen
1260:C++ AMP
1235:Charm++
977:Barrier
921:Process
905:Speedup
690:General
277:Split-C
97:Fortran
61:Split-C
31:) is a
1408:
1285:OpenCL
1280:OpenMP
1225:Chapel
1142:shared
1137:Memory
1072:(SIMT)
1015:Models
926:Thread
858:Theory
829:(SpMT)
783:Memory
768:Thread
751:Levels
512:Chapel
364:(2003)
330:(COMA)
324:(NUMA)
170:Chapel
136:Chapel
69:Chapel
1255:Dryad
1220:Boost
941:Array
931:Fiber
845:(CMT)
818:(SMT)
732:GPGPU
231:SHMEM
201:(RPC)
183:UPC++
132:APGAS
93:SHMEM
77:UPC++
1320:ROCm
1250:CUDA
1240:Cilk
1207:APIs
1167:COMA
1162:NUMA
1093:MIMD
1088:MISD
1065:SIMD
1060:SISD
788:Loop
778:Data
773:Task
286:The
267:Java
221:DASH
185:, A
174:Cray
138:and
109:SPMD
91:and
89:DASH
29:PGAS
1335:ZPL
1330:TBB
1325:UPC
1305:PVM
1275:MPI
1230:HPX
1157:UMA
758:Bit
241:IBM
237:X10
225:C++
209:C++
193:on
187:C++
140:X10
113:MPI
73:X10
19:In
1427::
612:,
514:,
223:a
207:a
142:.
87:,
83:,
79:,
75:,
71:,
67:,
63:,
59:,
55:,
23:,
675:e
668:t
661:v
130:(
27:(
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.