Fortran 2018 지원 현황
Fortran 2018 지원 현황
GNU Fortran이 최신 Fortran 표준인 Fortran 2018을 어디까지 구현했는지 정리한 페이지예요. ISO/IEC TS 29113에서 온 기능은 대부분 지원되고, 병렬 기능(TS 18508)은 그중 일부만 지원돼요. 어떤 것들이 되는지, 어떤 것들이 아직 안 되는지 살펴볼게요.
본문
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,FETCH와ADD/OR/XOR,OR,XOR내장 함수. CO_MIN과CO_MAX및SUM축소(reduction) 내장 함수, 그리고CO_BROADCAST와CO_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을 따르게 됐어요.
- 새 원자(atomic)
정리하면 Fortran 2018을 쓸 때 먼저 좋은 소식은, C 상호운용 관련 기능(SELECT RANK, 가정형·가정랭크, BIND(C))이 잘 지원된다는 점이에요. 반면 코어어레이(coarray) 병렬 기능인 TS 18508 파생 기능은 일부만 반영돼 있어서, 원자 연산과 공동 배열 축소 내장 함수를 다형성 타입과 함께 쓰는 조합은 피해야 해요.
더 알아보기
- Fortran 2008 지원 현황 (Fortran 2008 status): 이전 Fortran 표준의 구현 현황이에요.
- GNU Fortran 표준 호환성 (Standards): 여러 Fortran 표준 전반에 대한 GNU Fortran의 지원 개요예요.
- Fortran과 C의 추가 상호운용 (Further Interoperability of Fortran with C): TS 29113의 자세한 내용이에요.