Intel Fortran 9.1 버전에는 컴파일 옵션으로 CPU를 고를 수 있는데, 그중 /QxP 를 고르면 SSE3가 들어간 CPU 전용 코드를 만들어 줍니다. 같은 포트란 프로그램을 E6600 상에서 /QxP 없는 일반 코드로 컴파일 하면 100초정도에 /QxP 로 만들면 75초 정도로 돌게 됩니다. 그런데 이 Intel Fortran 이 AMD CPU는 SSE3를 못하도록 막아두었습니다. 그래서 AMD 885에서는 130초 정도의 저조한 성능을 보인다고 생각해왔는데요. 오늘 찾아보니 라이브러리를 수정하는 방법으로 AMD 에서 SSE3 를 이용하는 프로그램을 돌릴 수 있더군요. 그래서 해봤습니다. 전혀 속도 개선이 안돼더군요. 그래서 궁금해진겁니다. 컴파일한 코드는 분명 SSE3를 이용하는 프로그램이고 E6600 에서는 속도개선이 있었습니다.
1. AMD 의 SSE3는 단순이 SSE3 명령이 먹는다 수준의 미약한 것일까요? (기존 명령을 이용한 SSE3 emulation?)
2. 해외의 다른 사람들은 10%정도 성능향상이 있었다는 사람도 있습니다. 제가 뭘 잘못한 걸까요?
3. Opteron 이 사실은 VX50에 붙어 있는 것입니다. main board bus 가 제성능을 발휘하지 못해서 느린걸까요?
만약 AMD SSE3 가 정녕 저정도 성능밖에 안나오는 것이라면 추후 CPU는 (원래도 좀 그런생각이 있었지만 애써 Intel Fortran Compiler 의 검은 마수라고만 생각하고 있었기 때문에 참고 있었는데) Intel Only 로 가는 것을 심각하게 고려해봐야 할 것 같습니다.
AMD 의 SSE2 나 SSE3 혹은 Intel Fortran on AMD 에 경험있으신분의 의견을 구합니다.
짧은글 일수록 신중하게.