Frage

Ich schrieb dieses kleine Unterprogramm, die einfache Vektor mathematische Funktionen vergleicht, erfolgen entweder mit einer Schleife:

f(i) = a(i) + b(i)

oder direkt:

f = a + b

oder mit Intel MKL VML:

vdAdd (n, a, b, f)

Die Zeitergebnisse für n = 50000000 sind:

VML 0,9 sec direkt 0,4 loop 0,4

Und ich verstehe nicht, warum VML doppelt so lang wie die anderen Methoden nimmt! (Loop ist manchmal schneller als direkt)

Unterprogramm kann unter http://paste.ideaslabs.com/show/L6dVLdAOIf finden und rief über

program test

  use vmltests
  implicit none

  call vmlTest()

end program
War es hilfreich?

Lösung

Ihr Beispielcode Potential L2-Cache-Problem hat, kann man sie überwindet mit der Optimierung zu blockieren. Siehe Intel® Software Networks Forum Antwort für Details: http: // Software .intel.com / en-us / Foren / showthread.php? t = 80041

Intel® Optimierung Hinweis:

Intel® Compiler, assoziiert Bibliotheken und die damit verbundene Entwicklungstools können umfassen oder nutzen Optionen, dass optimize für Befehlssätze, die sowohl in Intel® und Nicht-Intel Mikroprozessoren (zum Beispiel SIMD Befehlssätze), aber nicht optimize ebenso für Nicht-Intel-Mikroprozessoren. Darüber hinaus können bestimmte Compiler-Optionen für Intel Compiler, darunter auch einige die sind nicht spezifisch für Intel Mikro-Architektur, sind reserviert für Intel-Mikroprozessoren. Für eine detaillierte Beschreibung der Intel Compiler-Optionen, einschließlich der Befehlssätze und spezifische Mikroprozessoren sie implicate, finden Sie in der „Intel® Compiler Benutzer- und Referenzhandbücher“ unter „Compiler-Optionen.“ Viele Bibliotheksroutinen, die ein Teil sind von Intel® Compiler-Produkte sind mehr hoch für Intel optimiert Mikroprozessoren als für andere Mikroprozessoren. Während die Compiler und Bibliotheken in Intel® Compiler Produkte bieten Optimierungen für beide Intel und Intel-kompatibel Mikroprozessoren, abhängig von der Optionen, die Sie auswählen, Ihren Code und andere Faktoren, werden Sie wahrscheinlich erhalten zusätzliche Leistung für Intel Mikroprozessoren.

Intel® Compiler, assoziiert Bibliotheken und die damit verbundene Entwicklungstools können oder nicht in gleichem Maße optimieren für Nicht-Intel-Mikroprozessoren für Optimierungen, die nicht eindeutig zuzuordnen sind Intel-Mikroprozessoren. Diese Optimierungen gehören Intel® Streaming SIMD Extensions 2 (Intel® SSE2), Intel® Streaming SIMD Extensions 3 (Intel® SSE3) und Supplemental Streaming SIMD Extensions 3 (Intel® SSSE3) Befehlssätze und andere Optimierungen. Intel nicht Garantie für die Verfügbarkeit, Funktionalität oder Wirksamkeit jeglicher Optimierung auf Mikroprozessoren nicht hergestellt von Intel. Mikroprozessor-abhängige Optimierungen in diesem Produkt sind zur bestimmungsgemäßen Verwendung mit Intel-Mikroprozessoren.

Während Intel glaubt, unsere Compiler und Bibliotheken sind eine ausgezeichnete Wahl zu dabei helfen, die besten zu erhalten Performance auf Intel® und Nicht-Intel Mikroprozessoren Intel empfiehlt, Sie bewerten andere Compiler und Bibliotheken, die am besten erfüllen, um zu bestimmen Deine Anforderungen. Wir hoffen, zu gewinnen Ihr Unternehmen durch das Angebot bemüht, beste Leistung aller Compiler oder Bibliothek; Bitte lassen Sie uns wissen, wenn Sie finden wir es nicht tun

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top