GCC를 이용해서 수치계산을 하는 빈도가 예전에 비해 높아졌습니다.
보통은 -O2나 -O3옵션 같은 Optimzation option을 켜고 하는데 이보다
더 많은 옵션들이 존재합니다.
제가 테스트 해본 바로.
I686의 경우
CFLAGS=-O9 -funroll-loops -ffast-math -malign-double
-mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer
-fno-exceptions
와 같이 주었더니 매우 빠르게 계산하더군요.
그리고 여러 홈페이지를 보니 gcc자체의 버그들이 아직 존재해서 -O3 같은
옵션은 문제가 많은가 봅니다.
참 이번에 제가 알아낸 팁 중에 하나로 -ffloat-store라는 옵션도 있습니다.
제가 돌리는 수치 프로그램의 경우 다른 Unix머신들에서는 문제없이 도는데
유독 리눅스 머신에서는 NaN이라는 것을 찍어 내더군요.
아직 많이 알려지지는 않았지만 Intel CPU계열의 register에 precision처리에서
문제가 많은가 봅니다.
이 경우 optimization option을 빼거나 아니면 -ffloat-store옵션을 같이
붙여주면 문제없이 돕니다. (double precision이상의 유효자리는 버리는
옵션이라고 설명이 있네요)
저처럼 수치 계산하시는 분들에게는 유용한 팁이 되길 바라겠습니다.
참 아래는 참조한 홈페이지 입니다.
모두 좋은 하루되세요.
http://www.tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/chap6sec64.html--내서명???