FLOPS pro Zyklus für sandy-bridge und haswell SSE2/AVX/AVX2
Ich bin verwirrt, wie viele flops pro Takt pro Kern kann getan werden, mit Sandy-Bridge und Haswell.
Wie ich es verstehe, mit SSE-es sollte 4 flops pro Takt pro Kern für SSE und 8 flops pro Takt pro Kern für AVX/AVX2.
Scheint dies bestätigt zu werden hier,
Wie kann ich erreichen das theoretische maximum von 4 FLOPs pro Zyklus?
und hier,
Sandy-Bridge-CPU Spezifikation.
Aber der link scheint zu zeigen, dass Sandy-bridge und do 16-flops pro Takt pro core und Haswell 32 flops pro Takt pro Kern
http://www.extremetech.com/computing/136219-intels-haswell-is-an-unprecedented-threat-to-nvidia-amd.
Kann mir das jemand erklären?
Bearbeiten:
Jetzt verstehe ich warum ich verwirrt war. Ich dachte, der Begriff FLOP bezeichnet nur die single floating point (SP). Ich sehe jetzt, dass der test bei Wie kann ich erreichen das theoretische maximum von 4 FLOPs pro Zyklus? sind eigentlich auf double floating point (DP), so dass Sie erreichen 4 DP-FLOPs/cycle bei SSE-und 8-DP-FLOPs/Zyklus für AVX. Es wäre interessant, zu wiederholen diesen test auf SP.
Ich habe konvertiert den code SP so gut wie ich verstehen, und es kompiliert mit Visual Studio 2012. Allerdings sehe ich keinen Unterschied in der Geschwindigkeit und der Summe meldet einen Fehler, so dass ich wahrscheinlich ändern müssen, einige mehr code. Ich werde zurück zu kommen.
Sie müssen doppelt zahlen, da der Zähler wird vorausgesetzt, DP. (Änderung:
48 * 1000 * iterations * tds * 2
zu 48 * 1000 * iterations * tds * 4
) Darüber hinaus müssen Sie ändern die renormierung Maske arbeiten am SP: uint64 iMASK = 0x800fffffffffffffull;
4 durch vier SP Schwimmern pro SSE-register. Nochmals vielen Dank. Ich habe auch die renormierung mask, unsigned int iMASK = 0x80fffffu. Jetzt funktioniert es und ich bekomme zweimal, wie Sie sagten.
InformationsquelleAutor | 2013-03-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier sind FLOPs zählt eine Reihe neuer Prozessor microarchitectures und Erklärung, wie Sie zu erreichen sind:
Intel Core 2 und Nehalem:
Intel Sandy Bridge/Ivy Bridge:
Intel Haswell/Broadwell/Skylake/Kaby Lake:
AMD K10:
AMD Bulldozer/Piledriver/Steamroller/Excavator, - pro Modul (zwei Kerne):
AMD Ryzen
Intel Atom (Bonnell/45nm, Saltwell/32nm, Silvermont/22nm):
AMD Bobcat:
AMD Jaguar:
ARM Cortex-A9:
ARM Cortex-A15:
Qualcomm Krait:
IBM PowerPC A2 (Blue Gene/Q), der pro Kern:
IBM PowerPC A2 (Blue Gene/Q), pro thread:
Intel Xeon Phi (Knights Corner), pro Kern:
Intel Xeon Phi (Knights Corner), pro thread:
Intel Xeon Phi (Knights Landing), pro Kern:
Der Grund warum es pro thread und pro-core datum für IBM Blue Gene/Q-und Intel Xeon Phi (Knights Corner) ist, dass diese Kerne haben eine höhere instruction issue rate, wenn mit mehr als einem thread pro Kern.
Cortex-M0 und M3 gar nicht haben, FPUs, so dass Sie null-FLOPs/Zyklus. Auch auf M4 FPU ist optional. Cortex-A8-2 SP-FLOPs/Zyklus mit NEON. Double-precision ... naja, VFP
Sie sind pro-Modul
Es würde hilfreich sein, mit einigen Referenzen oder Erläuterung, wie diese Informationen zu erhalten.
Skylake-X kommt in Konfigurationen mit entweder 1 oder 2 AVX512 FMA-Einheiten... software.intel.com/en-us/forums/intel-isa-extensions/topic/...
InformationsquelleAutor
Den Durchsatz für Haswell ist niedriger neben als für die Multiplikation und die FMA. Es gibt zwei Multiplikation/FMA-Einheiten, aber nur eine f.p. hinzufügen Einheit. Wenn Ihr code enthält vor allem Ergänzungen haben, dann müssen Sie ersetzen die Ergänzungen durch die FMA Anweisungen mit einem Multiplikator von 1.0 um den maximalen Durchsatz.
Die Latenz der FMA Anweisungen auf Haswell ist 5 und der Datendurchsatz ist 2 pro Takt. Dies bedeutet, dass Sie müssen halten 10 parallele arbeiten gehen, um den maximalen Durchsatz. Wenn, zum Beispiel, die Sie hinzufügen möchten, eine sehr lange Liste von f.p. zahlen, würden Sie haben, um es zu teilen in zehn Teile und zehn Akku-Register.
Dies ist wohl möglich, aber wer würde eine so eigenartige Optimierung für einen bestimmten Prozessor?
vielleicht könnten Sie schreiben code, um dies zu zeigen? Abrollen 10 mal mit FMA gibt mir das beste Ergebnis. Siehe meine Antwort an stackoverflow.com/questions/21090873/...
Die meisten HPC-codes, compute-bound (d.h. flop-gebunden) eine Menge von FMA. In meiner Erfahrung, die Orte, wo man nicht viel hinzufügen, werden in der Bandbreite gebunden, so dass Sie mehr hinzufügen Durchsatz nicht helfen.
Die neueste Intel-generation hat einen ausgeglicheneren Durchsatz. Gleitkomma-addition, Multiplikation und die FMA alle haben einen Durchsatz von 2 Instruktionen pro clock-Zyklus und einer Latenzzeit von 4.
InformationsquelleAutor A Fog