Bei der Messung eines Algorithmus, wenn Divisionsoperationen vorliegen, wie berechnet man die Gesamtzahl der FOP- und Gleitkomma-Performance? Zum Beispiel, n2 Matrixmultiplikation, die Berechnung von n3 * 2flops (eine Multiplikation, eine Addition), unter der Annahme, dass unter Verwendung des gleichen Datensatzes n2, Multiplikationsoperationen der Matrixmultiplikation in die Divisionsoperationen ändern, wie zu berechnen Flops. Ist es das gleiche mit dem Ergebnis der Matrixmultiplikation?Wie berechnet man die Gesamtzahl der FOP- und Gleitkomma-Performance von Sonderoperationen (exp sin sqrt)?
Antwort
Leider gibt es keinen Standard, der angibt, was eine Fließkommaoperation ist.
Dies ist aufgrund der Tatsache, dass verschiedene Architekturen native Unterstützung für eine andere Reihe von Operationen haben können.
So zum Beispiel Architektur A Mai unterstützt die alle vier Grundoperationen, A nur die Zugabe und A alle grundlegenden Operationen und Exponentiation.
Im Allgemeinen ist der Begriff Fließkommaoperationen stark kontextualisiert und an eine bestimmte Maschine gebunden.
Sie können jedoch eine gute maschinenunabhängige Analyse durchführen, indem Sie jede Art von Operation separat zählen.
Dies erfordert ein wenig Erfahrung und Voodoo, zum Beispiel Addition und Subtraktion werden zusammen gezählt, weil sie im Grunde die gleiche Operation für die Hardware sind.
Multiplikationen und Divisionen werden getrennt gezählt, wie komplexere Operationen (Exponentiation, trigonometrische Funktionen usw.).
Am Ende haben Sie eine Zählung für alle verschiedenen Operationen.
beispielsweise eine n × m Matrix durch eine m × k eines beinhaltet n · k · m Multiplikationen und n · k · (m multipliziert -1) Ergänzungen. so ist das Ergebnis n· k ·m MUL + n · k · ( m -1) dazu.
Aus diesem "Full-Information" -Ausdruck, der normalerweise ein gutes Ergebnis ist, können Sie eine Näherung der Anzahl der "Fließkommaoperationen" erhalten, indem Sie eine Referenzmaschine und die Maßeinheit aufnehmen.
Zum Beispiel der Skylake Mikroarchitektur von Intel hat diese sehr vereinfacht timings table:
Operation Cycles
Addition 0.5
Subtraction 0.5
Division 3
Multiplication 0.5
Wenn wir die Addition als Maßeinheit für einen FLOP nehmen, können wir sagen, dass eine Abteilung so lange ist wie 6 Zusätze, so ist es wie 6 FLOPs.
Operation FLOPs
Addition 1 (By definition)
Subtraction 1
Division 6
Multiplication 1
So das Beispiel reduziert die oben n · k · (2 · m-1), da Multiplikation und Addition alle nehmen nur 1 FLOP abzuschließen.
Dies ist eine vereinfachte Ansicht, echte Maschinen sind viel komplizierter (zum Beispiel Skylake hat Vektor-Einheiten und FMA Unterstützung, die die Maßeinheit und die Zeiten ändern kann).
Wie auch immer, der Ausdruck in Bezug auf die verschiedenen Arten von Operationen ist maschinenunabhängig und kann später in eine einzelne Zahl umgewandelt werden, wenn ein spezieller Fall ausgeführt wird.
- 1. Wie berechnet man sin inverse (arcsin) in VHDL?
- 2. Numerical Abwägungen zwischen 1/sqrt (x) und std :: exp (-0,5 * std :: log (x))
- 3. Erste Fehler mit exp, sin, cos-Funktionen in tensorflow
- 4. Konvertieren von Sqrt und Exp im Ergebnis von Buchstaben zu Symbolen in Matlab
- 5. Wie berechnet man die Summe der Kombinatorik?
- 6. Wie berechnet man einen gewichteten Durchschnitt in R mit Vektoren der Populationsgrößen, Proportionen und Fehler
- 7. Wie berechnet man die Inhaltshöhe von WKWebView?
- 8. Wie berechnet man die Gesamtzahl aller möglichen eindeutigen Teilmengen aus einem Satz mit Wiederholungen?
- 9. Wie berechnet man die Zeit?
- 10. Wie berechnet man die Schriftbreite?
- 11. Wie berechnet man Zylinder "top" Kreismitte, angesichts der Drehwinkel?
- 12. Zähle die Gesamtzahl der Kanten im Binärbaum
- 13. Wie berechnet man die Durchschnittsnote der Werte von einem Array?
- 14. Wie fasst man die Gesamtzahl der Zählungen zusammen? MySQL
- 15. Wie berechnet man LD50 von einem glmer?
- 16. Wie berechnet man die Anzahl der Partitionen von n?
- 17. Wie berechnet man die Anzahl der Parameter von AlexNet?
- 18. Wie berechnet man die Flugbahn eines Geschosses in Unity2D?
- 19. Wie berechnet man den Codeabdeckungsprozentsatz für die Pfadabdeckung manuell?
- 20. wie man sqrt in sqlite nimmt
- 21. berechnet Wert der symbolischen Gleichung in MATLAB
- 22. Wie kann ich die Gesamtzahl der Elemente in ReCharts anzeigen?
- 23. Wie erhält man die Gesamtzahl der sich nicht wiederholenden Teilstrings?
- 24. Wie berechnet man die Anzahl der Minutenschritte zwischen der Zeit
- 25. Ermittelt die Gesamtzahl der Drucker von printserver
- 26. Wie setzt man die globale Schriftfamilie in Apache FOP?
- 27. Wie man sqrt Ausdrücke in sympy
- 28. Der Gradient von Sin (x)^4 ist nicht gleich, wenn er aus seiner Ableitung berechnet wird
- 29. cuComplex.h und exp()
- 30. Wie die Anzahl der Partitionen und die Anzahl der gleichzeitigen Aufgaben in Spark berechnet