2011-12-20 3 views
0

미안의 컴파일과 목표 C 프로젝트를위한 플래그와 IOS 내 프로젝트에 최적의 컴파일러 플래그가 무엇인지 너무 미안 관심 OpenCV의 프레임 워크를 사용하여 프로젝트.최고의 컴파일러에서 OpenCV framekwork

프로젝트 프로세스 매트릭스 픽셀 많이 그래서 최대한 효율적이 행렬을 처리 할 수있는 SIMD 명령어를 컴파일러 측면에서 필요하다.

내가이 플래그를 사용하여 : -mfpu = 네온, -mfloat-ABI = softfp 및 -O3,

내가이 다른 플래그를 찾을 수 : -mno-엄지 손가락 -mfpu = 코디 -ftree- 벡터화 -DNS_BLOCK_ASSERTIONS = 1

나는 그것이 CPU를 많이 절약 할 것이라는 것을 알고 있지만, 나는 Google을 통해 검색하지만, 나는 최선을 알기에 좋은 이유를주는 것을 찾지 못했다. 컴파일러 플래그.

감사

답변

1

네온에 사용하는 것과 동일한 플래그도 사용하고 있습니다. 최적화 수준 O3 또는 기타에 따라 네온 내장 코드에 대한 최적화가 수행되지 않습니다. 단지 ARM 코드를 최적화합니다.

Vasile에 의하면 최고의 성능은 어셈블리에 네온 코드를 쓰면 얻을 수 있습니다. 가장 쉬운 방법은 본질적인 네온 코드가 사용되는 프로그램을 작성하고 언급 한 플래그를 사용하여 컴파일하는 것입니다. 이제 추가 최적화를 위해 코드 용으로 생성 된 어셈블리 코드를 사용하십시오.

네온의 병렬 처리 또는 이중 명령어 기능을 사용하여 많은 최적화 작업을 수행 할 수 있습니다.

1

문제는 컴파일러가 벡터화 된 코드를 생성에 매우 좋지 않은 점이다. 그래서, 단지 활성화 NEON에 의해 ​​당신은

무엇 당신이 할 수있는 것은 당신의 응용 프로그램을 프로파일 손으로 NEON를 사용하여, 당신의 시간을 먹는 그 부분을 작성하는 것입니다 (아마도 10 % ??) 많은 개선을 얻을 수 있습니다. 그리고 당신이 그것을한다면, 공개 된 OpenCV 소스에 패치하지 않을까요? 지금까지

는, OpenCV의는 NEON에 최적화없이 코드에 거의 없다 (는 x86 SSE2를 위해, 그것은 훨씬 더 최적화되어 있습니다).