Ich versuche herauszufinden, ob ein bestimmtes Problem ein guter Kandidat für die Verwendung von CUDA ist, um das Problem auf einen Grafikprozessor zu übertragen.
Ich tue im Wesentlichen eine Box-Filter, die auf einige Kante Erkennung basiert ändert. So gibt es im Grunde 8 Fälle, die für jedes Pixel getestet werden, und dann der Rest der Operationen passieren - typische mittlere Berechnungen und so. Ist das Vorhandensein dieser switch-Anweisungen in meiner Schleife gehen, um dieses Problem ein schlechter Kandidat zu gehen, um GPU verursachen?
Ich bin mir nicht sicher, wie man die Switch-Anweisungen vermeiden kann, da die Kantenerkennung bei jedem Pixel erfolgen muss. Ich nehme an, das gesamte Bild könnte die Kantenerkennung Teil aus der Verarbeitung Algorithmus aufgeteilt haben, und Sie könnten einen Puffer entsprechend, welche Filter für jedes Pixel zu verwenden speichern, aber das scheint, wie es eine Menge von Vorverarbeitung zum Algorithmus hinzufügen würde.
Bearbeiten: Nur um etwas Kontext zu geben - dieser Algorithmus ist bereits geschrieben, und OpenMP wurde verwendet, um ziemlich gute Wirkung bei der Beschleunigung es. Allerdings verblassen die 8 Kerne auf meinem Entwicklungsrechner im Vergleich zu den 512 Kernen der GPU.