'pgf90'에 해당되는 글 1건

  1. 2008/11/21 IFORT 컴파일러와 PGF90 컴파일러 (3)
하루가루2008/11/21 00:01

병렬 프로그래밍을 하면서 간과하고 있었던 부분입니다.

싱글 환경은 ifort 인텔 포트란 컴파일러로 실행 파일을 만들고, 병렬 환경은 mpif90 파일이 pgf90 컴파일러로 매핑되어 실행 파일을 만들게 되었습니다. 이 두 실행 파일의 연산 결과가 달라서 제가 변경한 코드에서 발생한 에러인 줄 알고 코드 분석을 다시 들어갔습니다. 코드 단에는 문제가 없었습니다.

MPI 네트워크 환경의 문제인가? 생각하면서 테스트 프로그램을 간단하게 만들어 돌려보았지만 정상이었습니다.

그래서 병렬 연산 부분을 취소하고 mpif90(pgf90 컴파일러로 포팅된)을 이용하여 컴파일 하고 노드 1개로만 돌려보았습니다. ifort 컴파일러로 만든 싱글 환경의 실행 파일 결과와 다르더군요. 아차 싶었습니다. 이 부분을 몰라서 1주일 정도 고민고민, 삽질삽질, 분석분석의 연속이었습니다.

싱글 환경에서 pgf90 컴파일러로 실행 파일을 만들어 MPI 이용한 병렬 환경의 결과물과 비교했더니 동일 했습니다. 부동소수점 관련하여 연산이 달라지는 부분이 있는 것 같습니다. 이를 미처 몰라서 직선으로 올 거리를 많이 돌아왔습니다.

프로그램 만들면서 정말 흔하지 않게 겪게 되는데... 이번에 제대로 배우네요.

09.06.01 추가 내용
컴파일러에 따른 부동소수점 결과가 다를 수 있다는 것은 이 글 당시 추측입니다. 저도 그 이유를 확인해보지 않았습니다. 지금 생각해보면 컴파일러 별 컴파일에서 포함되는(제외되는) 부분이 있기에 그 부분이 연산되지 않아 발생한 것이라고도 생각할 수 있습니다. 단순한 부동소수점 연산은 동일합니다. 소수부가 엄청나게 긴 데이터를 다룰 경우는 저도 어떻게 될지 궁금합니다.


가루비누
저작자 표시 비영리 변경 금지
Posted by cheru