Alignment-Probleme mit SIMD-Bibliotheken
-
Hallo,
wir haben ja seit C++11 glücklicherweise
alignofundalignas. Aber meiner Einsicht nach bestehen immer noch viel zu viele Probleme diesbezüglich und es liegt einzig am C++-Standard. Für Leute die mit der Problematik nicht vertraut sind: Link.Was IMO geändert werden müsste:
- Klassen, bei denen das Alignment mitalignasspezifiziert wird, sollten standardmässig dennew- undnew[]-Operator überladen, damit dieser dem Alignment auch gerecht wird.
- Klassen, die aligned Klassen als Basis oder Member haben, sollen selbst wiederum diesem Alignment gerecht werden (implizit!).std::allocatorsoll das vorausgesetzte Alignment des Typs berücksichtigen.
- Call-By-Value soll das vorausgesetzte Alignment des Typs berücksichtigen.
Wieso hat das Committee Alignment als Sprachelement eingeführt, aber nicht an z.B. Heap-Allocations gedacht?
-
raaaant!! schrieb:
- Klassen, die aligned Klassen als Basis oder Member haben, sollen selbst wiederum diesem Alignment gerecht werden (implizit!).
http://coliru.stacked-crooked.com/a/e1c3109c60f40c91
Übersehe ich da jetzt was?std::allocatorsoll das vorausgesetzte Alignment des Typs berücksichtigen.
Das ist in deinem ersten Stichpunkt inbegriffen.
Wieso hat das Committee Alignment als Sprachelement eingeführt, aber nicht an z.B. Heap-Allocations gedacht?
Feature Entwicklung ist i.d.R. ein iterativer Prozess.
-
Arcoth schrieb:
Übersehe ich da jetzt was?
Nein. Mein Fehler, sorry. Worauf ich eigentlich anspielen wollte: Selbst wenn man
operator newund Konsorten für seine KlasseAüberlädt, dann muss man dasselbe tun für alle vonAabgeleiteten Klassen und alle, dieAals Member haben.Arcoth schrieb:
std::allocatorsoll das vorausgesetzte Alignment des Typs berücksichtigen.
Das ist in deinem ersten Stichpunkt inbegriffen.
Nein, denn
std::allocator::allocateignoriert den überladenennew-Operator: http://eel.is/c++draft/default.allocator
Beispiel: http://coliru.stacked-crooked.com/a/b63bce98bbc71b18