Forum: Digitale Signalverarbeitung / DSP / Machine Learning frei programierbare DSP-Plattform über den PC


von PC Freak (Gast)


Lesenswert?

Ich möchte mit einem PC schnelle Berechnungen machen und dazu Funktionen 
auf DSPs auslagern. Kennt einer eine Plattform, die man frei 
programmieren kann?

Ideal wäre eine PCI-System mit mehreren DSPs zum einstecken in den PC, 
optimal mehrere möglich.

Danke

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Das lohnt sich heutzutage nicht mehr, GPUs und CPUs sind schneller und 
billiger als DSPs.

von ... (Gast)


Lesenswert?

Als Stichwort möchte ich hier auf OpenCL verweisen:

https://de.wikipedia.org/wiki/OpenCL

Das ist für Berechnungen auf Grafikkarten gedacht.

von PC Freak (Gast)


Lesenswert?

Andreas S. schrieb:
> Das lohnt sich heutzutage nicht mehr, GPUs und CPUs sind schneller und
> billiger als DSPs.

Im professionellen Bereich werden aber Bildverarbeitungssysteme 
geliefert, die mehrere DSPs auf einer Karte haben. Die bringen sicher 
mehr, als eine CPU. Oder kennt jemand Karten mit mehreren CPUs drauf?

von Christian B. (casandro)


Lesenswert?

PC Freak schrieb:
> Im professionellen Bereich werden aber Bildverarbeitungssysteme
> geliefert, die mehrere DSPs auf einer Karte haben. Die bringen sicher
> mehr, als eine CPU. Oder kennt jemand Karten mit mehreren CPUs drauf?

Das liegt daran, dass solche professionellen Lösungen zum großen Teil 
aus einer Zeit stammen, als man spezielle DSP-Karten braucht. Da die 
selten verkauft werden ist es billiger einfach eine Spezialkarte mit 
DSPs mitzuliefern als die Software umzuschreiben.

DSPs hat man heute eher in Bereichen in dem man "mittlere" 
Rechenleistung braucht, da sind die manchmal deutlich billiger und 
stromsparender. Deshalb gibts die zum Beispiel in Mobiltelefonen. So ein 
kleines 20 Euro Telefon braucht halt relativ viel Rechenleistung 
(GSM-Codec und GSM Datenempfang) darf aber nicht viel kosten und muss 2 
Wochen mit einem kleinen billigen Akku durchhalten.

von Christian B. (casandro)


Lesenswert?

PC Freak schrieb:
> Oder kennt jemand Karten mit mehreren CPUs drauf?

Es gibt Mehrprozessorrechner. Zumindest in meiner Blase (bin 
Linuxnutzer) sind die sogar inzwischen längst üblich. Es gibt sogar 
preiswerte Mehrfachprozessoren welche mehrere Prozessorkerne in einem 
Gehäuse vereinen.

So als Einsteckkarte hat das relativ wenig Sinn, aber es gibt 
Hauptplatinen mit mehreren Sockeln:
http://www.heise.de/preisvergleich/supermicro-x9qri-f-mbd-x9qri-f-a819920.html?hloc=at&hloc=de

von Jojo S. (Gast)


Lesenswert?

PC Freak schrieb:
> Im professionellen Bereich werden aber Bildverarbeitungssysteme
> geliefert, die mehrere DSPs auf einer Karte haben.

Da nimmt man aber eher FPGAs, Silicon Software macht sowas zB. in ihren 
microEnable Framegrabbern.
IBM hatte mal eine Karte mit dem Cell Prozessor der auch in der PS3 drin 
ist, aber diese Entwicklung ist auch tot.

von Kai S. (kai1986)


Lesenswert?

Hallo,

eine halbwegs aktuelle CPU braucht ca. 900ps für eine 64-Bit 
Fließkommamultiplikation. LTSpice verwendet schon selbstmodifizierenden 
Code, um überhaupt schnell genug die Daten aus dem RAM beischaffen zu 
können für die CPU. Bis du DSPs oder FPGAs hast, die schneller sind und 
dann noch die entsprechend schnelle Schnittstelle dazu hast zahlst du 
deutlich mehr als für einen PC. Zudem verhalten sich selbst die kleinen 
i3 Dualcore Prozessoren durch Hyperthreading für einfach Operationen wie 
4-Kerner. Wenn deine Algorithmen halbwegs gut implementiert sind hast du 
da unglaubliche Rechenleistung zu Verfügung. Als Anhaltspunkt: Die 
Rechenleistung der Intel i-Serien liegen ungefähr auf dem 
Rechneleistungsniveau der schnellsten Supercomputer der 2000-2002er 
Jahre.

Gruß Kai

von Christian B. (casandro)


Lesenswert?

Jojo S. schrieb:
> Da nimmt man aber eher FPGAs, Silicon Software macht sowas zB. in ihren
> microEnable Framegrabbern.

Ja, aber auch da eher für die Schnittstellen. Normale PCs haben halt 
keine HD-SDI Schnittstelle. :) FPGAs sind billiger als Spezialchips und 
in vielen Fällen schnell genug.

von Jojo S. (Gast)


Lesenswert?

Christian B. schrieb:
> Ja, aber auch da eher für die Schnittstellen.

Nö, bei SiSo sind extra 'dickere' FPGAs drauf um da auch eigene Logik 
einzubauen. Dazu gibt es fertige Bibliotheken die über eine grafische 
Programmierung zusammengebaut werden, VisualApplets heisst es bei denen.
http://silicon.software/produkte/entwicklungssoftware/visual-applets/?lang=de

von Christian B. (casandro)


Lesenswert?

Also so wie die Seite ausschaut geht es denen wohl primär um den 
"Kopierschutz". Die Module funktionieren dann halt nur auf den FPGAs.

Ist auch ein tolles "Vendor Lock-In". :)

: Bearbeitet durch User
von Dr. No (Gast)


Lesenswert?


von J. S. (engineer) Benutzerseite


Lesenswert?

Kai S. schrieb:
> eine halbwegs aktuelle CPU braucht ca. 900ps für eine 64-Bit
Für EINE Operation und bei 8 Kernen sind es 8 Operationen pro 900ps. 
Macht 1 Operation / 100 ps.  In FPGAs rechen viele, bzw ALLE 
Recheneinheiten alle 5ns. Macht allein bei den DSPs eines Spartan über 
150/5s = 3 pro 100ps.

> LTSpice verwendet schon selbstmodifizierenden Code, um überhaupt schnell
> genug die Daten aus dem RAM beischaffen zu können für die CPU.
Das ist der entscheidende Satz, weil ...

Bandbreite aktueller DDR-Controller im PC (quad): 70 GB/s
Real netto nutzbar für bidirektionalen Betrieb: 20 GB/s

Bandbreite 150 Block RAMs im FPGA: 240 GB/s
Real nutzbar bei 2x voll Dualportzugriff: 960 GB/s

> Bis du DSPs oder FPGAs hast, die schneller sind und dann noch die
> entsprechend schnelle Schnittstelle dazu hast
Bis es einen PC gibt, der das kann, was ein Spartan an Rechenleistung 
hat, muss man noch 50 Jahre warten, oder heute 50 PCs nehmen.

: Bearbeitet durch User
von J. S. (engineer) Benutzerseite


Lesenswert?

PC Freak schrieb:
> Ideal wäre eine PCI-System mit mehreren DSPs zum einstecken in den PC,
> optimal mehrere möglich.

Was sollen die können? Audio? Video? SDR?

Früher war es so, dass man wegen langsamer PCs spezielle DSP-Karten 
gebaut hat, um die Rechenleistung hochzutreiben. Daher musste man, 
zunächst im Video- dann auch im Audio-Bereich diese Karten haben, um die 
Software schnell genug laufen lassen zu können.

Inzwischen hat es sich verschoben:

Bei Video gibt es die schnellen Grafikkarten, wo man spezielle Software 
braucht, um sie laufen lassen zu können. GPU ist zwar absolut nicht sehr 
effektiv, weil es auch dort einen Flaschenhals gibt, aber sie sind so 
billig, dass es ökonomisch ist. Videorenderkarten findet man nur noch 
bei Speziellen Anwendungen und die sind aus entwicklungstechnischen 
Gründen heute eben FPGA-basiert.

Beim Audio ist es bisweilen so, dass man besagte Karten haben muss, um 
die Software überhaupt laufen lassen zu können. Da ist die SW oft 
Mittel zum Vertrieb der Karten. Frei programmierbares gibt es da wenig 
bis nichts.

: Bearbeitet durch User
von Martin K. (mkmannheim) Benutzerseite


Lesenswert?

Ich komme von hier her und hänge mich mal hier dran:
Beitrag "Re: high speed Video-Experimental-System"

Ich suche auch sowas, was man mit dem PC kombinieren kann und 
entsprechende Funktionen bietet. Mit Grafikkartenprogrammierung kenne 
ich mich einigermaßen aus. In meinem Fall geht es um das schnelle, 
echtzeitfähige Zeichnen von 3D-Figuren im 2-dimensionalen mit 
anschließendem Mischen und Weiterverarbeitung.

Jürgen S. schrieb:
> Videorenderkarten findet man nur noch
> bei Speziellen Anwendungen und die sind aus entwicklungstechnischen
> Gründen heute eben FPGA-basiert.
Hättest Du da vielleicht einen Tipp?

von T.U.Darmstadt (Gast)


Lesenswert?

Andreas S. schrieb:
> Das lohnt sich heutzutage nicht mehr, GPUs und CPUs sind schneller und
> billiger als DSPs.
Bis zu einer gewissen Größe des Endgerätes einerseits und des 
Funktionsumfangs andererseits, sind PCs und Grafikarten zu groß und zu 
teuer.

Ich habe mal an der Entwicklung eines Schachcomputers mitgewirkt und von 
der Performance war das zwar auf einer PC-Plattform zu machen, aber wer 
will einen Einplatinencomputer nutzen?  Heute bei den tablet-PCs ist es 
was anderes, aber die fressen halt auch Strom.

Portierbar, Klein, Effektiv, Kostensparend : Signalprozessor

PC vorhanden, nutzbar, Größe egal, Strom Egal : CPU + Grafikkarte

Leistung am Maximum, Strom komplett egal, : FPGA / HPC.

Ich würde mich mal im Bereich HPC umschauen. Ich war selbst schon in die 
Entwicklung solcher Systeme involviert. Dort werden meistens mehrere 
Subsysteme parallel geschaltet, um genügend parallele Leistung zu haben. 
Im Falle von PCs ist das vor allem PCI-Power. Wie oben schon erwähnt 
gibt es da eine Reihe unterschiedlicher Lösungen z.T. mit und ohne 
Grafikkarten.

Es gibt auch eine Reihe anderer Ansätze, Grafikchips mit FPGAs zu 
verknüpfen, um die Beschränkungen von PCs als Plattform zu umgehen.

Alles eine Frage der Ansprüche.

von Kontroller (Gast)


Lesenswert?

Thomas U. schrieb:
> Alles eine Frage der Ansprüche.

Und des Geldbeutels ;-)

von T.U.Darmstadt (Gast)


Lesenswert?

Wenn man es selber entwickelt, geht es noch. Man hat eben den Invest an 
Zeit, bringt aber auch Knowhow. Beim Aufbauen von Prototypen kommt man 
halt schnell in das Thema Lieferbarkeit: Manche Chips kriegst Du nur im 
100er Pack. Und manche kriegst Du gar nicht. Ich habe schon etliche 
Sachen verlangsamt in Software oder im FPGA machen müssen.

Aber klar: Die Einzelchips und Subsysteme sind in kleinen Stückzahlen 
dann halt richtig teuer. Man muss unbedingt einen Kunden haben, der 
einem das Ganze gegenfinanziert.

Mein letztes Projekt war ein kombiniertes System aus einer 
FPGA-Plattform als Datengewinner und CUDA als Verarbeiter. Kopplung per 
Ethernet und UDP. Wenn man das auf einer Platine hätte, also nur die 
Rechenleistung der Chips, hätte man ein Tausendfaches der Bandbreite und 
wesentlich weniger Verzögerung. Vor allem könnte man mehr in die 
Grafikchips auslagern, statt es im PC zu machen oder im FPGA 
vorwegzunehmen.

Dumm ist auch, dass du an die CUDA-Chips einzeln nicht rankommst. Man 
muss immer über die Karte gehen. Aber einer meiner Kunden ist dran, eine 
Plattform zu entwickeln, wo auf einem Board zwei FPGAs und ein 
Steckplatz für eine GPU sitzen und der FPGA die Karte direkt antreibt.

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.