Forum: Digitale Signalverarbeitung / DSP / Machine Learning Floating Point mit dem TMS320C6726B?


von Joern (Gast)


Lesenswert?

Moin,

ich moechte eine embedded Bildverarbeitungsanwendung entwickeln, die 
eine Menge Floating Point-Operationen benoetigt. Konkret geht es um die 
Bestimmung einer Homograhpie mit Hilfe eines Gradientensuchverfahrens. 
Das laeuft in Matlab sehr schoen und fuehrt mit wirklich wenigen 
Approximationsschritten zu vernuenftigen Ergebnissen. Allerdings bedarf 
es fuer jeden Approximationsschritt der Bestimmung eines 
Fehlerfunktionals und dessen Gradienten, was jeweils auf ungefaehr 6000 
Floating Point-Operationen sind. Bei zwanzig Approximationsschritten 
sind das 120k FLOPs.
Ist es realistisch, mindestens 40 solcher Homograhien (liefe dann auf 
4,8MFLOPs hinaus) mit dem TMS320C6726B pro Sekunde zu berechnen 
(immerhin ruehmt sich TI ja 2100MFLOPs mit dem zu schaffen)?
Und wie schwierig ist die Einarbeitung in diesen DSP? Bislang habe ich 
nur mit dem Blackfin gearbeitet und der ist ja super dokumentiert und 
hat eine grosse Bastlergemeinde. Gibt es vergleichbares fuer den 
TMS320C6726B? (Wie zum Beispiel einen GNU-Compiler)
Alternativ hatte ich schon daran gedacht, das ganze auf einem FPGA zu 
loesen, habe aber das Gefuehl, dass das eher unangenehmer wuerde, als 
eine nette Umsetzung in C.

Danke, Joern

von Xion (Gast)


Lesenswert?

Hallo,
wenn du dich mit Blackfin aus kennst, warum implementierstu das ganze 
nicht mit Fraktion (oder Festkomma).

von Joern (Gast)


Lesenswert?

Das ganze erfordert erheblichen Rechenaufwand, der TI-DSP bietet da 
einfach deutlich mehr Berechnungen pro Zeiteinheit. Auch bin ich mir 
ueber den benoetigten Dynamikbereich nicht sicher, so dass ich im 
Zweifel mit einem Floating-point Prozessor besser fuehre.
Andererseits habe ich tatsaechlich schon drueber nachgedacht, das ganze 
mal Testweise auf dem Blackfin zu betreiben. Da ich aber das 
Fraction-Format nicht so ganz optimal verstanden habe, habe ich mich da 
noch nicht ran getraut.
Sind die Fractions im Compiler eigene Datentypen oder programmiert man 
einfach weiter mit Integers und deuted die nur anders? In der 
Programming-Reference waren Beispiele fuer 16bit, die definitiv nicht 
fuer meine Belange ausreichen, gibt es auch einen 1.31, 2.30 Typ?

Gruss, Joern

von Joern (Gast)


Lesenswert?

Oh, ich glaube, ich habe das Fraction-Format doch verstanden. Ich werde 
es dann mal mit dem Blackfin probieren, denke ich.

Gruss, Joern

von Xion (Gast)


Lesenswert?

na shon probiert, da sind Biblotheken (libs). Ich hab vor lange Zeit 
damit gearbeitet aber das reicht locker für deine Anwendung der Blackfin 
ist nicht schlecht shau dir mal die Benchmarks. Vergleich mal die 
Anwendungen mit deinem Anwendung das sind Welten. Also meine Meinung ist 
es reicht dicke.

von Joern (Gast)


Lesenswert?

Nein, leider bin ich noch nicht dazu gekommen, es zu testen, weil ich 
die Hardware hier nicht herumliegen habe und ich im Moment noch ziemlich 
mit Klausuren beschaeftigt bin.
Das Datenblatt sieht aber verdaechtig danach aus, als seien es im 
Wesentlichen 16 bit Fixed points. Mein Problem damit ist, dass ich einen 
Zahlenbereich bis mindestens +-640 abdecken muss mit einer 
Mindestaufloesung von 1*10^-4, besser mehr. Das waere locker mit 32 bit 
fixed point zu machen, nicht aber mit 16 bit. Habe ich es falsch 
gelesen, oder unterstuetzt der tatsaechlich nur ein 16 bit fixed point 
Format oder 32bit nur mit signifikantem Geschwindigkeitsverlust?
Es waere natuerlich ein absoluter Obertraum, wenn der Blackfin das 
machen koennte, das ersparte mir die Einarbeitung in einen weiteren 
Prozessor.

Gruss, Joern

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Für 4.8 MFLOPS (single oder double precision?) braucht man ja noch nicht 
wirklich einen DSP. Ich würde mich mal in Richtung ARM mit FPU 
umschauen, z.B. BeagleBoard
(Beitrag "Neu im Shop: BeagleBoard (1200 MIPS ARM Cortex M8, TMS320C64x+ DSP)").
Und wenn doch mal etwas mehr Leistung nötig ist hat das auch einen 
(fixed point) C6000-DSP an Bord.

von Joern (Gast)


Lesenswert?

Naja, im Zweifel ginge es darum ein neues Board aufzubauen und da wuerde 
ich wahrscheinlich eher eines mit ordentlich Leistungsreserven mit nem 
DSP aufbauen als einen General Purpose Prozessor wie den ARM zu 
verwenden, wenngleich fuer den die grosse Unterstuetzung durch 
verschiedene Tools spricht.
Da ich bereits ein Blackfin-Board aufgebaut und schon ein bisschen 
Erfahrung mit dessen Programmierung gesammelt habe, bin ich jetzt eher 
an einer moeglichen Loesung mit einem Blackfin interessiert.
Dazu auch gleich ein paar Fragen: Gefunden habe ich fract_math.h, 
welches eine Reihe (hoffentlich optimierter) Fractional-Funktionen 
bietet. Sind das 1.15 bzw. 1.31 fractions? Ist die Multiplikation zweier 
1.31 fractions wieder eine 1.31 fraction, wird also das MSB verworfen? 
Und wieviele Mega Fixed Point Operations schafft die Bibliothek auf 
einem 400MHz Blackfin? Ich hatte zwar einen Bedarf von ungefaehr 4.5 
MFLOPs angegeben, allerdings hat der Algorithmus noch einen deutlichen 
Overhead fuer die Bereitstellung der Punktkorrespondenzen, aus denen die 
Homographien berechnet werden sollen.
Und wie ists mit einer Linearen Algebra-Bibliothek, die auf fract_math 
aufsetzt, gibt es da was optimiertes?

Gruss, Joern

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.