Ich lerne openMP und habe mit meinem begrenzten Wissen meinen Code paralliert. Ich versuche, diesen Code mit OpenMP-Vektorisierungstechniken zu verbessern. Aber während ich durch relevante Lesestoffe ging (link), fand ich, dass es nicht möglich ist, Vektorisierungsoperationen auf langen doppelten Datentypen durchzuführen. Kann jemand Informationen darüber geben, warum dies so ist, und eine andere Lösung als die Verringerung der Präzision vorschlagen?Sind OpenMP-Vektorisierungsoperationen am langen doppelten Datentyp nicht möglich?
Der Inhalt in der Verbindung lautet wie folgt: "Vermeiden Sie Operationen, die nicht in SIMD-Hardware unterstützt werden. Arithmetik mit (80 Bit) langen Doppelungen unter Linux, und der Restoperator"% "sind Beispiele für Operationen, die in SIMD-Hardware nicht unterstützt werden. "
PS Ich benutze den INTEL C++ Compiler 16.0.2, den INTEL XEON Processor mit 128 Bit Vektorregister und Linux. Meine Datentypen sind meistens lang doppelt.
Ich denke, du verwechselst Parallelismus mit Vektor intrinsisch. Ich vermute, dass es möglich ist, diese Operationen zu parallelisieren, auch wenn sie nicht der ISA von Intel zugeordnet sind. Wie auch immer, Sie müssen ein komplettes, lauffähiges Beispiel veröffentlichen. – Mikhail
Da die x86-SIMD-Hardware (SSE über AVX512) nur 32-Bit- und 64-Bit-Float-Operationen unterstützt und keine Integer-Divisionsanweisungen hat. –
Warum verwenden Sie Long Double? –