Bonjour,
je suis en train d'essayer d'utiliser le jeu d'instruction AVX pour des fonctions de calcul d'une classe vecteur. Mais j'ai quelque difficulté, après de nombreuses recherches, je suis parvenu à cela :
crd étant un attribut de la classe défini comme cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 vecteur3& vecteur3::operator+=(vecteur3 const& A) { #if __AVX__ __m256d a = _mm256_load_pd(crd); __m256d b = _mm256_load_pd(A.crd); a = _mm256_add_pd(a, b); _mm256_store_pd(crd, a); #else crd[0] += A.crd[0]; crd[1] += A.crd[1]; crd[2] += A.crd[2]; #endif return *this; }
Mon problème est un segmentation fault sur la ligne de l'addition. Je ne comprend pas pourquoi. Est on obligé de fournir 4 double pour que cela fonctionne ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 double crd[3];
Merci d'avance pour vos réponse.
Partager