2015-03-17 4 views
4

Я использую OpenTLD (который использует OpenCV для анализа изображений) в проекте Raspberry Pi 2 для отслеживания объектов. Чтобы бороться с проблемами с задержкой (около 3 секунд задержки видео), я включил поддержку OpenMP при компиляции. Теперь я получаю только около 2 секунд задержки. Запуск top говорит мне, что в большинстве случаев только 170% процессор используется opentld, что приводит меня к подозрению, что OpenMP использует только два из Raspberry Pi 2 для четырех ядер.OpenMP не использует все доступные ядра на Raspberry Pi 2

Из того, что я понимаю из this Wikipedia diagram, OpenMP должен иметь возможность использовать все четыре ядра. Это вопрос OpenMP, который не распознает все ядра, или это что-то еще?

+0

Попробуйте установить некоторые переменные среды libgomp https://gcc.gnu.org/onlinedocs/libgomp/Environment-Variables.html - 'экспортировать GOMP_DEBUG = 1' для получения дополнительной информации об отладке (если она реализована); и 'export OMP_WAIT_POLICY = ACTIVE GOMP_CPU_AFFINITY = 0-3' для более эффективной блокировки и связывания потоков OpenMP с ядрами. – osgx

+0

Почему вы не вызываете omp_get_num_procs(), чтобы точно знать, что это действительно вопрос ядра, доступного OpenMP? – CTZStef

+0

@osgx, это сработало! 'top' теперь показывает, что' opentld' использует ~ 370%, а на мониторе процессора - 100%. Тем не менее, нет заметных изменений в производительности (еще 2 секунды задержки). Может ли быть, что процессорная мощность процессора здесь не является узким местом? Если нет, что бы это могло быть? – faeophyta

ответ

1

Прежде всего, вы должны сделать export OMP_NUM_THREADS=4 на консоли.

Топ-использование 170% для процессора, не обязательно означает, что вы работаете только с двумя потоками. Код может быть связан с памятью, а также может обеспечить низкий уровень использования ЦП.

+0

Спасибо за ответ! Из ответа osgx я «экспортировал GOMP_DEBUG = 1 OMP_WAIT_POLICY = ACTIVE GOMP_CPU_AFFINITY = 0-3'. Теперь 'top' показывает ~ 380% - это именно то, что я хотел. Однако повышения производительности не было. Может ли это быть потому, что, как вы сказали, это может быть «память связана»? – faeophyta

+0

Это может быть связано с многими вещами, но это менее вероятно. – a3mlord

+0

Есть ли у вас какие-либо догадки о том, почему это может быть? – faeophyta