5

Для каких приложений я могу использовать сердечник dsp beagleboard? Могу ли я использовать ускорение DSP для алгоритма вычитания фона в OpenCV?Для каких приложений я могу использовать ядро ​​dsp beagleboard? Могу ли я использовать ускорение DSP для алгоритма вычитания фона?

ответ

6

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

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

Чтобы дать вам цифру, что возможно: у меня есть алгоритм, который выполняет пост-обработку данных с камеры (делая обратное перемежение bayer). У меня есть 8-битные входные изображения и 24-битные выходные изображения. Производительность, которую я архивирую на beagleboard DSP, работающем на ~ 350 МГц, составляет 144 миллиона пикселей в секунду. Это составляет примерно половину гигабайта обрабатываемых данных в секунду.

Получение DSP и компиляция программы приветствия не простая. Вы должны интегрировать драйвер ядра DSP (я использую DSPLINK). Вы должны научиться использовать (огромные) библиотеки взаимодействия DSP/ARM, как использовать инструментальную цепочку только для простого мира приветствия. Планируйте, по крайней мере, две недели.

Как только это работает, настоящая работа начинается с изучения того, как писать быстрый код для DSP, как управлять внутренней памятью, DMA, прерываниями и всеми подобными вещами.

В конце концов, это стоит того, потому что вы открываете невероятный быстрый DSP, который может легко превзойти Cortex-A8, если ему назначена правильная работа.Кроме того, вы получаете доступ к сопроцессорам изображения, что еще более ускоряет вычисления. И тогда есть полный процессор ARM9, плотно связанный с DSP, который сидит там без дела и ждет, чтобы его использовали.

+0

Как интегрировать драйвер ядра DSP? не могли бы вы объяснить шаги –

+0

Пройдет полдня, чтобы выполнить всю интеграционную работу, если вы знаете, что делаете. Вы не можете просто объяснить все эти шаги в параграфе или двух. –

1

Модель программирования на гетерогенной платформе, такой как плата бигла, обычно предназначена для выгрузки вычислительной части вашего приложения из GPP (ARM) в DSP. Вам понадобится драйвер ядра dsp и компилятор для c64x. Для получения дополнительной информации посмотрите на DSP BIOS руководство по программированию: http://omappedia.org/wiki/DSPBridge_Project

Если вы не рассматривали это уже, я бы рекомендовал давать NEON на Cortex A8 попробовать для вашего алгоритма обработки изображений и посмотреть, какой прирост производительности вы получите , Это достаточно просто, чтобы программировать на C без использования драйвера/компилятора DSP.

3

Да, вы можете, но если это не часть this OpenCV port project, вам придется реализовать алгоритм самостоятельно.

DSP BeagleBoard должен быть достаточно мощным, чтобы размеры изображений были не слишком большими (320x240, может быть, 640x480), но вам нужно иметь дело с арифметикой с фиксированной точкой и т. Д. В вашей реализации, если вы хотите оптимальную пропускную способность.

EDIT: Почему неподвижная точка

ТИ C6xxx DSP приехал в двух вариантах: меньшее число (C64xx) не имеют блок вычислений с плавающей точкой, в то время как более высокие числа (C67xx) есть. Это не похоже на настольные процессоры, такие как Intel.

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

+0

том, почему арифметике с фиксированной точкой, чтобы иметь оптимальную пропускную способность? –

0

Не применимо к устройствам ARM, но для людей, приземляющихся здесь после поиска «DSP» и «OpenCV», для высокой производительности на серверах на базе x86 хорошим выбором является серия процессоров TI c66x, которая имеет как 32-битные фиксированные, так и с плавающей запятой. OpenCV была портирована на c66x акселераторы и работает без проблем:

http://processors.wiki.ti.com/index.php/C66x_opencv