分區全域地址空間

電腦科學中,分區全域地址空間(partitioned global address space:PGAS)是一種並列編程模型。在PGAS模型中,多個SPMD線程或行程分享出它們地址空間的一部份,從而共用出一個劃分了分區的全域地址空間,對於每個線程或行程在其中都有對它是局部性的那一部份[1]

簡介

PGAS模型試圖將針對分散式主記憶體英語Distributed memory系統的如MPI那樣的SPMD英語SPMD編程樣式,和共用主記憶體系統的數據參照語意二者的好處結合起來。PGAS模型相較分散式共用主記憶體有所創新,共用主記憶體空間的一部份可以對特定線程或行程有「親和性」,從而利用上參照局部性。這也比傳統共用主記憶體方式的一個平直地址空間要更具現實性,因為特定於硬件的數據局部性比如NUMA,可以在劃分地址空間中進行建模。

PGAS模型是SHMEM英語SHMEM[2]Unified Parallel CCoarray Fortran英語Coarray FortranChapel英語ChapelX10英語X10 (programming language)Fortress英語Fortress (programming language)Split-C英語Split-CGlobal Arrays英語Global Arrays、UPC++[3]、Coarray C++[4]、DASH[5]的基礎。自從Fortran 2008,這個模型被整合為標準Fortran語言的一部份。

PGAS模型的一個變體是非同步分區全域地址空間(asynchronous partitioned global address space:APGAS),它允許建立局部和遠端非同步任務二者[6]。使用了這個模型的兩個程式語言是Chapel英語ChapelX10英語X10 (programming language)

其他例子

參見

參照

  1. ^ Cristian Coarfă; Yuri Dotsenko; John Mellor-Crummey, "An Evaluation of Global Address Space Languages: Co-Array Fortran and Unified Parallel C"頁面存檔備份,存於互聯網檔案館
  2. ^ OpenSHMEM. [2019-12-12]. (原始內容存檔於2019-12-09). The Programming Models and Languages team is focused on developing the OpenSHMEM programming model for extreme scale systems. ……Currently, the team partners with NVIDIA, University of Tennessee, Knoxville, Florida State University and Paratools. …… UCX provides communication interfaces, and protocols for efficiently implementing parallel programming models such as MPI, OpenSHMEM, and task-based models. 
  3. ^ UPC++頁面存檔備份,存於互聯網檔案館
  4. ^ Coarray C++頁面存檔備份,存於互聯網檔案館
  5. ^ DASH頁面存檔備份,存於互聯網檔案館
  6. ^ Tim Stitt, "An Introduction to the Partitioned Global Address Space (PGAS) Programming Model"頁面存檔備份,存於互聯網檔案館
  7. ^ Epiphany Architecture Reference (PDF). [2019-12-11]. (原始內容存檔 (PDF)於2017-09-22). The Epiphany architecture defines a multicore, scalable, shared-memory, parallel computing fabric. It consists of a 2D array of compute nodes connected by a low-latency mesh network-on-chip英語Network on a chip. ……Local memory in each mesh node that provides 32 Bytes/cycle of sustained bandwidth and is part of a distributed, shared memory system. 

外部連結