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 :

stockage matriciel et accès mémoire optimal


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Par défaut stockage matriciel et accès mémoire optimal
    Bonjour,

    j'aimerais stocker une matrice carré dense de taille très importante et pouvoir avoir accès aux valeurs de la matrice avec la meilleure performance possible. Actuellement j'utilise un stockage par représentation physique classique avec l'operator() ( M(i,j) ). Sauf que l'accès aux valeurs de la matrice est vraiment très lent .
    Quelqu'un aurait une idée?
    Merci.

    Ste.

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut, et bienvenue sur le forum.

    Je ne doute absolument pas que beaucoup de gens ont de très nombreuses idées, dont certaines n'ont sans doute pas leur place sur ce forum

    Seulement, pour ton problème particulier, je crains fort que personne ne puisse en avoir une réellement efficace...

    Le fait est que, quand tu viens demander de l'aide, il est important d'aider le plus possible les gens à t'aider...

    En effet, plus tu pourra nous expliquer clairement le problème auquel tu sera confronté ou, si tu arrive à nous donner un code minimal compilable qui permet de reproduire le problème auquel tu est confronté, plus tu auras une chance de recevoir une aide efficace et adaptée à ton problème...

    Avec un peu de code pour nous permettre de nous rendre compte, je ne doute absolument pas que quelqu'un sera en mesure de t'aider
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Par défaut
    Salut et merci pour ta réponse.

    Je comprends ta remarque et tu as tout à fait raison.

    En fait je travaille dans une librairie C++ de calcul scientifique ( LibMesh si jamais tu connais..) dans laquelle plusieurs classes pour la gestion des matrices sont implémentées. Je ne peux donc pas vraiment donner de bout de code compilable et en fait je n'ai ni de problème de compilation ni d'exécution mais de performance.
    Voici ce qui se passe en gros.
    Pour des raisons de calcul, j'ai besoin d'avoir accès à un certain nombre de valeurs discrètes. Pour cela je stocke ces valeurs dans une matrice pleine de taille (n,n) en faisant appel à une classe "DenseMatrix". Cette classe est basée sur une représentation physique matricielle avec accès aux éléments via l'operator(). Le problème est que plus n est grand et plus ma résolution est ralentie en raison de l'accès aux valeurs dans la matrice. Je pense que c'est tout à fait normal mais je me demande juste s'il existe un moyen technique pour optimiser cette performance.
    Je sais que ma question est assez générale mais je ne sais pas trop comment donner plus de détails.

    Je suis preneur d'idées diverses et variées à ce sujet.

    Merci.

    Ste

  4. #4
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    n est grand comment? Sinon t'a essayé d'autres bibliothèques spécialisé dans les matrices? blitz++ pour ne cité qu'elle...

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Par défaut
    n vaut 100000.
    Avec n=100, mon temps de résolution n'est pas altérée donc ca va. Mais quand je passe à n=1000, ca commence à vraiment ramer. Pour donner un ordre d'idée, avec n=100 j'ai un temps CPU de 15 secondes. Avec n=1000, je passe à 2500 secondes.
    Je vais me renseigner sur blitz++..

Discussions similaires

  1. Stockage de données en mémoire
    Par david71 dans le forum Langage
    Réponses: 3
    Dernier message: 04/09/2007, 15h20
  2. Probleme d'acces mémoire des méthodes
    Par alexandre7g dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 03/08/2007, 10h11
  3. Accés mémoire sur liste de classe
    Par sacados1 dans le forum C++
    Réponses: 4
    Dernier message: 31/03/2007, 20h42
  4. Violation accès mémoire
    Par BenjaminLustrement dans le forum C
    Réponses: 9
    Dernier message: 09/06/2006, 10h07
  5. Dilemme : stockage de données en mémoire
    Par The Dark Lewis dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/09/2005, 12h28

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