Fortran 2018 지원 현황

Fortran 2018 지원 현황

GNU Fortran이 최신 Fortran 표준인 Fortran 2018을 어디까지 구현했는지 정리한 페이지예요. ISO/IEC TS 29113에서 온 기능은 대부분 지원되고, 병렬 기능(TS 18508)은 그중 일부만 지원돼요. 어떤 것들이 되는지, 어떤 것들이 아직 안 되는지 살펴볼게요.

출처: Fortran 2018 status (The GNU Fortran Compiler)

본문

Fortran 2018 (ISO/IEC 1539:2018)은 Fortran 언어 표준의 가장 최신 버전이에요. GNU Fortran은 이 표준의 새 기능 중 일부를 구현해요:

  • ISO/IEC TS 29113:2012, "Fortran과 C의 추가 상호운용(Further Interoperability of Fortran with C)"에서 파생된 모든 Fortran 2018 기능이 GNU Fortran에서 지원돼요. 여기에는 가정형(assumed-type) 및 가정랭크(assumed-rank) 객체와 SELECT RANK 구조, 그리고 BIND(C) 함수와 관련된 부분이 포함돼요. 'Fortran과 C의 추가 상호운용' 문서도 참고하세요.

  • GNU Fortran은 ISO/IEC TS 18508:2015, "Fortran의 추가 병렬 기능(Additional Parallel Features in Fortran)"에서 파생된 기능의 일부 부분집합을 지원해요:

    • 새 원자(atomic) ADD, CAS, FETCHADD/OR/XOR, OR, XOR 내장 함수.
    • CO_MINCO_MAXSUM 축소(reduction) 내장 함수, 그리고 CO_BROADCASTCO_REDUCE 내장 함수. 다만 이들은 다형성 타입이나 allocatable·포인터·다형성 구성요소를 가진 타입에서는 지원되지 않아요.
    • 이벤트 (EVENT POST, EVENT WAIT, EVENT_QUERY).
    • 실패 이미지(failed images) (FAIL IMAGE, IMAGE_STATUS, FAILED_IMAGES, STOPPED_IMAGES).
    • PURE 프로시저에서 ERROR STOP 문이 허용돼요.
    • GNU Fortran은 implicit-none-spec-list가 있는 IMPLICIT NONE 문을 지원해요.
    • RECL= 지정자와 함께 쓰는 INQUIRE 문의 동작이 이제 Fortran 2018을 따르게 됐어요.

정리하면 Fortran 2018을 쓸 때 먼저 좋은 소식은, C 상호운용 관련 기능(SELECT RANK, 가정형·가정랭크, BIND(C))이 잘 지원된다는 점이에요. 반면 코어어레이(coarray) 병렬 기능인 TS 18508 파생 기능은 일부만 반영돼 있어서, 원자 연산과 공동 배열 축소 내장 함수를 다형성 타입과 함께 쓰는 조합은 피해야 해요.

더 알아보기