Лучшие флаги компилятора для целевого C-проекта с opencv framekwork - PullRequest
0 голосов
/ 20 декабря 2011

Я занимаюсь компиляцией и проектом ios с использованием среды opencv, поэтому мне интересно узнать, какие флаги компилятора лучше всего подходят для моего проекта.

В проекте обрабатывается много матричных пикселей, поэтому мне нужносо стороны компилятора, чтобы иметь SIMD-инструкции, чтобы иметь возможность обрабатывать эту матрицу максимально эффективно.

Я использую следующие флаги: -mfpu = неон, -mfloat-abi = softfp и -O3,

И я также нахожу следующие флаги: -mno-thumb -mfpu = maverick -ftree-vectorize -DNS_BLOCK_ASSERTIONS = 1

Я не знаю, действительно ли это спасет меня от многихобработка процессора, я ищу в гугле, но не нашел чего-то, что дало бы мне веские основания знать лучшие флаги компилятора.

Спасибо

Ответы [ 2 ]

1 голос
/ 21 декабря 2011

Я также использую те же флаги, которые вы используете для неона.Оптимизация неоновых внутренних кодов не будет выполняться в соответствии с уровнем оптимизации O3 или чем-либо еще.Он просто оптимизирует код ARM.

Как сказал Василе, лучшую производительность можно получить, написав неоновые коды в сборке.Самый простой способ - написать программу, в которой используются внутренние неоновые коды, и скомпилировать ее, используя упомянутые вами флаги.Теперь используйте ассемблерный код, сгенерированный для кода, для дальнейшей оптимизации.

Многое можно оптимизировать, распараллеливая или используя возможности двойных команд neon.

1 голос
/ 20 декабря 2011

Проблема в том, что компиляторы не так хороши в генерации векторизованного кода. Так что, просто включив NEON, вы не получите много улучшений (возможно, 10% ??)

что вы можете сделать, это профилировать ваше приложение и писать вручную те части, которые съедают ваше время, используя NEON. И если вы это сделаете, почему бы не залатать их в общедоступный исходный код OpenCV?

В настоящее время в OpenCV практически отсутствует код, оптимизированный для NEON (для x86 SSE2 он оптимизирован гораздо лучше).

...