Für den Moment sind die von std :: datapar :: simd und std :: experimental :: simd bereitgestellten Funktionen etwas begrenzt, insbesondere wenn es um Element-Mischung oder nicht triviale Lastmuster geht. Sagen wir, ich habe Folgendes: < /p>
std::array a = {
0, 100, 200, 300, 400, 500, 600, 700,
800, 900, 1000, 1100, 1200, 1300, 1400, 1500
};
std::array vindex_data = {3, 7, 11, 15};
unsigned long long int* base_addr = a.data();
std::experimental::fixed_size_simd vindex(
vindex_data.data(),
std::experimental::element_aligned
);
int scale = sizeof(unsigned long long int);
std::experimental::fixed_size_simd v;
/* And then I would like to load v using _mm256_i32gather_epi64*/
v = _mm256_i32gather_epi64(base_addr, vindex, scale); // This will not compile
Gibt es eine nicht standardmäßige Art und Weise, die auf GCC und clang funktioniert, um Intrinsics-SIMD-Funktionen auf std :: dataPar :: Simd und std :: experiment:>
Für den Moment sind die von std :: datapar :: simd und std :: experimental :: simd bereitgestellten Funktionen etwas begrenzt, insbesondere wenn es um Element-Mischung oder nicht triviale Lastmuster geht. Sagen wir, ich habe Folgendes: < /p> [code]std::array a = { 0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500 }; std::array vindex_data = {3, 7, 11, 15}; unsigned long long int* base_addr = a.data(); std::experimental::fixed_size_simd vindex( vindex_data.data(), std::experimental::element_aligned ); int scale = sizeof(unsigned long long int); std::experimental::fixed_size_simd v; /* And then I would like to load v using _mm256_i32gather_epi64*/ v = _mm256_i32gather_epi64(base_addr, vindex, scale); // This will not compile [/code] Gibt es eine nicht standardmäßige Art und Weise, die auf GCC und clang funktioniert, um Intrinsics-SIMD-Funktionen auf std :: dataPar :: Simd und std :: experiment:>
Neu in Simd Bitte gehen Sie mir leicht, wenn ich Fehler gemacht habe. Mein Prozessor ist der 11. Gen Intel (R) Core (TM) I7-11370H @ 3.30GHz
Bevor Sie AXV verwenden bool supportsAVX()
{
int cpuInfo...
Unter Bezugnahme auf diesen Link habe ich versucht, die libmvec-Intrinsics in einen vorhandenen C++-Code zu integrieren.
Natürlich musste ich dazu die Forward-Deklaration in
extern C __m128...
Während ich normalerweise meine eigenen Klassen verwende, die vor stl erstellt wurden. Ich habe beschlossen, diese STL -Objekte und Funktionen in einer eigenständigen Bibliothek zu verwenden, die...
Ich möchte denselben Template -Algorithmus auf std :: vectors anwenden, die Objekte mit einem Typ t und (unterschiedlich) std :: vector s enthalten, die std :: shared_ptr S -Objekte enthält. Im std...