Frage

Ich habe x64-Konfiguration zu meinem C ++ Projekt hinzugefügt 64-Bit-Version von meiner app zu kompilieren. Alles sieht gut aus, aber Compiler gibt die folgende Warnung:

`cl : Command line warning D9002 : ignoring unknown option '/arch:SSE2'`

Gibt es SSE2 Optimierung wirklich nicht für 64-Bit-Projekte zur Verfügung?

War es hilfreich?

Lösung

Es scheint, alle 64-Bit-Prozessoren sein muss SSE2. Da immer Compiler-Option standardmäßig eingeschaltet keine Notwendigkeit, sie manuell zu schalten.

Wikipedia :

  

SSE-Befehle : Die ursprüngliche AMD64-Architektur von Intel SSE und SSE2 als Kern Anweisungen angenommen. SSE3 Befehle wurden im April 2005 hinzugefügt SSE2 ersetzt die IEEE des x87-Befehlssatzes 80-Bit-Genauigkeit, mit der Wahl entweder IEEE 32-Bit- oder 64-Bit-Fließkommamathematik. Dies bietet Gleitkommaoperationen kompatibel mit vielen anderen modernen CPUs. Die SSE und SSE2 Anweisungen auch auf das acht neue XMM-Register für den Betrieb erweitert. SSE und SSE2 ist in 32-Bit-Modus in modernen x86-Prozessoren zur Verfügung; jedoch, wenn sie in 32-Bit-Programmen gewohnt sind, arbeiten diese Programme nur auf Systemen mit Prozessoren, die diese Funktion haben. Dies ist nicht ein Problem in 64-Bit-Programme, als alle AMD64-Prozessoren haben SSE und SSE2, so mit SSE und SSE2 Instruktionen statt x87 Anweisungen verringert nicht die Anzahl der Computer, auf denen x64-Programme ausgeführt werden können . SSE und SSE2 ist als im allgemeinen schneller, und die meisten Funktionen der traditionellen x87 Anweisungen duplizieren, MMX und 3DNow!.

Andere Tipps

Ich verstehe die Warnung erscheint, wenn Sie SSE2 wählen, althought seine immer noch albern. Allerdings bekommen Sie immer noch die Warnung, wenn Sie wählen / arch: AVX. Ich bin sicher, es wird mit SP1 repariert. Es ist nur ein bisschen spammy und ein Ärgernis.

Die Compiler-Option / arch: AVX wird nicht damit auf alte CPUs arbeiten müssen Sie Ihre CPU unterstützt gewährleisten. Ich lief in diese Probleme, wenn ich hatte das 1,12 tensorflow Paket für meine alte Xeon CPU neu zu kompilieren, die nicht unterstützt werden.

Ich habe auf / arch geschaltet: SSE2 (wie Kirill) geschrieben oben, aber genau das gleiche Problem bekommen. Der Microsoft-Compiler gibt eine Warnung aus (INFO), dass diese Option ignoriert.

Command line warning D9002 : ignoring unknown option '/arch:SSE2'

Von der Microsoft-Dokumentation meines Verständnis ist, dass diese Option auf x86 nur verfügbar ist, und das macht keinen Sinn für mich entweder machen.

Allerdings auf MSDN sagt:

/arch:SSE and /arch:SSE2 are only available when you compile for the x86 platform.

und SSE sowieso auf x64 verwendet wird. Daher habe ich nur die Möglichkeit, jetzt entfernt werden.

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