타입과 enum ABI 문서화

타입과 enum ABI 문서화

코어레이 배열 프로그래밍을 공부하다 보면, GNU Fortran이 코어레이(corray)를 지원하기 위해 내부적으로 다루는 여러 타입과 열거형을 만나게 돼요. 이 문서는 그중에서도 다른 언어와의 ABI(Application Binary Interface) 경계에서 쓰이는 타입들이 무엇인지 정리해 둔 자리예요.

출처: Type and enum ABI Documentation

본문

코어레이 프로그래밍(corray programming) 지원은 라이브러리와 컴파일러 사이에 지켜야 할 이진 호환 규약, 즉 ABI가 필요해요. 이 ABI 문서에서는 뒷단 라이브러리(back-end library)와 주고받을 때 쓰이는 타입과 enum을 다음과 같이 정의해 두고 있어요.

  • caf_token_t — 코어레이의 토큰을 나타내는 타입이에요. 코어레이 변수 하나를 등록하고 안전하게 참조하기 위한 핸들로 이해하면 돼요.
  • caf_register_t — 코어레이를 등록(register)할 때 사용하는 열거형이에요. 어떤 방식으로 코어레이 스토리지를 확보할지를 나타내요.
  • caf_deregister_t — 등록된 코어레이를 해제(deregister)할 때 사용하는 열거형이에요. 정리 단계에서 어떤 처리를 할지 정해 주죠.
  • caf_reference_t — 코어레이의 특정 요소나 하위 객체를 가리키는 참조 구조체예요. 코어레이 안에서 어느 부분을 읽거나 쓸지 명시할 때 쓰여요.
  • caf_team_t — 팀(team)을 나타내는 타입이에요. CHANGE TEAM 같은 팀 기반 병렬 실행을 지원할 때 팀 식별자로 사용돼요.

이 타입들은 코어레이 라이브러리를 직접 구현하려는 사람에게 필요한, 비교적 내부적인 내용이에요. 컴파일러와 런타임 사이의 계약을 문서화한 것이라고 생각하면 돼요. 좀 더 자세한 내용은 다음 항목인 Function ABI Documentation에서 이어져요.

더 알아보기

  • 이 ABI 항목은 GNU Fortran 코어레이 프로그래밍 절(Coarray Programming)의 일부예요.
  • 실제로 코어레이를 쓰는 입장이라면, 이 타입들을 직접 만질 일은 거의 없어요. 대신 caf_* 타입은 라이브러리 개발자나 컴파일러 내부를 들여다보는 사람이 주로 봐요.
  • 코어레이의 기본 문법과 활용이 궁금하다면 GNU Fortran 매뉴얼의 Coarray Programming 전체 절을 함께 보면 좋아요.