2009-12-15 1 views
3

나는 네이티브 matlab 코드에서 많은 저수준 작업을 훌륭한 속도 향상과 함께 C/mex 코드로 변환하고 있습니다. (이러한 저수준 연산은 .m 코드로 벡터화할 수 있지만, 대용량 데이터의 b/c 메모리를 얻을 수 있다고 생각합니다.) 다른 CFLAGS로 mex 코드를 컴파일하면 경미한 개선이 발생할 수 있습니다. 예를 들어 CFLAGS = -O3 -ffast-math은 약간의 속도 향상을 제공하지만 가벼운 수치 부정확성을 희생합니다.matlab에 mex 기능을위한 안전하고 빠른 CFLAGS

내 질문 : 너무 많은 다른 부작용이 발생하지 않고 "최고의"CFLAGS는 무엇입니까? 적어도, 그게 CFLAGS = -O3 -fno-math-errno -fno-unsafe-math-optimizations -fno-trapping-math -fno-signaling-nans 모두 괜찮은 것 같습니다. -funroll-loops에 대해 확실하지 않습니다.

또한 견적없이 CFLAGS 세트를 반자동으로 최적화하는 방법은 무엇입니까?

답변

1

목표 CPU를 알고 있거나 최소한 "최소"CPU를 보장하려는 경우 ... -mcpu-march을 확실히 조사해야합니다.

성능 향상이 중요 할 수 있습니다.

+0

나는 원칙적으로 이것을 좋아하지만 아직 제대로 테스트하지 못했습니다. .. – shabbychef

+0

나를 위해 잘 일했다. 감사. – Sevenless

1

ATLAS가 컴퓨터에서 사용하는 것은 무엇이든간에 (http://math-atlas.sourceforge.net/) 아마 좋은 출발점 일 것입니다. 필자는 ATLAS가 특정 컴파일러 플래그를 자동으로 최적화한다는 것을 모릅니다. 그러나 개발자는 아마도 수작업으로 상당한 시간을 소비했을 것입니다.