Coarray 프로그래밍(Coarray Programming)
Coarray 프로그래밍(Coarray Programming)
Fortran 2008에서 표준화된 병렬 프로그래밍 기능인 coarray(공동 배열)를 GNU Fortran이 어떻게 다루는지 소개하는 장이에요. coarray를 쓰면 단일 프로그램 이미지에서 여러 이미지(image)에 걸쳐 데이터를 직접 공유하고 동기화할 수 있어요.
본문
이 장은 GNU Fortran의 coarray 프로그래밍 지원에 대해 다루는 문서예요. Coarray는 Fortran 2008 표준에 포함된 병렬 실행 모델로, 병렬 실행되는 각 **이미지(image)**가 자신만의 데이터 공간을 가지면서도 coarray 변수를 통해 다른 이미지의 데이터에 직접 접근할 수 있게 해줘요. 통신이 메시지 패싱 라이브러리를 통하지 않고 언어 차원에서 표현되는 게 특징이에요.
이 장에서는 다음과 같은 하위 절을 통해, coarray와 관련된 ABI(Application Binary Interface) 세부 사항까지 정리하고 있어요.
- 타입과 enum ABI 문서(Type and enum ABI Documentation) — coarray를 포함한 데이터 타입·열거형이 바이너리 레벨에서 어떻게 배치되는지.
- 함수 ABI 문서(Function ABI Documentation) — 함수 호출 규약과 관련된 세부 사항.
일반적인 coarray 문법(예: x[2]와 같은 코지수 참조, sync all, image, num_images 등)에 대한 설명과 함께, 이 장은 그런 기능이 실제 컴파일된 바이너리에서 어떻게 나타나는지까지 따라가 보는 문서예요. 병렬 코드를 작성하면서 ABI 수준의 동작이 궁금할 때 참고하면 좋아요.
더 알아보기
- coarray의 실행 모델과 기본 문법은 Fortran 2008 표준 문서와 함께 보면 이해가 빨라요. 특히
sync all,sync images,co_reduce같은 동기화·집합 연산을 같이 훑어보는 걸 추천해요. - GNU Fortran에서 coarray 프로그램을 실행할 때 이미지 수를 정하는 방법이나 런타임 지원은 '런타임 옵션' 관련 문서가 도움이 돼요.
- coarray는 원칙적으로 SPMD(Single Program, Multiple Data) 모델이라, 각 이미지가 같은 프로그램을 실행하면서 데이터만 나눠 갖는 구조예요.