IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Jeu d'instruction AVX


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Jeu d'instruction AVX
    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 :

    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;
    }
    crd étant un attribut de la classe défini comme cela :

    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 ?

    Merci d'avance pour vos réponse.

  2. #2
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 045
    Points : 11 368
    Points
    11 368
    Billets dans le blog
    10
    Par défaut
    Ben oui, ce sont des fonctions de calcul sur 256 bits, il faut donc des données sur ... 256 bits.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    J'ai essayé en passant sur un tableau de 4 double, donc 256 bits, et j'ai toujours un segmentation fault au même endroit, de plus cette solution ne me convient pas, cela revient un stocker un double de plus, donc quand j'ai une dizaine de millions d'objet, cela revient à un consommation de mémoire nettement plus élevé pour rien.

    N'y a t'il pas moyen de faire les calculs sur 192 bits ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 059
    Points : 12 095
    Points
    12 095
    Par défaut
    Ne faites pas d'optimisation anticipée.
    Très souvent, faire plus de chose est plus rapide qu'en faire moins.

    N'y a t'il pas moyen de faire les calculs sur 192 bits ? .
    Chassez pas le Dahu.

  5. #5
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Citation Envoyé par Dranen Voir le message
    J'ai essayé en passant sur un tableau de 4 double, donc 256 bits, et j'ai toujours un segmentation fault au même endroit, de plus cette solution ne me convient pas, cela revient un stocker un double de plus, donc quand j'ai une dizaine de millions d'objet, cela revient à un consommation de mémoire nettement plus élevé pour rien.

    N'y a t'il pas moyen de faire les calculs sur 192 bits ?
    Tes 4 doubles vont être copiés dans un registre spécifique. Tu peux très bien en mettre un à 0 au moment de la copie dans le registre. Après, il faut voir en fonction du contexte si c’est plus coûteux que de stocker tout le temps le double surnuméraire (j’aurais tendance à penser que c’est plus rentable de stocker tout le temps sur 256 bits, mais seule la mesure pourra le dire).

    Cela dit, quel est le but de la démarche ? C’est juste de l’apprentissage, ou c’est pour un besoin réel ?

Discussions similaires

  1. Exercice sur le jeu d'instructions Assembleur
    Par azedsqfb dans le forum x86 16-bits
    Réponses: 4
    Dernier message: 12/09/2007, 12h23
  2. [Cours avancé] Le décodage du jeu d'instruction x86 / x64
    Par Alcatîz dans le forum x86 32-bits / 64-bits
    Réponses: 0
    Dernier message: 12/04/2007, 13h43
  3. Jeu d'instructions et petites questions sur l'asm
    Par SimpleMe dans le forum Assembleur
    Réponses: 6
    Dernier message: 16/03/2007, 19h42
  4. Recherche jeu d'instructions 386
    Par lionenforce dans le forum Assembleur
    Réponses: 6
    Dernier message: 24/10/2006, 16h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo