Я использую OpenTLD (который использует OpenCV для анализа изображений) в проекте Raspberry Pi 2 для отслеживания объектов. Чтобы бороться с проблемами с задержкой (около 3 секунд задержки видео), я включил поддержку OpenMP при компиляции. Теперь я получаю только около 2 секунд задержки. Запуск top
говорит мне, что в большинстве случаев только 170% процессор используется opentld
, что приводит меня к подозрению, что OpenMP использует только два из Raspberry Pi 2 для четырех ядер.OpenMP не использует все доступные ядра на Raspberry Pi 2
Из того, что я понимаю из this Wikipedia diagram, OpenMP должен иметь возможность использовать все четыре ядра. Это вопрос OpenMP, который не распознает все ядра, или это что-то еще?
Попробуйте установить некоторые переменные среды 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
Почему вы не вызываете omp_get_num_procs(), чтобы точно знать, что это действительно вопрос ядра, доступного OpenMP? – CTZStef
@osgx, это сработало! 'top' теперь показывает, что' opentld' использует ~ 370%, а на мониторе процессора - 100%. Тем не менее, нет заметных изменений в производительности (еще 2 секунды задержки). Может ли быть, что процессорная мощность процессора здесь не является узким местом? Если нет, что бы это могло быть? – faeophyta