2017-02-01 11 views
1

Я пытаюсь понять, где Stream может помочь мне обработать несколько областей интересов на видеокадре. Если вы используете функции АЭС, поддерживающие поток, это случай, когда вы запускаете столько потоков, сколько есть ROI? Возможно даже создание потока ЦП для каждого потока? Или полезно использовать один поток для обработки всех ROI и, возможно, используя этот единственный поток из нескольких потоков в ЦП?Преимущество использования потока CUDA

ответ

3

В CUDA использование потоков обычно помогает лучше использовать GPU двумя способами. Во-первых, копии памяти между хостом и устройством могут перекрываться при выполнении ядра, если копирование и выполнение происходят в разных потоках. Во-вторых, отдельные ядра, работающие в разных потоках, могут перекрываться, если на GPU хватает ресурсов.

Кроме того, поможет ли создание потока для каждого ROI, зависит от сравнения использования графического процессора и процессора (если есть). Если на процессоре много обработки, а процессор удерживает вычисление графических процессоров, создается больше потоков.

Дополнительная информация (см. documentation для реальной версии CUDA), которые ограничивают перекрытие операций в потоках. Копирование памяти перекрывается с выполнением ядра, только если источник памяти или адресат в ОЗУ заблокирован. Или синхронизация между потоками возникает, когда хост-поток выдает команды (-и) в потоке по умолчанию. (Поскольку CUDA 7 каждый поток имеет свой собственный поток по умолчанию, так что обработка ROI в разных потоках помогла бы снова.)

Следовательно, удовлетворяя определенным условиям, он должен повысить производительность вашего алгоритма, если обработка ROI происходит в разных потоках вверх до определенного предела (в зависимости от потребления ресурсов ядер, соотношения копий и вычислений памяти и т. д.)

+0

Спасибо! Очень полезно! – AeroClassics

+0

@AeroClassics, если да, рассмотрите вопрос об утверждении ответа. – stuhlo