Also wir wurden mit einer Aufgabe beauftragt, etwas Code zu kompilieren (wir sollen es als eine Blackbox behandeln), mit verschiedenen Intel Compiler Optimierungsflags (-O1 und O3) sowie Vektorisierung Flags (-xhost und -no-VEC) und zu beobachten, Veränderungen in:Compiler Optimierungen Wirkung auf FLOPs und L2/L3 Cache Miss Rate mit PAPI
- Ausführungszeit
- Gleitkommaoperationen (FPO)
- L2 und L3 Cache Miss Rate
Nach Durchführung dieser Optimierungen haben wir einen Rückgang der Ausführungszeit festgestellt, der zu erwarten war, unter Berücksichtigung aller Änderungen, die der Compiler aus Effizienzgründen an Ihrem Code vornimmt. Wir haben aber auch einen Rückgang der FPOs festgestellt, obwohl wir wissen, dass das eine gute Sache ist, sind wir uns nicht sicher, warum das passiert ist. Außerdem haben wir eine Erhöhung der L2-Cache-Miss-Rate bemerkt (und können sie nicht erklären) (mit steigendem Optimierungslevel erhöht), aber keine signifikante Zunahme der Cache-Zugriffe und fast keine Änderungen auf dem L3-Level.
Die Verwendung von keinerlei Vektorisierung oder Optimierung ergab das beste Ergebnis in Bezug auf die L2-Cache-Miss-Rate, und wir haben uns gefragt, ob Sie uns ein paar Einsichten sowie unterstützte Dokumentation, Literatur und Ressourcen geben könnten um unser Wissen zu diesem Thema zu vertiefen.
Vielen Dank.
edit: Die Compiler-Optionen verwendet werden:
- O0 -no-vec (höchste Ausführungszeit, niedrigster L2 Cache Misses)
- O1 (weniger Ausführungszeit, Höheres L2 Cache Misses)
- O3 (Noch weniger Ausführungszeit, noch höhere L2 Cache Misses)
- xhost (gleiche Reihenfolge der O3 Ausführungszeit, höchste L2 Cache Misses)
Update:
Während die Gesamtanzahl der L2-Cache-Zugriffe gering ist, kommt es zu einem massiven Anstieg der tatsächlichen Fehler.
Mit -0O -no-vec
Wanduhr Zeit in usecs: 13.957.075
- L2 Cache-Misses: 207.460.564
- L2-Cache-Zugriffe: 1.476.540.355
- L2-Cache-Miss-Rate: 0,140504
- L3 Cache-Misses: 24.841.999
- L3-Cache-Zugriffe: 207460564
- L3-Cache-Fehlerrate: 0.119743
Mit -xhost
Wanduhr Zeit in usecs: 4.465.243
- L2 Cache-Misses: 547.305.377
- L2-Cache-Zugriffe: 1.051.949.467
- L2-Cache-Miss-Rate: 0,520277
- L3 Cache-Fehler: 86.919.153
- L3 cach e Zugänge: 547.305.377
- L3-Cache-Miss-Rate: 0,158813
Können Sie uns den Compiler und * alle * die Optionen übergeben? Was hast du bisher auch gedacht? – edmz
Haben Sie sich den generierten Assembler-Code angesehen (d. H. Mit 'gcc -Wall -fverbose-asm -S 'und Optimierungs-Flags)? –
Sie können den Quellcode des Compilers anzeigen. –