Da mir die Klothoiden kürzlich um die Ohren geflogen sind, habe ich mir überlegt, spaßeshalber softwaregetriebene Doubles zu programmieren. Das nimmt auch seinen Weg, aber mit dem Wissen, dass es nur spaßeshalber (weil saulahm) ist, kam auch die Überlegung wie man es richtig(er) machen könnte.
Und da fielen mir die AVX-Erweiterung auf: 256 Bit breite Register bei modernen Prozessoren, bzw. SSE mit 128 Bit breiten Registern.
Derartiges habe ich aber noch nicht angefasst.
Daher die Frage, ob hier schon Erkenntisse in der Richtung sind, ganz blöd: Wie spricht man diese Register aus C/C++ an und was muss man am Compiler ändern? Die Architektur verändert sich... war das schon alles? Ist dann ein Double schon 256 Bit breit?
Ich fand was zu __float128 und eine Boost-Lib.
Hat jemand mit den Prozessorerweiterungen schonmal gespielt?
AVX/SSE-Projekt
- Xin
- nur zu Besuch hier
- Beiträge: 8861
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
AVX/SSE-Projekt
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: AVX/SSE-Projekt
Sorry, komplett untergegangen. Hier findest du intrinsische Funktionen für Intel CPU-Erweiterungen:
https://software.intel.com/sites/landin ... sicsGuide/
Wobei diese auf Parallelität ausgelegt sind, heißt grundsätzlich für dein Vorhaben eher unpraktisch.
https://software.intel.com/sites/landin ... sicsGuide/
Wobei diese auf Parallelität ausgelegt sind, heißt grundsätzlich für dein Vorhaben eher unpraktisch.
Re: AVX/SSE-Projekt
Mit gcc: compilieren mit -O3 und -mavx2/-mavx512xx und/oder -msse2.Xin hat geschrieben: Daher die Frage, ob hier schon Erkenntisse in der Richtung sind, ganz blöd: Wie spricht man diese Register aus C/C++ an und was muss man am Compiler ändern?
(siehe gcc --help=target).
Wenn man die Register unbedingt selber handhaben will, hat gcc auch dafür builtins: https://gcc.gnu.org/onlinedocs/gcc-4.8. ... tions.html
It's as simple as that. And remember, Beethoven wrote his first symphony in C.