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
Hallo, wenn du dich mit Blackfin aus kennst, warum implementierstu das ganze nicht mit Fraktion (oder Festkomma).
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
Oh, ich glaube, ich habe das Fraction-Format doch verstanden. Ich werde es dann mal mit dem Blackfin probieren, denke ich. Gruss, Joern
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.