분할 전역 주소 공간

컴퓨터 과학에서 **분할 전역 주소 공간**(Partitioned global address space, 파티션드 글로벌 어드레스 스페이스, **PGAS**)은 병렬 프로그래밍 모델 패러다임이다. PGAS는 논리적으로 분할된 전역 메모리 주소 공간 추상화를 포함하는 통신 작업이 특징이며, 이 공간의 일부는 각 프로세스, 스레드 또는 처리 요소에 로컬로 할당된다.Almasi, George. "PGAS (Partitioned Global Address Space) Languages.", Encyclopedia of Parallel Computing, Springer, (2011): 1539-1545. https://doi.org/10.1007/978-0-387-09766-4_210Cristian Coarfă; Yuri Dotsenko; John Mellor-Crummey, "An Evaluation of Global Address Space Languages: Co-Array Fortran and Unified Parallel C" PGAS의 참신함은 공유 메모리 공간의 일부가 특정 프로세스에 대한 친화성을 가질 수 있어, 성능 향상을 위해 참조 국부성을 활용한다는 점이다. PGAS 메모리 모델은 다음과 같은 다양한 병렬 프로그래밍 언어 및 라이브러리에 포함되어 있다: 코어레이 포트란, 유니파이드 패럴렐 C, Split-C, 포트리스, 채플, X10, UPC++, Coarray C++ url=https://web.archive.org/web/20171025185122/http://www.pgas2013.org.uk/sites/default/files/finalpapers/Day2/R4/2_paper6.pdf, 글로벌 배열, DASH, 그리고 SHMEM. PGAS 패러다임은 포트란 2008부터 coarray(코어레이)를 표준화함으로써 포트란 언어의 통합된 부분이 되었다. PGAS 메모리 모델을 제공하는 다양한 언어와 라이브러리는 기본 프로그래밍 언어와 병렬 처리를 표현하는 메커니즘과 같은 다른 세부 사항에서 크게 다르다. 많은 PGAS 시스템은 분산 메모리 시스템을 위한 SPMD 프로그래밍 스타일(예: MPI에서 사용)의 장점과 공유 메모리 시스템의 데이터 참조 의미론을 결합한다. 메시지 전달과 대조적으로, PGAS 프로그래밍 모델은 원격 메모리 액세스(RMA)와 같은 단방향 통신 작업을 자주 제공하는데, 이를 통해 하나의 처리 요소가 수동 대상 프로세스의 명시적인 의미론적 개입 없이 다른 (잠재적으로 원격) 프로세스와 친화성을 가진 메모리에 직접 액세스할 수 있다. PGAS는 하드웨어별 데이터 국부성이 주소 공간의 의미론적 분할에서 명시적으로 드러날 수 있기 때문에, 평면 주소 공간을 가진 전통적인 공유 메모리 접근 방식보다 더 효율적이고 확장성이 높다. PGAS 패러다임의 변형인 **비동기 분할 전역 주소 공간**(asynchronous partitioned global address space, **APGAS**)은 로컬 및 원격 비동기 태스크 생성 기능을 프로그래밍 모델에 추가한다.Tim Stitt, "An Introduction to the Partitioned Global Address Space (PGAS) Programming Model" 이 모델을 사용하는 두 가지 프로그래밍 언어는 채플과 X10이다.
# 예시
* 코어레이 포트란Numrich, R.W., Reid, J., Co-array Fortran for parallel programming. ACM SIGPLAN Fortran Forum 17(2), 1–31 (1998).J. Reid: Coarrays in the Next Fortran Standard. SIGPLAN Fortran Forum 29(2), 10–27 (July 2010) 현재 Fortran 2008GCC wiki, Coarray support in gfortran as specified in the Fortran 2008 standard부터 언어의 통합된 부분 * 유니파이드 패럴렐 CW. Chen, D. Bonachea, J. Duell, P. Husbands, C. Iancu, K. Yelick. A Performance Analysis of the Berkeley UPC Compiler 17th Annual International Conference on Supercomputing (ICS), 2003. https://doi.org/10.1145/782814.782825Tarek El-Ghazawi, William Carlson, Thomas Sterling, and Katherine Yelick. UPC: distributed shared memory programming. John Wiley & Sons, 2005.UPC Consortium, UPC Language and Library Specifications, v1.3, Lawrence Berkeley National Lab Tech Report LBNL-6623E, Nov 2013. https://doi.org/10.2172/1134233 ISO C 프로그래밍 언어의 명시적 병렬 SPMD 방언 * 채플Bradford L. Chamberlain, Chapel, Programming Models for Parallel Computing, edited by Pavan Balaji, MIT Press, November 2015. 크레이 (기업)가 DARPA HPCS 프로젝트 하에 원래 개발한 병렬 언어 * UPC++,John Bachan, Scott B. Baden, Steven Hofmeyr, Mathias Jacquelin, Amir Kamil, Dan Bonachea, Paul H. Hargrove, Hadia Ahmed. "UPC++: A High-Performance Communication Framework for Asynchronous Computation", In 33rd IEEE International Parallel & Distributed Processing Symposium (IPDPS'19), May 20–24, 2019. https://doi.org/10.25344/S4V88H 원격 메모리 액세스(RMA) 및 원격 프로시저 호출(RPC)을 포함하여 엑사스케일 슈퍼컴퓨터에서 고성능 컴퓨팅을 지원하도록 설계된 PGAS 통신 작업을 제공하는 C++ 템플릿 라이브러리 * Coarray C++url=http://www.pgas2013.org.uk/sites/default/files/finalpapers/Day2/R4/2_paper6.pdfT. A. Johnson: Coarray C++. Proceedings of the 7th International Conference on PGAS Programming Models. pp. 54–66. PGAS’13 (2013), 크레이가 개발한 C++ 라이브러리로, 포트란 코어 배열 기능과 밀접한 유사성을 제공 * 글로벌 배열Nieplocha, Jaroslaw; Harrison, Robert J.; Littlefield, Richard J. (1996). Global arrays: A nonuniform memory access programming model for high-performance computers. The Journal of Supercomputing. 10 (2): 169–189. 분산 배열에서의 병렬 과학 컴퓨팅을 지원하는 라이브러리 * DASH K. Furlinger, C. Glass, A. Knupfer, J. Tao, D. Hunich, et al. DASH: Data Structures and Algorithms with Support for Hierarchical Locality. Euro-Par Parallel Processing Workshops (2014). 계층적 국부성을 지원하는 분산 데이터 구조를 위한 C++ 템플릿 라이브러리 * SHMEM 분산 배열에서의 병렬 과학 컴퓨팅을 지원하는 라이브러리 제품군 * X10P. Charles, C. Grothoff, V. Saraswat, C. Donawa, A. Kielstra, et al. X10: an object-oriented approach to nonuniform cluster computing. Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA’05) (2005). IBM이 DARPA HPCS 프로젝트 하에 개발한 병렬 언어 * 포트리스 썬 마이크로시스템즈가 DARPA HPCS 프로젝트 하에 개발한 병렬 언어 * Titanium Katherine Yelick, Paul Hilfinger, Susan Graham, Dan Bonachea, Jimmy Su, Amir Kamil, Kaushik Datta, Phillip Colella, and Tong Wen, "Parallel Languages and Compilers: Perspective from the Titanium Experience", The International Journal Of High Performance Computing Applications, August 1, 2007, 21(3):266-290Katherine Yelick, Susan Graham, Paul Hilfinger, Dan Bonachea, Jimmy Su, Amir Kamil, Kaushik Datta, Phillip Colella, Tong Wen, "Titanium", Encyclopedia of Parallel Computing, edited by David Padua, (Springer: 2011) Pages: 2049-2055 UC 버클리에서 대규모 다중 프로세서의 과학 고성능 컴퓨팅을 지원하기 위해 개발된 자바의 명시적 병렬 방언 * Split-CCuller, D. E., Dusseau, A., Goldstein, S. C., Krishnamurthy, A., Lumetta, S., Von Eicken, T., & Yelick, K. Parallel programming in Split-C. In Supercomputing'93: Proceedings of the 1993 ACM/IEEE conference on Supercomputing (pp. 262-273). IEEE. 전역 주소 공간에 대한 효율적인 액세스를 지원하는 C 프로그래밍 언어의 병렬 확장 * Adapteva 에피파니 아키텍처는 코어 간에 주소 지정이 가능한 스크래치패드 메모리를 가진 매니코어 네트워크 온 칩 프로세서이다.