Für welche Art von Anwendungen kann ich DSP-Core von Beagleboard verwenden? Kann ich die DSP-Beschleunigung für den Hintergrundsubtraktionsalgorithmus in OpenCV verwenden?Für welche Art von Anwendungen kann ich DSP-Core von Beagleboard verwenden? Kann ich die DSP-Beschleunigung für den Hintergrundsubtraktionsalgorithmus verwenden?
Antwort
Sie können den DSP für alle Arten von Berechnungen verwenden. Es ist eine Universal-CPU, die für DSP-Anwendungen optimiert ist. Also ja, selbst Fließkomma-Sachen werden funktionieren, auch wenn die Performance nicht großartig sein wird.
Der DSP leuchtet wirklich, wenn Sie Integer-Berechnungen über große Datenfelder durchführen. Hier kann der DSP leicht so schnell berechnet werden, dass die Zeit für die Übertragung von Daten von und zum Speicher zum Engpass wird.
Um Ihnen eine Figur zu geben, was möglich ist: Ich habe einen Algorithmus ausgeführt, der Daten von einer Kamera nachbearbeitet (macht das Bayer-Entschachteln). Ich habe 8-Bit-Eingangsbilder und 24-Bit-Ausgangsbilder. Die Performance, die ich auf dem Beagleboard-DSP bei ~ 350 MHz archiviere, beträgt 144 Millionen Pixel pro Sekunde. Das entspricht etwa einem halben Gigabyte verarbeiteter Daten pro Sekunde.
Die DSP zu starten und ein Hallo Weltprogramm zu kompilieren ist nicht einfach. Sie müssen einen DSP-Kernel-Treiber integrieren (ich verwende DSPLINK). Sie müssen lernen, wie Sie die (riesigen) DSP/ARM-Interop-Bibliotheken verwenden und wie Sie die Toolchain nur für eine einfache Hallo-Welt verwenden können. Plane mindestens zwei Wochen.
Sobald dies funktioniert, beginnt die eigentliche Arbeit mit lernen, wie man schnellen Code für den DSP schreibt, wie man die internen Speicher, DMA, Interrupts und all solche Sachen verwaltet.
Am Ende ist es es wert, weil Sie einen unglaublich schnellen DSP freischalten, der den Cortex-A8 leicht übertrifft, wenn er den richtigen Job zugewiesen bekommt.Darüber hinaus erhalten Sie Zugriff auf die Bild-Coprozessoren, mit denen Sie Berechnungen noch weiter ausführen können. Und dann ist eine komplette ARM9-CPU fest an den DSP gekoppelt, der dort im Leerlauf sitzt und darauf wartet, ebenfalls verwendet zu werden.
Das Programmiermodell in einer heterogenen Plattform wie Beagle Board ist in der Regel zum Auslagern der Computerteil Ihrer Anwendung von GPP (ARM) zu DSP. Sie benötigen einen dsp-Kernel-Treiber und -Compiler für c64x. Für Details haben einen Blick auf DSP BIOS Programmieranleitung: http://omappedia.org/wiki/DSPBridge_Project
Wenn Sie es nicht bereits in Betracht gezogen haben, würde ich empfehlen NEON auf Cortex A8 einen Versuch für Ihren Bildverarbeitungsalgorithmus geben und sehen, welche Art von Leistungssteigerung Sie erhalten . Dies ist ziemlich einfach in C zu programmieren, ohne dass ein DSP-Treiber/Compiler benötigt wird.
Ja, Sie können, aber wenn es nicht Teil von this OpenCV port project ist, müssen Sie den Algorithmus selbst implementieren.
Der DSP des BeagleBoard sollte leistungsfähig genug sein für Bildgrößen nicht zu groß (320x240, vielleicht 640x480), aber Sie müssen mit Festkommaarithmetik und so weiter in Ihrer Implementierung fertig werden, wenn Sie einen optimalen Durchsatz wünschen.
EDIT: Warum Punkt fest
Der TI C6xxx DSP gibt es in zwei Varianten: kleinere Zahlen (C64xx) Gleitkommaeinheit keine Hardware haben, während höhere Zahlen (C67xx) eine haben. Dies ist im Gegensatz zu Desktop-CPUs wie Intel.
Das BeagleBoard-xm enthält einen C64xx, der keine Fließkommaeinheit besitzt. Wenn Sie also eine mathematische Funktion aufrufen, die auf Gleitkommazahlen basiert, werden die Gleitkommaberechnungen vom Gerät emuliert, was langsam ist. Stattdessen wird der maximale Durchsatz erzielt, wenn Sie diese Operationen in der Festkommaarithmetik implementieren, da Sie native Operationen für Integertypen aufrufen.
warum arithmetics Fixpunkt einen optimalen Durchsatz haben? –
Nicht anwendbar für ARM-Geräte, aber für Leute, die hier nach Suche nach "DSP" und "OpenCV" landen, für hohe Leistung in x86-basierten Servern eine gute Wahl ist die TI c66x CPU-Serie, die sowohl 32-Bit- und Fließkomma-Anweisungen. OpenCV wurde c66x Beschleunigerkarten portiert und läuft ohne Probleme:
Wie kann ich einen DSP Kernal Treiber integrieren? Können Sie bitte die Schritte erklären –
Es dauert eine halbe Woche, um alle Integrationsarbeit zu tun, wenn Sie wissen, was Sie tun. Sie können nicht alle diese Schritte in einem oder zwei Paragraphen erklären. –