Ich bin relativ neu bei CUDA und bin derzeit im Rahmen eines Projekts zur Beschleunigung von Computer-Vision-Anwendungen in eingebetteten Systemen mit angeschlossenen GPUs (NVIDIA TX1). Ich versuche, zwischen zwei Bibliotheken zu wählen: OpenCV und VisionWorks (einschließlich OpenVX).Wie interpretiere ich die NVIDIA Visual Profiler Analyse/Empfehlungen?
Derzeit habe ich Testcodes erstellt, um den Canny Edge Detection-Algorithmus auszuführen, und die beiden Bibliotheken zeigten unterschiedliche Ausführungszeiten (VisionWorks-Implementierung benötigt etwa 30 bis 40% weniger Zeit).
Also fragte ich mich, was der Grund sein könnte, und profilierte den Kernel, der am meisten Zeit in Anspruch nimmt: 'canny :: edgesHysteresisLocalKernel' von OpenCV4Tegra, das 37,2% der gesamten Anwendung belegt (sowohl von OpenCV als auch von VisionWorks-Implementierung) und 'edgesHysteresisLocal' von VisionWorks.
Ich folgte der "geführten Analyse" und der Profiler schlug vor, dass die Anwendungen beide Latenz gebunden sind, und unten sind die Aufnahmen von 'KantenHysteresisLocal' von VisionWorks und 'canny :: KantenHystereseLokalKernel' von OpenCV4Tegra.
OpenCV4Tegra - canny::edgesHysteresisLocalKernel
VisionWorks - edgesHysteresisLocal
Also, meine Frage ist,
aus der Analyse, was kann ich sagen, über die Ursachen der unterschiedlichen Leistungen?
Darüber hinaus, wenn Profil CUDA-Anwendungen im Allgemeinen, wo ist ein guter Punkt zu starten? Ich meine, es gibt eine Menge Metriken und es ist sehr schwer zu sagen, was zu sehen ist.
Gibt es Schulungsmaterialien zum Profilieren von CUDA-Anwendungen im Allgemeinen? (Habe ich mich viele Dias von NVIDIA, und ich denke, sie sind nur die Definitionen der Kennzahlen zu sagen, nicht, wo aus im Allgemeinen zu starten.)
- übrigens, soweit ich weiß, , NVIDIA stellt die Quellcodes von VisionWorks und OpenCV4Tegra nicht zur Verfügung. Korrigiere mich, wenn ich falsch liege.
Vielen Dank im Voraus für Ihre Antworten.
Ich glaube, du gemeint "Anzahl der geteilten Speicherbankkonflikte" – BlueWanderer
Schon die Zeit gemessen und die produzierten Ergebnisse verglichen und sie waren fast gleich. Es war nur, dass ich mich fragte, was den Unterschied ausmacht, und wenn ich das kriegen könnte, könnte ich den Code schreiben Ich selbst, wo mehr Beschleunigung benötigt, ohne die Bibliotheken zu benutzen. Danke übrigens. –