2010-11-26 12 views
1

Wir überprüfen, wie schnell ein Algorithmus läuft, der auf dem FPGA vs Normal Quad x86 Computer läuft.FPGA misst genaue Zeiten

Jetzt bei der x86 führen wir den Algorithmus viele Male, und nehmen Sie einen Median, um OS Overhead zu beseitigen, auch dies "reinigt" die Kurve von Fehlern. Das ist nicht das Problem.

Die Maßnahme im FPGA-Algorithmus in Zyklen und dann die Zyklen zu Zeit in Anspruch nehmen, mit der FSMD trivial ist ohnehin Zyklen zu zählen ...

Wir denken, dass Zählzyklen Auch das ist „rein“ zu messen und Dies könnte theoretisch gemacht werden, und Sie müssen keine echte Maßnahme oder den Algorithmus im realen FPGA ausführen.

Ich möchte wissen, gibt es ein Papier oder eine Idee, um eine Echtzeitmessung zu tun.

Antwort

4

Wenn Sie versuchen, festzustellen, dass Ihre FPGA-Implementierung konkurrenzfähig oder überlegen ist und daher in der realen Welt nützlich sein könnte, dann empfehle ich Ihnen, ** Wanduhrzeiten ** auf der Multiprozessor- gegenüber der FPGA-Implementierung zu vergleichen . Dies wird auch dazu beitragen, dass Sie Leistungseffekte, die über den FSM + -Datenpfad hinausgehen (wie z. B. E/A-Verzögerungen), nicht übersehen.

Ich stimme zu, dass Berichtszyklus zählt nur ist nicht repräsentativ, weil die FPGA-Zykluszeit 10X von Standard-Mikroprozessoren sein kann.

Jetzt für einige zusätzliche unaufgeforderte Beratung. Ich war auf zahlreichen FCCM-Konferenzen und ähnlichem und habe viele Dutzend Vergleiche zu FPGA-Implementierungen und CPU-Implementierungsleistungen gehört. Viel zu oft vergleicht ein Papier eine benutzerdefinierte FPGA-Implementierung, die Monate dauerte, gegenüber einer CPU + Software-Implementierung, bei der der Entwickler den Benchmark-Quellcode einfach aus dem Regal genommen, kompiliert und an einem Nachmittag ausgeführt hat. Solche Präsentationen finde ich nicht besonders überzeugend.

Ein fairer Vergleich würde eine Softwareimplementierung bewerten, die Best Practices verwendet, die besten verfügbaren Bibliotheken (z. B. Intel MKL oder IPP), die Multithreading über mehrere Kerne verwendeten, die Vektor-SIMD (z. B. SSE, AVX, ...) verwendeten von skalaren Berechnungen, die Tools wie Profiler verwendeten, um leicht zu beseitigende Verschwendung zu eliminieren und wie Vtune die Cache + Speicherhierarchie zu verstehen und abzustimmen. Bitte stellen Sie sicher, dass Sie die tatsächliche Menge an Engineering-Zeit, die für das FPGA ausgegeben wurde, im Vergleich zu den Software-Implementierungen angeben.

Mehr kostenlose Beratung: In diesen energieorientierten Zeiten, in denen Ergebnisse/Joule Ergebnisse trumpfen können/zweit, sollten Sie auch die Energieeffizienz Ihrer Implementierungen angeben.

Mehr kostenlose Tipp: Um die meisten wiederholbaren Zeiten auf dem "Quad x86" zu bekommen, sicher sein, die Maschine stillzulegen, Hintergrundprozessoren, Daemons, Dienste usw. herunterzufahren, trennen Sie das Netzwerk.

Happy hacken!