Ich habe meine Magnetfeldberechnung auf einen Auftrag hin per CUDA auf die Grafikkarte ausgelagert und wollte mal kurz darüber berichten, da ja auch andere in dieser Newsgroup teilweise viel Rechenleistung für elektronische Aufgaben brauchen: Ein Test läuft auf einem Intel Quad Core (allerdings nur auf einem Core laufend) mit 2,4 GHz in ca. 230 Sekunden durch, auf einer NVIDIA 8800 GTX braucht es rund 2 Sekunden und auf einer NVIDIA 8600 GT rund 10 Sekunden, wobei der C-Source für die Grafikkarte fast identisch ist, nur ein paar unnötige Branches sind wegoptimiert (z.B. Division durch
0 wird nicht getestet, da die Grafikkarte das einfach ignoriert und Infinity zurückgibt). Man kann da ganz normal in C programmieren, mit ein paar wenigen Erweiterungen z.B. Threadsynchronisierung oder Abfrage der Thread- und Block Id, um jeweils einen passenden Teilbereich eines Arrays abzuarbeiten. Die Integration von CUDA in Visual Studio ist sehr gut, wenn man erstmal der IDE per Registry-Key beibebracht hat, daß jetzt auch .cu-Dateien wie C++ per Syntax-Highlighting dargestellt werden sollen :-)Welche Aufgaben könnte man noch leicht paralellisieren? Wäre das auch was für Spice-Berechnungen oder Leiterbahnrouting? GNU Radio scheint ja bereits einiges in dieser Richtung zu machen.